yum -y install ansible
yum安装ansible的特点
yum安装的ansible,配置文件,hosts文件,roles目录都默认在/etc/ansible目录下
配置文件要点介绍
-------------------
配置文件中的sudo-user和become-user,remote_user
remote_user: 本机要通过一个用户名密码登录到远程机器上,remote_user指的就是这个用户名
sudo_user: 本机通过一个用户名密码登录到远程机器机器以后,可能还要sudo到其他账户下进行操作,如zabbix账户,nginx账户,如果这些账户下的目录设了置权限,一定要sudo - zabbix,sudo - nginx才可以操作的,所以sudo_user指的就是值,登录以后要去那个账户下去干活,用的就是提升权限这个操作
become-user: 和sudo_user类似,他可以在每个任务中进行定义。在1.9 Ansible之前,大多数情况下都允许使用sudo和有限的su来允许登录/远程用户成为不同的用户并执行任务,用第二个用户的权限创建资源。从1.9开始become代替旧的sudo / su,同时仍然向后兼容。这个新系统也使得添加诸如pbrun(Powerbroker),pfexec,dzdo(Centrify)等其他特权升级工具变得更加容易。还有一个不同之处,sudo_user在配置文件的default模块中,而become_user没有,这说明become_user在提升权限时划分的更加精准了。
ask_pass = True 在本机执行命令时,需不需要本机用户的密码,这个很无聊,因为操作者不希望每次操作时都输入本机的密码,这是没有意义的,此项应该注释掉。这个功能和命令行的-k参数的功能重叠
ask_sudo_pass = True \\每次执行ansible命令是否询问ssh密码,同样的,此项也应该注释掉。这个功能和命令行的-K参数的功能重叠
ansible常用命令
1,-i参数指定hosts目录,
ansible -i /data/hosts all -m ping
2,使用become_user功能
2.1 通过命令行的-e参数指定become
例如:
ansible 192.168.136.201 -e "ansible_become_user=root" -m yum -a "name=httpd state=latest" -k -K
ansible -i hosts all -m yum -e "ansible_ssh_user=ansibleadmin ansible_become_user=ansibleadmin ansible_become=true ansible_become_pass='666666'" -a "name=gcc state=latest" -k -K
使用-k -K参数时确保配置文件中的两个选项注释掉、
2.2 在hosts文件中指定become
例如:
[s21]
#192.168.1.21 ansible_ssh_user=i ansible_ssh_pass=i
192.168.1.21 ansible_ssh_user=i ansible_ssh_private_key_file=/home/i/.ssh/id_rsa ansible_become=true ansible_become_user=root ansible_become_pass='i'
2.3,在roles的yml文件中编写,略过
2.4 在ansible的配置文件中编写
[privilege_escalation]
become=Ture
become_method=sudo
become_user=root
become_ask_pass=False
打开并编写这些配置以后,程序会从上到下读取配置文件中的配置,become_user是三个user中的最后一个,所以也是最后生效的结果
用以下命令可以检查配置的结果:
ansible -i hosts all -m shell -a "whoami" -k
3,ansible配置文件的优先级
3.1 优先级:
1,ANSIBLE_CONFIG: ansible命令会先检查该环境变量
2,./ansible.cfg: 当前执行ansible命令的目录
3,~/.ansible.cfg
4. /etc/ansible/ansible.cfg: 默认的配置文件
3.2 从以上顺序可以看出,环境变量中的配置是最优先的,配置文件编写以后,如果不想动,可以用环境变量最大限度的保持灵活性,比如一下的例子:
ansible -i hosts all -e "ansible_become=True ansible_ssh_user=ansibleadmin ansible_become_user=ansibleadmin" -m shell -a "whoami" -k -K (如果在前面的双引号中加入ansible_become_pass='66666',后面的大K就不用写)