Ansibleは、指定されたユーザーとしてコマンドを実行するためのディレクティブになります

Ansible Become Directive Run Commands



Ansibleを使用すると、rawコマンドまたはAnsibleプレイブックを使用してリモートマシンでさまざまな操作を実行できます。デフォルトでは、Ansibleプレイブックは、Ansibleコントローラーの同じユーザーとしてリモートホストで実行されます。つまり、リモートマシンで別のユーザーとしてコマンドを実行する必要がある場合は、Ansibleプレイブックで明示的に指定する必要があります。

別のユーザーとしてコマンドを実行する機能を実装するには、Linuxシステムで使用可能なsudo機能を使用する必要があります。 Ansibleのbecomeディレクティブを使用すると、指定したユーザーとしてコマンドを実行できます。







ユーザーの情報は、become_passなどのbecome変数を使用してAnsibleプレイブックで指定され、ユーザーbecome_userのパスワードと、コマンドを実行できるユーザーを指定します。



ルートとしてAnsibleタスクを実行する方法

Ansibleでrootユーザーとして特定のコマンドを実行するには、becomeディレクティブを実装し、値を「true」に設定します。これを行うと、コマンドの実行時に引数なしでsudoを実装するようにAnsibleに指示されます。



たとえば、MySQL-serverパッケージを更新してから再起動するAnsibleプレイブックについて考えてみます。通常のLinux操作では、このようなタスクを実行するには、rootユーザーとしてログインする必要があります。 Ansibleでは、以下に示すように、become:yesディレクティブを呼び出すだけです。





-ホスト:すべて

なる:はい

タスク:

-名前:Ansible runなのでルートと更新システム

ヤム:

名前:mysql-server

状態:最新

- 名前:

service.service:
名前:mysqld

状態:再起動

上記のプレイブックでは、becomeディレクティブを使用し、become_userユーザーを指定しませんでした。これは、becomeディレクティブの下のコマンドがデフォルトでrootとして実行されるためです。

これは、次のように指定するのと似ています。



-ホスト:すべて

なる:はい

begin_user:root

タスク:

-名前:Ansible runなのでルートと更新システム

ヤム:
名前:mysql-server

状態:最新

-名前:service.service:

名前:mysqld

状態:再起動

AnsibleタスクをSudoとして実行する方法

通常のrootユーザーではなく、特定のユーザーとしてAnsibleタスクを実行するには、become_userディレクティブを使用し、ユーザーのユーザー名を渡してタスクを実行します。これは、Unixでsudo-uコマンドを使用するのとまったく同じです。

begin_userディレクティブを実装するには、最初にbecomeディレクティブをアクティブ化する必要があります。これは、become_userは、このディレクティブがアクティブ化されていないと使用できないためです。

コマンドがnobodyユーザーとして実行される次のプレイブックについて考えてみます。

-名前:実行指図 なので別のユーザー((誰でもない)。
指図:ps

なる:NS

begin_method:これは

begin_user:誰も

begin_flags:'-s / bin / bash'

上記のプレイブックスニペットでは、become、become_user、およびその他のbecomeディレクティブを実装しました。

  1. begin_method :これは、suやsudoなどの特権昇格方法を設定します。
  2. begin_userディレクティブ :これは、コマンドを実行するユーザーを次のように指定します。これは、次のようになることを意味するものではありません。
  3. begin_flags :指定したタスクに使用するフラグを設定します。

これで、ansible-playbook filename.ymlを使用して上記のプレイブックを実行し、結果を自分で確認できます。出力のあるタスクの場合、デバッグモジュールを実装する必要がある場合があります。

Ansibleを実行する方法はパスワードでなります

パスワードを必要とするbecomeディレクティブを実行するには、指定されたプレイブックを呼び出すときにパスワードを要求するようにAnsibleに指示できます。

たとえば、パスワードを使用してプレイブックを実行するには、次のコマンドを入力します。

ansible-プレイブックbecome_pass.yml--ask-become-pass

上記のコマンドと同様の操作を実行する-Kフラグを指定することもできます。例えば:

ansible-プレイブックbecome_pass.yml-に

指定すると、タスクの実行時にパスワードの入力を求められます。

ノート :-bフラグを使用して、Ansible AD HOCrawコマンドでbecomeディレクティブを使用することもできます。詳細については、以下のドキュメントをご覧ください。

https://linkfy.to/becomeDocumentation

結論

この記事を読んだ後は、AnsibleBECOMEディレクティブを使用してさまざまなタスクの権限昇格を実行する方法を理解する必要があります。

セキュリティ上の理由から、さまざまなアカウントに制限を実装し、それらをいつ使用するかを明示的に指定することをお勧めします。したがって、特権の昇格は、Ansibleでsudoとsuを使用する際の重要な側面です。