Ansible become 設定の実行意図を確認

切り替え先のユーザーと、切り替えを有効にする範囲を明確にします。

説明

become_user だけではユーザー切り替えは有効になりません。ただし become は上位の設定や変数から適用される場合があるため、タスクの一行だけで実行アカウントを判断しないでください。

想定される影響

実行アカウントを誤解すると、タスクが失敗したり、誤ったアカウント権限で変更したりするおそれがあります。

対処方法

切り替えが必要なプレイやタスクでは、対象の become_user と become: true を一緒に明示してください。無関係なタスクまで権限を広げず、実際に適用される設定を確認してください。

例

この例はユーザー切り替えを明示する方法を示しています。対象アカウントと切り替え権限を用意する必要があります。コマンドの実行アカウントは whoami で確認できます。

変更前

yaml
- hosts: localhost
  name: become_user without become
  become_user: bar
  tasks:
    - name: Simple hello
      ansible.builtin.debug:
        msg: hello

- hosts: localhost
  tasks:
    - name: become_user without become
      ansible.builtin.command: whoami
      become_user: mysql
      changed_when: false

変更後

yaml
- hosts: localhost
  become_user: postgres
  become: true
  tasks:
    - name: some task
      ansible.builtin.command: whoami
      changed_when: false

参考資料