不需要配置免密登陆,即可执行


/etc/ansible/hosts 文件配置


wKiom1lvFBWwpZcFAAAuwTSrDCA044.png-wh_50


sudo.yml文件配置


- hosts: test


  sudo_user: cloud


  sudo: yes


  tasks:


  - name: echo /root/hosts


    shell:  echo "127.0.0.1  hostname " >> /root/hosts


    ignore_errors: True

    become: true

    become_user: root

 

执行结果:

wKiom1lvE3myrJSmAABOPvpYg9U358.png-wh_50



become的官方文档说明

官方文档:http://docs.ansible.com/ansible/become.html


关于become 的使用,当需要执行某些特殊操作需要专门权限时,可以用become_user那强调切换,同时1.9 版本以前的sudo_user 也依然保留使用;


当使用了beocome_user时,并且指定需要sudo,需要在hosts 文件指定ansible_sudo_pass 密码,否则become_user 使用sudo 进行操作时无权限执行,不会成功。比如我这里用cloud 账号执行 echo "127.0.0.1 hostname" >>/root/hosts 需要sudo 权限的,所以用 become_user: root,并且指定了ansible_sudo_pass 密码,这样就可以顺利的执行了。