私はAnsibleのbecome
別のユーザーでプレイを実行する機能。以下は私の例ですsite.yml
:
- hosts: webserver
remote_user: ansible_user
become: true
roles:
- role_a
- role_b
これは期待どおりに動作します。Ansible は を使用してansible_user
に接続しwebserver
、sudo
その後 として定義されたロールでタスクを実行しますroot
。ただし、各ロールでタスクごとに 1 回実行されるためsudo
、実行がかなり遅くなり、大きなオーバーヘッドが発生しますsudo
。
Ansible のbecome
-configuration をタスクごとに 1 回ではなく、再生ごとに 1 回適用するように設定するにはどうすればよいですか?
答え1
プレイごとに権限昇格を1回だけ行うには、Ansible 用 Mitogen。
彼らのドキュメントから:
ターゲットごとに 1 つの接続が使用され、さらにユーザー アカウントごとに 1 つの sudo 呼び出しが使用されます。これは、ステップ間で重要な状態を RAM に維持でき、システム ログが繰り返し認証イベントでスパムされることがないため、パイプラインと組み合わせた SSH 多重化よりもはるかに優れています。
Mitogen は、Python インタープリターの再利用など、プレイの実行に追加のパフォーマンス上の利点も提供します。
ただし、Ansibleの重要な部分を置き換えるため、すべてのAnsible構成と互換性があるわけではありません。ドキュメントには次のように記載されています。バニラAnsibleとの注目すべき違い、その一部はプレイブックの変更を必要とするか、または完全に使用不可能になる可能性があります。