説明
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