ansible深入理解和操作——01 (ansible原理,安

  

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深入理解和操作——01 (ansible原理,安

  
 <代码> Ansible: Ansible核心程序。
  HostInventory:记录由Ansible管理的主机信息,包括端口,密码、ip等。
  剧本:“剧”本YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
  CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。
  CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
  ConnectionPlugins:连接插件,Ansible和主机通信使用 
  

ansible任务执行模式

  

Ansible系统由控制主机对被管节点的操作方式可分为两类,即特定的和剧本:

  
 <代码>特别模式(点对点模式)
  使用单个模块,支持批量执行单条命令.ad-hoc命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话壳。
  剧本模式(剧本模式)
  是Ansible主要管理方式,也是Ansible功能强大的关键所在.playbook通过多个任务集合完成一类功能,如Web服务的安装部署,数据库服务器的批量备份等。可以简单地把剧本理解为通过组合多条特别操作的配置文件。 
  

ansible执行流程

  

 ansible深入理解和操作——01 (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 CST 

ansible深入理解和操作——01 (ansible原理,安