以前自己玩ansible的时候,都是用的root账户来管理。现在到了生产环境,可不能这么随便了,我相信很多其他公司也都是禁止root的ssh连接。
因此,我这次部署就遇到问题了,网上的很多文章,都没有细说这块。我也是摸索做出来的,通过这次实践,也进一步加深了对ansible的认识。希望可以帮到广大朋友。
部署步骤如下
1.1检查管理机上的ansible.cfg配置文件
# vi /etc/ansible/ansible.cfg
sudo_user = root /* 请确保配置是这样的 */
1.2默认ansible是使用key验证的
如果使用密码登陆的服务器,使用ansible的话,
要不修改ansible.cfg配置文件的ask_pass= True给取消注释,
要不就在运行命令时候加上-k,这个意思是-k, --ask-pass ask for SSH password
1.3如果客户端不在know_hosts里将会报错
如果想解决此问题,需要修改ansible.cfg的#host_key_checking = False取消注释
1.4管理机上创建普通账户并加入sudo
# useradd cpis
# passwd cpis
# vi /etc/sudoers
cpis ALL=(ALL) NOPASSWD: ALL
1.5被管理机上创建普通账户并加入sudo
# useradd cpis
# passwd cpis
# vi /etc/sudoers
cpis ALL=(ALL) NOPASSWD: ALL
1.6管理机上生成密钥并拷贝到被管理机
# su - cpis
[[email protected] ~]$ ssh-keygen -t rsa
[[email protected] ~]$ ssh-copyid -i 172.31.28.61
1.7管理机上做测试
# ansible 172.31.28.61 -u cpis --sudo -a ‘ls /root‘
这样表示测试通过,也就达到我们最初的目的。