使用個人用戶帳戶(userx),我在所有指定的主機上運行完整的操作手冊。在ansible.cfg要使用的遠程用戶(其可以成爲根)爲:使用--begin for ansible_connection = local
remote_user = ansible
對於遠程主機這一切工作正常。它以用戶Ansible的身份連接,並執行所有需要的任務,同時也改變需要root權限的信息(如/etc/ssh/sshd_config
)。
但是現在我也想在Ansible主機本身上執行劇本。我把以下放在我的清單文件中:
localhost ansible_connection=local
它現在確實在localhost上執行。但是,作爲userx,這導致「訪問被拒絕」,它需要做的一些任務。
這當然有點期待,因爲remote_user告訴遠程,而不是本地用戶。但是,我仍然希望本地的劇本也會以--become
的身份執行任務(例如sudo su -
)。似乎沒有這樣做。
運行與--become -vvv
的劇本告訴我
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: userx
,似乎不嘗試用sudo來執行任務。如果不使用sudo,任務將失敗。
我該如何告訴使用sudo /成爲本地連接呢?
非常感謝您提供證明。它幫助我找到了真正的問題:遙控器工作正常,因爲他們以「安全」用戶身份登錄,並擁有正確的權利。在本地,具體任務需要'成爲'。我試圖在庫存文件級別指定它,但是通過將'ansible_become'設置爲'= ansible'(計算結果爲false)來誤用它。然後庫存文件優先於命令行「--become」,最終導致失敗的任務。 – Dnl