Ansible-自动化运维工具介绍

  1. 云栖社区>
  2. 博客>
  3. 正文

Ansible-自动化运维工具介绍

俊哥的DevOps 2020-04-04 11:01:52 浏览507
展开阅读全文

Ansible基础介绍

我们在做系统运维时,很多时候需要SSH登陆到各个服务器进行各种系统和包的安装启动及状态检查等操作。这些过程很繁琐,而且操作的过程,结果及脚本代码很零散不好管理,容易造成一些不必要的问题。Ansible正好是满足了这个需求,把重复而繁琐的运维操作通过简洁易懂的YAML代码来描述和执行。

Ansible的特点

  1. 简洁易懂,功能丰富,扩展方便
  2. 只需在主控端安装,无需在被控端安装Agent, 大大简化了部署复杂性
  3. 默认使用SSH,不需要额外的安全框架
  4. YAML描述性语言,把部署过程体现为代码,从而可以把部署过程纳入代码的版本管理

Ansible架构介绍

image
-- 图片来源:https://geekflare.com/ansible-basics/

上图演示了如何通过Ansible对共有云或私有云的一堆机器进行运维操作。

模块介绍:

  1. 核心:最中间的是Ansible自动化执行引擎,接受用户输入,调度各个模块完成操作
  2. Inventory: 所有被控端的host的IP地址清单,可以按需进行分组归类
  3. Playbooks: 配置中心,定义操作的流程(play), 每一个play可以定义一系列顺序执行的task, 每个task定义具体执行的action
  4. module: action通过module封装,module通过SSH推送到被控端执行,执行后自动删除
  5. plugin: 插件是指在主控端执行的扩展模块,譬如logging, connection,数据转换等功能扩展插件

Ansible调试环境搭建(Intellij IDE)

  1. 下载最新代码:
    $ git clone https://github.com/ansible/ansible.git --recursive
  2. check out到较新的稳定版本,如2.9.6
    $ git checkout v2.9.6
  3. 本地安装
    $ source hacking/env-setup
  4. 本地调试服务器
    Ansible的操作是通过SSH连接和操作远程的机器,测试的时候不一定有合适的远程机器可供操作。比较简便的方式是让SSH连接本地机器(localhost, 127.0.0.1),这就需要生成一套SSH key,并把key放到.ssh/authorized_keys
$ ssh-keygen # 一路回车
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  1. 导入Intellij project (IDE需要先安装python plugin)
  2. 将 ANSIBLE_ROOT/lib 目录 Mark Directory as -> Source Root, 在IDE执行时能成功import内部的package
  3. debug 执行

Ansible使用小技巧

TBD

Ansible二次开发小技巧

TBD

网友评论

作者关闭了评论
俊哥的DevOps
+ 关注