2015-04-30 8 views
13

Ich versuche, ein extrem einfaches Playbook zu laufen, um ein neues Ansible-Setup zu testen.Ansible 1.9.1 'werden' und sudo Problem

Wenn die 'neuen' ansible Privilege Escalation config Optionen in meiner ansible.cfg Datei:

[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 

Ich erhalte die folgende Fehlermeldung:

fatal: [webserver1.local] => Internal Error: this module does not support running commands via 'sudo' 

FATAL: all hosts have already failed -- aborting 

Das Textbuch ist auch sehr einfach:

# 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 

Ich bin mir nicht sicher, ob etwas in Ansible 1.9.1 kaputt ist oder ob ich etwas mache falsch liegen. Sicherlich erlaubt das 'Befehls' Modul in Ansible das Ausführen von Befehlen als sudo.

Antwort

0

Ich denke, Sie sollten die sudo Direktive im Abschnitt Hosts verwenden, damit nachfolgende Aufgaben mit sudo-Rechten ausgeführt werden können, es sei denn, Sie haben in einer Aufgabe explizit sudo:no angegeben.

Hier ist Ihr Playbook, das ich geändert habe, um sudo Richtlinie zu verwenden.


# 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

Von dem, was ich lese es bezieht sich auf die Ausführung von Ansible auf einem RHEL 6-Host und eine alte Version von OpenSSH, die ControlPersist nicht unterstützt. Ich untersuche immer noch. Ich werde das morgen aber versuchen. Es scheint, dass sudo config Optionen in Ansible 1.9.0 und mehr veraltet waren. – ilium007

+0

Es stellte sich heraus, dass OpenSSL mit der ControlPersist-Funktion gepatcht wurde. – ilium007

+0

Die Frage bezog sich auf die 'neue' Ansible 'werden' Syntax. Das ältere 'sudo: yes' funktioniert gut. – ilium007

26

Das Problem ist mit der Konfiguration; Ich nahm auch it als Beispiel und bekam das gleiche Problem. Nach dem Spielen einer Weile bemerkte ich, dass die folgenden Werke:

--- 
- hosts: all 
    sudo: yes 
    gather_facts: no 
    tasks: 
    - name: "sudo to root" 
    command: /usr/bin/whoami 

2) neue become

--- 
- hosts: all 
    become: yes 
    become_method: sudo 
    gather_facts: no 
    tasks: 
    - name: "sudo to root" 
    command: /usr/bin/whoami 

3) mit ansible.cfg:

[privilege_escalation] 
become = yes 
become_method = sudo 

1) sudo veraltet

und dann in einem Spielbuch:

--- 
- hosts: all 
    gather_facts: no 
    tasks: 
    - name: "sudo to root" 
    command: /usr/bin/whoami 

da Sie „Werden“ tstuser01 (kein Wurzel wie mich), bitte ein bisschen spielen, wahrscheinlich sollte Benutzernamen nicht zu zitieren:

become_user = tstuser01 

zumindest das ist die Art, wie ich remote_user definieren in anssible.cfg und es funktioniert ... Mein Problem gelöst, hoffe auch Ihr

+2

Das Problem ist definitiv die Anführungszeichen für die Optionen "were_user" und "werden_method" in ansible.cfg. Das RPM-Beispiel enthält falsch Anführungszeichen; Das Entfernen der Anführungszeichen bewirkt, dass es funktioniert. – Jason

+0

Ich habe diese verwendet "werden: ja were_user: root werden_method: sudo" Aber immer noch diese nervige Verwarnungswarnung ... –