web-dev-qa-db-ja.com

Ansible Playbookのユーザーvs Sudo vs Sudo_user

Ansibleのドキュメントを読みましたが、ansible Playbookの3つのパラメーターuser、Sudo、Sudo_userについてまだ少し混乱しています。

パラメーターの異なる組み合わせで次のプレイブックを試しました。

  1. user:deploy => Works

  2. user:deployおよびSudo:True => gitタスクのハング

  3. 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

ありがとう

60
Michael
  • userは、sshを使用しているユーザーです。あなたの設定では、deployとしてsshしています。

  • Sudo_userは、Sudo: yesが設定されているときにホストでSudoを実行するユーザーです。

したがって、Sudoとしてsshできる場合、deploySudo_userのいずれも必要ないと思います。

ただし、ルートとしてsshを使用する場合は、Sudo_user: deploySudo: yesを設定する必要があります。

「Sudo」を要求してもユーザーを指定しない場合、Ansibleは~/.ansible.cfgSudo_user)のデフォルトセットを使用し、rootにデフォルト設定します。

userは推奨されないことに注意してください(混乱を招くため)。代わりにremote_userを使用する必要があります。

編集:ケース2はおそらくsshの確認の問題のためにハングします:おそらく~deploy/.ssh/known_hostsにbitbucket.orgホストキーがありますが、[〜#〜] not [〜#〜]in ~root/.ssh/known_hosts

更新:Ansible 2.xでは、非推奨のbecomebecome_userの代わりにSudoSudo_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
71
leucos