Ansible 学习笔记
最近因为需要管理很多台机器,而这些机器又需要频繁重新安装,实在受不了Puppet需要在每个客户机上都安装一遍,于是转头开始学些Ansible。根据这段时间的使用,这个确实是神器,唯一的感觉就是相见恨晚。
下面纪录一下最近的学习心得。
- Ansible是基于单客户端,多服务器端的模式。这可能是和Puppet等基于单服务器端,多客户端的最大不同。
- Ansible是用Python编写的,易于扩展,便于调试
- 下面以最常见的需要客户端和所有服务器建立ssh信任关系为例,看看ansible多么简单。首先建立hostfile添加所有要处理的机器,之后执行下面的命令
-
ansible all -h hostfile -m authorized_key -a "user=root key='{{ lookup('file', '/home/myname/.ssh/id_rsa.pub') }}' path=/root/.ssh/authorized_keys manage_dir=no" --ask-pass -c paramiko
这样就可以讲本机上myname这个用户的key添加到了所有机器root的信任列表里了。如果这些机器的root密码不一致,只需要执行多次,每次输入不同密码即可。当然authorized_key还有更多的玩法,不过这个最简单的例子就可以秒杀好多其它工具。
- 查看和所有机器的互通情况,如果可以以root操作的话,下面的命令就会返回pong来响应
-
ansible all -h hostfile -u root -m ping
- 查看所有机器的硬件和系统配置情况,会输出非常详细的列表
-
ansible all -h hostfile -u root -m setup