Ansibleのドキュメントを読みましたが、ansible Playbookの3つのパラメーターuser、Sudo、Sudo_userについてまだ少し混乱しています。
パラメーターの異なる組み合わせで次のプレイブックを試しました。
user:deploy => Works
user:deployおよびSudo:True => gitタスクのハング
user:deploy、Sudo:TrueおよびSudo_user:deploy => Works
Sudo_userは実際に何をしますか?これらの組み合わせのそれぞれをいつ、なぜ使用する必要がありますか?
- hosts: all
user: deploy
Sudo: True
Sudo_user: deploy
tasks:
- name: Ensure code directory
file: dest=/home/deploy/code state=directory
- name: Deploy app
git: [email protected]:YAmikep/djangotutorial.git dest=/home/deploy/code
ありがとう
user
は、sshを使用しているユーザーです。あなたの設定では、deploy
としてsshしています。
Sudo_user
は、Sudo: yes
が設定されているときにホストでSudoを実行するユーザーです。
したがって、Sudo
としてsshできる場合、deploy
とSudo_user
のいずれも必要ないと思います。
ただし、ルートとしてsshを使用する場合は、Sudo_user: deploy
とSudo: yes
を設定する必要があります。
「Sudo」を要求してもユーザーを指定しない場合、Ansibleは~/.ansible.cfg
(Sudo_user
)のデフォルトセットを使用し、root
にデフォルト設定します。
user
は推奨されないことに注意してください(混乱を招くため)。代わりにremote_user
を使用する必要があります。
編集:ケース2はおそらくsshの確認の問題のためにハングします:おそらく~deploy/.ssh/known_hosts
にbitbucket.orgホストキーがありますが、[〜#〜] not [〜#〜]in ~root/.ssh/known_hosts
更新:Ansible 2.xでは、非推奨のbecome
とbecome_user
の代わりにSudo
とSudo_user
を使用します。使用例:
- hosts: all
user: deploy
become: true
become_user: deploy
tasks:
- name: Ensure code directory
file: dest=/home/deploy/code state=directory
- name: Deploy app
git: [email protected]:YAmikep/djangotutorial.git dest=/home/deploy/cod