1、详细叙述ansible的工作原理
ansible是一个适用于中小型环境的自动化运维工具。主机总数在500台左右试用。超过500台不建议使用ansible,可以考虑Saltstack、Puppet等。
ansible作为一个管理控制主机的工具,他不需要在被管理的主机上安装插件或者代理软件。这一优点叫做agentless。他可以直接通过ssh服务来管理其他的主机,因此提前把控制主机的pub key导入到所有被控制主机很有必要的。但是同时agentless也是一个缺点,不适合管理大型的环境,通过ssh管理的效率低,这时候就需要其他的有agent的管理软件了。
ansible命令执行过程
- 加载自己的配置文件 默认/etc/ansible/ansible.cfg
- 加载自己对应的模块文件,如command
- 通过ansible将模块或命令生成对应的临时py文件,并将该 文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
- 给文件+x执行
- 执行并返回结果
- 删除临时py文件,sleep 0退出
执行状态:
- 绿色:执行成功并且不需要做改变的操作
- 黄色:执行成功并且对目标主机做变更
- 红色:执行失败
2、使用ansible在多台机器上添加用户
前提条件:
- 安装并且配置好ansible
yum install epel-release
yum install ansible
vim /etc/ansible/hosts 加入主机清单,默认端口号为22,端口有修改需要写明端口号
vim /etc/ansible/ansible.cfg 修改ansible配置文件[srvs] 192.168.38.100 142.11.227.114:80 [kvm] 142.11.227.114:80
建议启用日志功能 log_path = /var/log/ansible.log 取消首次连接被控制服务器验证 host_key_checking = False 修改默认模块为shell 避免不支持某些命令,方便今后的操作不用输入-m shell module_name = shell
- 控制主机的pub key已经导入到各个被控制主机的/root/.ssh/authorized_keys文件中
可参考此脚本
开始添加多用户
[root@centos7 .ssh]#ansible all -m user -a 'name=test001 comment="test user" shell="/sbin/nologin"' 192.168.38.100 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"comment": "test user",
"create_home": true,
"group": 11212,
"home": "/home/test001",
"name": "test001",
"shell": "/sbin/nologin",
"state": "present",
"system": false,
"uid": 11212
}
142.11.227.114 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"comment": "test user",
"create_home": true,
"group": 11212,
"home": "/home/test001",
"name": "test001",
"shell": "/sbin/nologin",
"state": "present",
"system