ansible -h可以看到有
--become (-b)
--become-method
--become-user
--ask-become-pass (-K)大寫K
四個參數,利用這四個參數可以在ansible命令和playbook中用普通用戶執行root操作。
命令: ansible 10.12.3.27,10.31.2.38 -m shell -a 'date' -b --become-method su --become-user root --ask-become-pass(-K)大寫K
輸入密碼後,相當於用root執行了date命令,可以把date換成 cat /etc/shadow驗證root權限。 多個ip(主機列表)的主機需要相同的root密碼(只用輸入一次),密碼不同可以分多次或者直接配好密碼。
如果想配好密碼,可以在/etc/ansible/hosts爲每個機器添加密碼或者爲組添加密碼。例如:
[groupa]
10.10.10.1 ansible_become_pass=rootpwd1
10.10.10.2 ansible_become_pass=rootpwd2
[groupb]
10.10.10.3
10.10.10.4
[groupb:vars]
ansible_become_pass=rootpwd34
如果失敗可能是ssh過去後,執行su -後沒有提示輸入密碼,應該是編碼問題,在受控機器上執行echo export en_CN.utf-8 >>~/.bashrc,然後再執行ansible命令試試。
playbook:
---
- hosts: 10.12.3.28,10.12.3.27
become: yes
become_user: root
become_method: su
tasks:
- name: date
shell: date