1. 介绍Ansible
Ansible是自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,Ansible只是提供一种框架。Ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。Ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。
1.1 Ansible特点
- 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
- 默认使用 SSH(Secure Shell)协议对设备进行管理。
- 支持跨平台:Ansible提供linux,windows,UNIX和网络设备的无代理支持,适用于物理,虚拟,容器等。
- 配置简单、功能强大、扩展性强。
- 简单易读,基于 YAML 文本编写,易于阅读,非专业的开发人员也可以编写。
- 通过 Playbooks 来定制强大的配置、状态管理。
1.2 架构图
connection plugins:连接插件。负责和被监控端实现通信; host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; Core Modules:核心模块,主要操作是通过调用核心模块来完成管理任务; custom models: ansible自带模块不足以满足工作需要时,用户添加扩展模块; Plugins:插件。完成记录日志邮件等功能; playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
1.2.1 Ansible命令执行
读取ansible.cfg配置文件
通过规则过滤Host inventory中定义的主机列表
加载task对应的模块文件
通过ansible core将模块或者命令写成Python脚本文件
将临时脚本文件传输至目标主机
对应执行用户的家目录".ansible/tmp/xxx/xxx.py"文件
给文件加执行权限
删除文件并退出
2. 安装Ansible
2.1 控制节点
Ansible可以运行在任何机器上,但是对管理机有一定要求。管理机应安装Python 2(2.7)或Python 3(3.5或更高版本),另外,管理机不支持Windows控制节点。
2.2 受控主机
Ansible的一大优点是受管主机不需要安装特殊代理。Ansible控制节点使用标准的网络协议连接受管主机,从而确保系统处于指定的状态。
受管主机可能要满足一些要求,具体取决于控制节点连接它们的方式以及它们要运行的模块。
2.3 安装
安装一个epel-release包,然后再安装ansible
[root@133 ~]
[root@133 ~]
安装完成
[root@133 ~]
ansible 2.9.23
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Dec 5 2019, 15:45:45) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
2.3 实例
//创建一个名叫xx的用户
[root@133 ~]
localhost | SUCCESS => {
"append": false,
"changed": false,
"comment": "xx",
"group": 1000,
"home": "/home/xx",
"move_home": false,
"name": "xx",
"shell": "/bin/bash",
"state": "present",
"uid": 1000
}
|