私の 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 では、明示的なディレクティブがない場合に再生中にこれらの値を設定する新しい変数とコマンドライン オプションがいくつか追加されました。
- コマンドラインオプション同等の
become
/become_user
ディレクティブの場合。 - 接続固有の変数ホストまたはグループごとに設定できます。
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