天天看点

Ansible-自动化运维工具介绍Ansible基础介绍Ansible架构介绍Ansible调试环境搭建(Intellij IDE)Ansible使用小技巧Ansible二次开发小技巧

Ansible基础介绍

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

Ansible的特点

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

Ansible架构介绍

Ansible-自动化运维工具介绍Ansible基础介绍Ansible架构介绍Ansible调试环境搭建(Intellij IDE)Ansible使用小技巧Ansible二次开发小技巧

-- 图片来源:

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二次开发小技巧