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就不用写)