ansible是什么?
.ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(傀儡,cfengine,厨师,func,织物)的优点,实现了批量系统配置,批量程序部署,批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
引用>
(1)连接插件连接插件:负责和被监控端实现通信;
(2),主机库存:指定操作的主机,是一个配置文件里面定义监控的主机;
(3),各种模块核心模块,命令模块,自定义模块;
(4),借助于插件完成记录日志邮件等功能,
(5),剧本:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。ansible特性
<代码> 1。部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作; 2 .默认使用SSH协议对设备进行管理; 3 .有大量常规运维操作模块,可实现日常绝大部分操作; 4 .配置简单,功能强大,扩展性强; 5 .支持API及自定义模块,可通过Python轻松扩展; 6。通过剧本来定制强大的配置,状态管理; 7 .轻量级,无需在客户端安装代理,更新时,只需在操作机上进行一次更新即可; 8 .幂等性,一个任务之行1遍或n遍效果一样,不因重复执行出现情况代码>Ansible架构和工作原理
<代码> Ansible: Ansible核心程序。 HostInventory:记录由Ansible管理的主机信息,包括端口,密码、ip等。 剧本:“剧”本YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。 CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。 CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。 ConnectionPlugins:连接插件,Ansible和主机通信使用代码>ansible任务执行模式
Ansible系统由控制主机对被管节点的操作方式可分为两类,即特定的和剧本:
<代码>特别模式(点对点模式) 使用单个模块,支持批量执行单条命令.ad-hoc命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话壳。 剧本模式(剧本模式) 是Ansible主要管理方式,也是Ansible功能强大的关键所在.playbook通过多个任务集合完成一类功能,如Web服务的安装部署,数据库服务器的批量备份等。可以简单地把剧本理解为通过组合多条特别操作的配置文件。代码>ansible执行流程
<强>简单理解就是Ansible在运行时,首先读取Ansible。cfg中的配置,根据规则获取库存中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。强>
引用>ansible命令执行过程
1。加载自己的配置文件,默认/etc/ansible/ansible.cfg;
引用>
2。查找对应的主机配置文件,找到要执行的主机或者组;
3。加载自己对应的模块文件,如命令;
4。通过ansible将模块或命令生成对应的临时py文件(python脚本),并将该文件传输至远程服务器;
5。对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
6。给文件+ x执行权限;
7。执行并返回结果;
8。删除临时py文件,睡眠0退出;市场上常用的三种自动化编排工具
Ansible:基于ssh协议不需要代理,适合中小型应用场景
引用>
Saltstack:需要代理代理软件(执行效率更高)
木偶:ruby,功能强大,配置复杂,适合超大型环境ansible环境部署
主控端端:192.168.136.167
引用>
被控端01:192.168.136.168
被控端02:192.168.136.185<代码> #三台主机都关闭防火墙 (root@localhost ~) # systemctl firewalld.service停止 (root@localhost ~) # setenforce 0 #主控端安装ansible yum安装- y epel-release//安装epel源 yum安装ansible - y ansible——版本//查看ansible版本 ansible 2.9.3 配置文件=/etc/ansible/ansible.cfg 配置模块搜索路径=[u '/根/nsible/插件/模块”,你“/usr/share/ansible/插件/模块的)=/usr/lib/python2.7/site-packages/ansible ansible python模块位置 可执行文件位置=/usr/bin/ansible python version=2.7.5(默认情况下,2017年8月4日,00:39:18)[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] yum安装树- y 树/etc/ansible///树状结构展示文件夹/etc/ansible/├──ansible。cfg # ansible的配置文件 ├──主机# ansible的主仓库,用于存储需要管理的远程主机的相关信息 └──角色# cd/etc/ansible//vim主机配置主机清单 (网络服务器) 192.168.136.168 (mysql) 192.168.136.185 #推送公钥 ssh - keygen - t rsa root@localhost ~ # ssh - keygen - t rsa 生成公钥/私rsa密钥对。 输入文件中保存的关键(/root/. ssh/idrsa): #回车 创建目录/root/. ssh。 没有密码输入密码(空):#输入密码 再次输入相同的密码: 你一直保存在/root/.ssh/idrsa.识别 你的公钥保存在/root/.ssh/idrsa.pub. 指纹的关键是: SHA256: QnRuJjR10Jy6HuyQxQz3ccWML8iHCdQ1HZx5ba57Ak0 root@localhost.localdomain 的randomart形象的关键是: + - - - - - - [RSA 2048] - - - - - + | | + o==.ooBo + | o。+ o。o。B + | | o=+=? | |。+=o E。| | + s。+。| | o。+。o | | +。| | | o o | |阿 (SHA256) + - - - - - - - - - - - + #公钥推给对方主机 ssh-copy-id root@192.168.136.168 ssh-copy-id root@192.168.136.185//配置密钥对验证 #查看被控端两台主机的时间 (root@localhost ~) # ansible 192.168.136.168 - m命令——“日期” 输入密码键“/root/. ssh/idrsa”: 192.168.136.168 | |改变rc=0祝辞祝辞 2020年2月9日09:02:44 CST (root@localhost ~) # ansible mysql - m命令——“日期” 输入密码键“/root/. ssh/idrsa”: 192.168.136.185 | |改变rc=0祝辞祝辞 2020年2月9日09:03:11 CST #免交户 (root@localhost ~) # ssh-agent bash # ssh代理 (root@localhost ~) # ssh-add #添加密码 (root@localhost ~) # ansible网络服务器- m命令——“日期” 192.168.136.168 | |改变rc=0祝辞祝辞 太阳2020年2月9日09:05:08 CSTansible深入理解和操作——01 (ansible原理,安