下面的全部实验是在CentOS6.7X86_64上实验通过。


1、配置epel源

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

2、安装ansible

yum install ansible


3、配置SSH免密码登陆

ssh-keygen -t rsa                                   # 生成密钥对
cat .ssh/id_rsa.pub >>.ssh/authorized_keys          # 将公钥导入本机
chmod 600  .ssh/authorized_keys                     # 安全起见,设置权限为600
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.2.12    # 将该公钥导入其他主机


4、定义主机组

编辑/etc/ansible/hosts ,注释掉全部内容,改成自己的节点信息,下面的这些的是符合要求的写法:

[webserver]
172.16.20.72
172.16.20.73

[IDC]
172.16.9.33:63222
jumper ansible_ssh_port=64222 ansible_ssh_host=172.16.9.34

 

5、简单测试

ansible webserver -m command -a 'uptime'
ansible webserver -m setup           # 查看远程主机的基本信息
ansible webserver -m ping            # 测试远程主机是否在线

命令格式:ansible 主机组 -m command -a '命令'



补充:

网上大部分教程都是出于演示,简单的配置了SSH免密码的密钥登录法【上面笔记的第三步】,这样存在一个问题:假如ansible控制端出问题了,被***,则全部节点都存在风险。


因此出于安全考虑,建议使用带密码的密钥登陆方式。配置如下:

mkdir /etc/ansible/ssh_keys
ssh-keygen -t rsa -f /etc/ansible/ssh_keys/node2.key  # 注意要给私钥设密码
chmod 700 /etc/ansible/ssh_keys/node2.key
将/etc/ansible/ssh_keys/node2.key.pub内容追加到远程主机的authorized_keys文件里面。


然后,编辑/etc/ansible/hosts,修改如下:

[node2]
192.168.2.12 ansible_ssh_private_key_file=/etc/ansible/ssh_keys/node2.key

保存退出后,执行

ansible node2 -m command -a 'ls /root'  这时,系统会提示输入私钥的密码才能连接服务器

wKiom1chnCHjbmVRAAAc50Xs44w767.png


经过我虚拟机测试,输入一次密码后,ansible再执行同样的命令就不用再输入密码了。但执行不同的命令还是需要再次输入私钥的密码才能执行命令的。