下面的全部实验是在CentOS6.7X86_64上实验通过。
1、配置epel源
代码语言:javascript复制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
代码语言:javascript复制yum install ansible
3、配置SSH免密码登陆
代码语言:javascript复制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 ,注释掉全部内容,改成自己的节点信息,下面的这些的是符合要求的写法:
代码语言:javascript复制[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、简单测试
代码语言:javascript复制ansible webserver -m command -a 'uptime'
ansible webserver -m setup # 查看远程主机的基本信息
ansible webserver -m ping # 测试远程主机是否在线
命令格式:ansible 主机组 -m command -a '命令'
补充:
网上大部分教程都是出于演示,简单的配置了SSH免密码的密钥登录法【上面笔记的第三步】,这样存在一个问题:假如ansible控制端出问题了,被***,则全部节点都存在风险。
因此出于安全考虑,建议使用带密码的密钥登陆方式。配置如下:
代码语言:javascript复制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,修改如下:
代码语言:javascript复制[node2]
192.168.2.12 ansible_ssh_private_key_file=/etc/ansible/ssh_keys/node2.key
保存退出后,执行
ansible node2 -m command -a 'ls /root' 这时,系统会提示输入私钥的密码才能连接服务器
经过我虚拟机测试,输入一次密码后,ansible再执行同样的命令就不用再输入密码了。但执行不同的命令还是需要再次输入私钥的密码才能执行命令的。