ansible架构
ansible是一个IT自动化配置管理工具。能够实现安装 配置 管理 多个主机上的服务
ansible只能在python2.7环境下执行 系统默认的python2.7不能升级为python3.否则ansible的模块不能正常执行
控制端和受控端主机上都必须安装python2.7
ansible的运行原理是把指定的python模块通过ssh协议从主控端拷贝到受控端执行
ansible是一个无中心节点的架构 主节点和从节点没有心跳连接检查 主节点上只保存了一个受控端的主机清单 只有在执行ansible命令的时候才会通过ssh协议对被控端进行连接
即使主节点宕机,只要把主机清单拷贝到其他主机同时新主节点和被控节点能够进行ssh连接即可正常运行
ssh传输协议
ssh协议是基于tcp连接的协议
tcp 保存模块文件传输的可靠性
ssh协议保证传输数据的安全性
ansible术语解释
ansible inventory 主机清单 主机清单可以是静态的文件 也可以是动态生成的json数据
ansible Ad-hoc ansible的模块
ansible playbook ansible剧本
ansible使用公钥认证授权
主控端的public SSH key必须在这些受控端系统中的``authorized_keys``中
必须要把主控端生成的公钥分发到各个受控端节点
ansible主机清单
静态主机清单方式
192.168.1.1
192.168.1.1:9200
jumper ansible_ssh_port=5555 ansible_ssh_host=192.168.1.50 通过"jumper"别名,会连接192.168.1.50:5555
www[01:50].example.com
db-[a:f].example.com
动态主机清单方式
使用配置管理系统经常有一种需求,可能要在其他的软件系统中保存自己的inventory配置信息
ansible -i /home/admin/hosts -m ping webserver
-i 指定本地的hosts主机清单文件
如果不使用 -i 指定hosts 默认会去用 /etc/ansible/hosts清单文件
[webserver]
web01 192.168.1.1
mysql 192.168.1.2
ansible以别名的方式来对受控端进行区分,IP地址太多的时候分不清各个IP的用途
ansible正则匹配
在Ansible中,Patterns 是指我们怎样确定主控端机器和哪些受控端主机进行交互
ansible webservers -m service -a "name=httpd state=restarted"
ansible <pattern_goes_here> -m <module_name> -a <arguments>
ansible webservers:dbservers:&staging:!phoenix -m service -a "name=httpd state=restarted"
ansible-playbook site.yml --limit datacenter2
ansible取消ssh认证