2017年10月8日日曜日

[ansible] become_userでタスクの実行ユーザを変更できない場合の解決方法

概要

原則、rootユーザでタスクを実行する環境で、ある特定のタスクのみ実行ユーザを変更するためにbecome_userを使用したが、実行ユーザが変わらずにrootユーザでタスクが実行された。

事象

main.ymlで指定した'root user in ID'、'test1 user in ID'タスクが共に、rootユーザでidコマンドが実行される。

inventoryファイル

[all:vars]
ansible_become=true
ansible_become_method=sudo
ansible_become_user=root
ansible_become_pass=rootユーザのパスワード
ansible_ssh_user=sshユーザ
ansible_ssh_pass=sshユーザのパスワード

main.yml

- name: root user in ID
  shell: id
- name: test1 user in ID
  become: true
  become_method: sudo
  become_user: test1
  shell: id

原因

ansible_become_userで指定されたユーザをタスクのbecome_userでは上書きできないため。

対処

'ansible_become_user=root'をinventoryファイルから削除する。
ansible_become_userのデフォルト値はrootになるため、become_userが指定されていないタスクはrootユーザで実行される。

inventoryファイル

[all:vars]
ansible_become=true
ansible_become_method=sudo
ansible_become_pass=rootユーザのパスワード
ansible_ssh_user=sshユーザ
ansible_ssh_pass=sshユーザのパスワード

main.yml

- name: root user in ID
  shell: id
- name: test1 user in ID
  become: true
  become_method: sudo
  become_user: test1
  shell: id

参考

  • なし。

0 件のコメント:

コメントを投稿