1.ansible:无主从无架构,开箱即用,用完即走
配置自动化场景的好处:提高效率,提高准确性,降低用工成本
ansible工作原理:模块,主机清单
2.ansible安装
2.1 安装epel-release yum源
[root@manager121 ~]# yum install epel-release -y
2.2 安装ansible
[root@manager121 ~]# yum install ansible -y
3.主机清单
3.1主机清单的作用
ansible controller 在对主机进行操作时,仅认主机清单中定义的主机列表,即从主机列表清单中读取到主机列表时,才可进行配置。
- 用于ansible controller配置主机时读取主机列表
- 实现主机分组
3.2主机清单定义方法
主机清单存储的位置:
[root@manager121 ~]# ls /etc/ansible/hosts
- 方法一
直接在主机清单文件里写入主机IP地址或者主机名(需要能够解析)
[root@manager121 ~]# vim /etc/ansible/hosts
192.168.0.13
#或
web1
- 方法二
在主机清单文件夹中添加主机分组,然后把主机IP或主机名写进去即可。
[root@manager121 ~]# vim /etc/ansible/hosts
[webgroup]
192.168.0.13
#或
[webgroup]
web1
4.ansible应用案例
4.1使用ansible ping模块实现测试主机互通性
-
场景:准备三台服务器,了解主机之间的连通性是否正确,使用ansible模块对主机之间的连通性进行测试。
-
步骤
1.实现多主机之间免密登。
#在ansible controller生成密钥 [root@manager121 ~]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -N '' #实现密钥同步 [root@manager121 ~]# ssh-copy-id 192.168.0.13
2.定义主机清单
[root@manager121 ~]# cat /etc/ansible/hosts 192.168.0.13
3.ping模块的使用
[root@manager121 ~]# ansible 192.168.0.13 -m ping 192.168.0.13 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" }
4.2 使用ansible cron模块实现配置多主机时间同步
-
场景:使用ansible cron模块对主机进行时间周期性同步。
-
步骤
1.选择时钟源服务器 阿里时钟源 time1.aliyun.com 微软时钟源 time .windows.com 2.cron模块应用
[root@manager121 ~]# ansible 192.168.0.13 -m cron -a 'name="test cron1" job="time1.aliyun.com" minute=0 hour=*/1' 192.168.0.13 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "envs": [], "jobs": [ "test cron1" ] } #在192.168.0.13主机查看计划任务 [root@sc-docker-2 ~]# crontab -l #Ansible: test cron1 0 */1 * * * time1.aliyun.com
4.3 使用ansible copy模块实现多主机配置文件同步
-
场景:使用ansible copy模块实现多主机本地域名解析文件同步。
-
步骤:
1.准备本地域名解析文件
[root@manager121 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.102 www.chenran.com 192.168.0.102 www.a.com 192.168.0.102 www.b.com 192.168.0.102 www.c.com 192.168.0.102 www.d.com 192.168.0.102 www.e.com 192.168.0.102 www.f.com
2.copy模块应用
[root@manager121 ~]# ansible 192.168.0.13 -m copy -a "src=/etc/hosts dest=/etc/hosts" 192.168.0.13 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "checksum": "374fd64f34a81cd6f4d8b7c5068999e25889e2bc", "dest": "/etc/hosts", "gid": 0, "group": "root", "md5sum": "253da76589e31aed995e07f70975bc05", "mode": "0644", "owner": "root", "secontext": "system_u:object_r:net_conf_t:s0", "size": 402, "src": "/root/.ansible/tmp/ansible-tmp-1616253663.8300848-110720-135714137613350/source", "state": "file", "uid": 0 } #远程主机验证 [root@sc-docker-2 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.102 www.chenran.com 192.168.0.102 www.a.com 192.168.0.102 www.b.com 192.168.0.102 www.c.com 192.168.0.102 www.d.com 192.168.0.102 www.e.com 192.168.0.102 www.f.com 192.168.80.10 manager10 192.168.80.11 node11 192.168.80.12 node12
总结于b站黑马程序员视频