Ansible
使用 ansible sudo/become 創建組時出錯
我正在嘗試使用 Ansible 創建一個 gropu,但如果我將其作為 SSH 命令執行,它會失敗但可以工作。
表演
- name: Test error creating groups hosts: all become: yes become_method: sudo become_user: xdradmin tasks: - name: Ensure test group exists group: name: test state: present gid: 1001
嘗試創建組失敗並出現錯誤。
$ ansible-playbook -i web, -u xdradmin test.yml PLAY [Test error creating groups] ******************************************************************************************** TASK [Gathering Facts] ******************************************************************************************************* ok: [web] TASK [Ensure test group exists] ********************************************************************************************** fatal: [web]: FAILED! => {"changed": false, "msg": "groupadd: Permission denied.\ngroupadd: cannot lock /etc/group; try again later.\n", "name": "test"} PLAY RECAP ******************************************************************************************************************* web : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
但是,如果我手動執行基本相同的操作,它可以正常工作。
ssh xdradmin@web 'sudo groupadd -g 1001 test && tail -n1 /etc/group' test:x:1001:
您已經告訴 ansible 成為(在這種情況下為 sudo)使用者
xdradmin
,顯然沒有創建組的權限。大多數情況下,您應該成為root
管理使用者,將執行所有需要 root 權限的任務。確實,這就是您使用 ssh 命令所做的事情:您成為root
,而不是xdradmin
。因此該命令起作用了。修復你的
become_user
,例如:become_user=root
成為使用者與 ansible 連接到遠端系統的使用者不同。那就是
remote_user
。remote_user=xdradmin
通過這兩個更改,ansible 將以 user 身份 ssh 到系統
xdradmin
,然後 sudo 到root
最後執行您的任務。