[解決済み] タスクまたはタスクのセットごとにユーザーを切り替えるには?
質問
私のansibleプレイブックに繰り返し登場するテーマは、しばしばsudo権限でコマンドを実行しなければならないことです(
sudo: yes
というのも、あるユーザーに対してそれを行いたいからです。理想を言えば、sudoを使ってそのユーザーに切り替えて、普通にコマンドを実行したいところです。なぜなら、そうすれば、chowningディレクトリのような、コマンド実行後のいつもの後始末をする必要がなくなるからです。以下は、私のプレイブックの一部です。
- 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
理想的には、sudo でそのユーザーに su する必要がある場合でも、別のユーザーとしてコマンドやコマンド群を実行することができます。
解決方法は?
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
関連
-
[解決済み] リモートシステムでAnsibleタスクを使用してファイルを移動/リネームする方法
-
Ansible はエラー 'module' オブジェクトに属性 'SSL_ST_INIT' ソリューションがないことに気づきました。
-
ansible共通モジュール
-
[解決済み】ansible playbookで1つのタスクだけを実行する方法は?
-
[解決済み] Ansibleの定義済み変数の一覧はどこで手に入りますか?
-
[解決済み] Ansibleのロールのdefaultsとvarsの違いは何ですか?
-
[解決済み] タスクまたはタスクのセットごとにユーザーを切り替えるには?
-
[解決済み] Ansible hosts ファイルに定義されている現在のマシンのホスト名を取得する方法は?
-
[解決済み] ansibleのインベントリファイルでhost_key_checking=falseを設定するには?
-
[解決済み] Ansibleです。ファイルの内容に変数を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Ansible はエラー 'module' オブジェクトに属性 'SSL_ST_INIT' ソリューションがないことに気づきました。
-
ansible共通モジュール
-
[解決済み] Ansibleの定義済み変数の一覧はどこで手に入りますか?
-
[解決済み] Ansibleのロールのdefaultsとvarsの違いは何ですか?
-
[解決済み] Ansible hosts ファイルに定義されている現在のマシンのホスト名を取得する方法は?
-
[解決済み] ansibleで変数が未定義のときにタスクを実行するには?
-
[解決済み] Ansible - 変数が定義されていない場合は、デフォルトを使用する
-
[解決済み] 現在実行中の ansible-playbook へのパスを持つ変数?
-
[解決済み] Ansible: 現在のターゲットホストの IP アドレスを取得する
-
[解決済み] Ansibleです。ファイルの内容に変数を設定する