web-dev-qa-db-ja.com

Ansible 1.9.1 'become' and Sudo issue

非常にシンプルなプレイブックを実行して、新しい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として実行できます。

14
ilium007

問題は構成にあります。 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を定義する方法であり、動作します...私の問題も解決しました。

30
Maxym

タスクで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
0
James Oguya