タスクごとまたはタスクセットごとにユーザーを切り替えるにはどうすればいいですか? 質問する

タスクごとまたはタスクセットごとにユーザーを切り替えるにはどうすればいいですか? 質問する

私の Ansible プレイブックによく出てくるテーマは、sudo: yes特定のユーザーに対して実行したいので、sudo 権限 ( ) でコマンドを実行しなければならないことが多いということです。理想的には、sudo を使用してそのユーザーに切り替え、通常どおりコマンドを実行したいです。そうすれば、ディレクトリの chown などの通常の post コマンド クリーンアップを行う必要がなくなります。以下は、私のプレイブックの 1 つからの抜粋です。

- name: checkout repo
  git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
  sudo: yes
- name: change perms
  file: dest={{ dst }} state=directory mode=0755 owner=some_user
  sudo: yes

理想的には、そのユーザーに su するために sudo が必要な場合でも、別のユーザーとしてコマンドまたはコマンド セットを実行できる必要があります。

ベストアンサー1

Ansible 1.9以降の場合

Ansible はbecome、、、become_userおよびbecome_methodディレクティブを使用して権限昇格を実現します。これらをプレイ全体またはプレイブックに適用したり、含まれているプレイブックに設定したり、特定のタスクに設定したりできます。

- name: checkout repo
  git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
  become: yes
  become_user: some_user

を使用してbecome_with、権限昇格を実現する方法を指定できます。デフォルトは ですsudo

ディレクティブは、それが使用されているブロックのスコープ内で有効です()。

見るホストとユーザーその他の例についてはなる(権限昇格)より詳細なドキュメントについては、こちらをご覧ください。

becomeタスクスコープのディレクティブとディレクティブに加えてbecome_user、Ansible 1.9 では、明示的なディレクティブがない場合に再生中にこれらの値を設定する新しい変数とコマンドライン オプションがいくつか追加されました。

Ansible 2.0.2.0 では、以下で説明する古いsudo/sudo_user構文はまだ機能しますが、非推奨の通知には「この機能は将来のリリースで削除される予定です」と記載されています。


以前の構文は、Ansible 1.9 で非推奨となり、削除される予定です。

- name: checkout repo
  git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
  sudo: yes
  sudo_user: some_user

おすすめ記事