web-dev-qa-db-ja.com

Ansibleのbecomeとbecome_userの違い

最近、私はAnsibleを掘り下げ、自分のプレイブックを書き始めました。ただし、becomebecome_userの違いを理解するのに問題があります。私が理解するように、become_usersu <username>に似たものであり、becomeSudo suまたは「すべてのコマンドをSudoユーザーとして実行」のようなものを意味します。ただし、これら2つのディレクティブが混在する場合があります。

それらの正しい意味を説明してもらえますか?

38
Andrey Rusanov

become_userは、 特権エスカレーション に使用されているユーザーを定義します。

becomeは、単に同じものを有効または無効にするためのフラグです。

明確にする必要がある3つの例を次に示します。

  1. rootは特権昇格のデフォルトのユーザーであるため、このタスクはrootとして実行されます。

    - do: something
      become: yes
    
  2. ユーザーが明示的に設定されているため、このタスクはユーザーsomeoneとして実行されます。

    - do: something
      become: yes
      become_user: someone
    
  3. becomeは設定されておらず、デフォルトでfalse/noに設定されているため、このタスクはbecome_userで何もしません。

    - do: something
      become_user: someone
    

    ... bebeがtrueに設定されていない限り、より高いレベルで、たとえばブロック、プレイブック、グループ、またはホスト変数など.

    block の例を次に示します。

    - become: yes
      block:
        - do: something
          become_user: someone
        - do: something
    

    最初の1番目はユーザーsomeoneとして実行され、2番目はrootとして実行されます。

私が理解しているように、become_userはsuに似たものであり、sudo suや「すべてのコマンドをSudoユーザーとして実行する」といった意味になります。

デフォルトのbecome_methodSudoであるため、Sudo do somethingまたはSudo -u <become_user> do something

Fineprint:もちろん「do:something」は擬似コードです。実際のAnsibleモジュールをそこに置きます。

76
udondan