非常にシンプルなプレイブックを実行して、新しいAnsibleセットアップをテストしようとしています。
Ansible.cfgファイルで「新しい」Ansible Privilege Escalation構成オプションを使用する場合:
[defaults]
Host_key_checking=false
log_path=./logs/ansible.log
executable=/bin/bash
#callback_plugins=./lib/callback_plugins
######
[privilege_escalation]
become=True
become_method='Sudo'
become_user='tstuser01'
become_ask_pass=False
[ssh_connection]
scp_if_ssh=True
次のエラーが表示されます。
fatal: [webserver1.local] => Internal Error: this module does not support running commands via 'Sudo'
FATAL: all hosts have already failed -- aborting
プレイブックも非常に簡単です。
# Checks the hosts provisioned by midrange
---
- name: Test su connecting as current user
hosts: all
gather_facts: no
tasks:
- name: "Sudo to configued user -- tstuser01"
#action: ping
command: /usr/bin/whoami
Ansible 1.9.1で何かが壊れているのか、何か間違っているのかはわかりません。確かに、Ansibleの「コマンド」モジュールでは、コマンドをSudoとして実行できます。
問題は構成にあります。 it を例に取りましたが、同じ問題が発生しました。しばらくプレイした後、次のように動作することに気付きました。
1)非推奨Sudo
:
---
- hosts: all
Sudo: yes
gather_facts: no
tasks:
- name: "Sudo to root"
command: /usr/bin/whoami
2)新しいbecome
---
- hosts: all
become: yes
become_method: Sudo
gather_facts: no
tasks:
- name: "Sudo to root"
command: /usr/bin/whoami
3)ansible.cfgを使用:
[privilege_escalation]
become = yes
become_method = Sudo
そして、プレイブックで:
---
- hosts: all
gather_facts: no
tasks:
- name: "Sudo to root"
command: /usr/bin/whoami
tstuser01(私のようなルートではない)になっているので、少しプレイしてください。おそらくユーザー名も引用すべきではありません。
become_user = tstuser01
少なくともこれはansible.cfgでremote_userを定義する方法であり、動作します...私の問題も解決しました。
タスクでSudo:no
を明示的に指定しない限り、hostsセクションでSudo
ディレクティブを使用して後続のタスクをSudo権限で実行できるようにする必要があると思います。
Sudo
ディレクティブを使用するように変更したプレイブックを次に示します。
# Checks the hosts provisioned by midrange
---
- hosts: all
Sudo: yes
gather_facts: no
tasks:
- name: "Sudo to configued user -- tstuser01"
command: /usr/bin/whoami