Ansible基础介绍
我们在做系统运维时,很多时候需要SSH登陆到各个服务器进行各种系统和包的安装启动及状态检查等操作。这些过程很繁琐,而且操作的过程,结果及脚本代码很零散不好管理,容易造成一些不必要的问题。Ansible正好是满足了这个需求,把重复而繁琐的运维操作通过简洁易懂的YAML代码来描述和执行。
Ansible的特点
- 简洁易懂,功能丰富,扩展方便
- 只需在主控端安装,无需在被控端安装Agent, 大大简化了部署复杂性
- 默认使用SSH,不需要额外的安全框架
- YAML描述性语言,把部署过程体现为代码,从而可以把部署过程纳入代码的版本管理
Ansible架构介绍
-- 图片来源:https://geekflare.com/ansible-basics/
上图演示了如何通过Ansible对共有云或私有云的一堆机器进行运维操作。
模块介绍:
- 核心:最中间的是Ansible自动化执行引擎,接受用户输入,调度各个模块完成操作
- Inventory: 所有被控端的host的IP地址清单,可以按需进行分组归类
- Playbooks: 配置中心,定义操作的流程(play), 每一个play可以定义一系列顺序执行的task, 每个task定义具体执行的action
- module: action通过module封装,module通过SSH推送到被控端执行,执行后自动删除
- plugin: 插件是指在主控端执行的扩展模块,譬如logging, connection,数据转换等功能扩展插件
Ansible调试环境搭建(Intellij IDE)
- 下载最新代码:
$ git clone https://github.com/ansible/ansible.git --recursive - check out到较新的稳定版本,如2.9.6
$ git checkout v2.9.6 - 本地安装
$ source hacking/env-setup - 本地调试服务器
Ansible的操作是通过SSH连接和操作远程的机器,测试的时候不一定有合适的远程机器可供操作。比较简便的方式是让SSH连接本地机器(localhost, 127.0.0.1),这就需要生成一套SSH key,并把key放到.ssh/authorized_keys
$ ssh-keygen # 一路回车
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 导入Intellij project (IDE需要先安装python plugin)
- 将 ANSIBLE_ROOT/lib 目录 Mark Directory as -> Source Root, 在IDE执行时能成功import内部的package
- debug 执行
Ansible使用小技巧
TBD
Ansible二次开发小技巧
TBD