Permissions
以特定使用者身份執行 Ansible 任務
我正在嘗試以與執行劇本的使用者不同的使用者身份執行特定的 Ansible 任務。我的
.yml
文件如下所示:--- - hosts: staging_servers tasks: - name: check user remote_user: someusername shell: whoami
執行此任務向我顯示該
whoami
命令返回的使用者與我在任務中定義的使用者不同(準確地說,返回在hosts
名為 的文件中定義的使用者ubuntu
)。我也嘗試這樣定義任務:
--- - hosts: staging_servers tasks: - name: check user sudo: yes sudo_user: someusername shell: whoami
但後來我得到“
Missing sudo password
”錯誤,雖然sudoers
文件中有一行說someusername ALL=(ALL) NOPASSWD:ALL
並sudo
在遠端機器上發出命令,因為someusername
它不要求我輸入密碼。那麼,如何以不是
hosts
文件中定義的使用者或root
他自己的不同使用者身份執行特定任務?
您在那裡誤解了這兩種設置:
- remote_user是一個 Ansible 設置,用於控制 Ansible 用於連接的 SSH 使用者:
ssh ${REMOTE_USER}@remotehost
- someusername ALL=(ALL) NOPASSWD:ALL是一個 sudo 配置,它允許使用者
someusername
在沒有密碼的情況下執行任何主機中的所有命令。它不允許任何人發出命令someusername
。理想情況下,您將直接以正確的使用者身份登錄,這
remote_user
就是全部內容。但通常您只能以管理使用者身份登錄(比如ubuntu
),並且必須以另一個使用者身份(比如 )執行 sudo 命令scrapy
。然後,您應該留給remote_user
登錄的使用者,並將以下 ansible 屬性添加到作業中:- name: log in as ubuntu and do something as scrapy remote_user: ubuntu sudo: true sudo_user: scrapy shell: do-something.sh