环境: 1、普通用户(密码账户已知) 2、该用户已经添加了sudo权限
准备:
1、cd /home/123
touch ./hosts
#创建hosts配置文件,123是普通用户名
vi /etc/ansible.cgf
#然后在ansible.cfg中修改主机清单inventory为当前目录(/home/123)的hosts文件。设置host_key_checking=False(取消注释)
[defaults]
inventory = ./hosts
host_key_checking = yes
2、在当前目录下的主机清单hosts文件中,添加分组、主机IP、非root用户的帐号和密码,提权密码(非root用户的密码)。
#模版示例
[all:vars]
ansible_ssh_user=
ansible_ssh_port=
ansible_ssh_pass=
ansible_become=yes
# ansible_become_method=sudo
# ansible_become_user=root
# ansible_become_pass=
#1
[aa]
11.133.64.111
#2
[bb]
11.133.64.111
#3
[cc]
11.133.64.111
4、在当前目录下编写xxx.yml的task脚本 #最后运行playbook执行特定运维 ansible-playbook xxx.ym
注意: 1、ansible的become就是提权的意思。ansible.cfg中become通常设置为false,具体的task操作中再指定become: true。这样可以确保使用最小权限进行操作,以防误操作。
2、提权操作时ssh登陆帐号还是非root帐号(该帐号有sudo权限),特别注意become_user不能写原ssh登陆的非root用户,一定要写root,或者不写默认为root。这样才能执行成功。
3、如果主机清单hosts中没有指定become的密码,那么执行ansible-playbook xxx.yml加-K参数,手动输入ssh用户的sudo密码(不是root密码)
4、ssh登陆时可以使用密码,也可以使用基于密钥的登陆(免密)。但是执行特权命令时必须要提权,即执行命令时加入-K参数,输入ssh用户的提权密码。