Ansible Become in role
上週在測試 playbook 時,發現 become 行為不如我預期。
我的 playbook 是這樣寫
---
- name: Main
hosts: ap_servers
become_user: jbossadm
roles:
- role: deploy.jboss
become_user: jbossadm
deploy.jboss 這個 role 裡的 task ,我使用 shell 模組執行 whoami
---
- name: whoami
shell: whoami
我連線到指定主機的使用者是 jenkins,可以切換為 jbossadm 身份。那我在執行以後,卻發現 whoami 仍然顯示為 jenkins,我百思不得其解。
經過詢問同事以後,才知道我的認知是錯的,我以為寫了 become_user: jbossadm
就會有切換使用者的效果,但實際不然,還需要加上 become
與 become_method
才會有效果。所以正確的寫法應該是
---
- name: Main
hosts: ap_servers
roles:
- role: deploy.jboss
become_user: jbossadm
become_method: sudo
become: yes
這樣才會是正確的。