2015-04-30 12 views
13

Sto provando a eseguire un playbook estremamente semplice per testare una nuova configurazione Ansible.Ansible 1.9.1 'diventa' e sudo issue

Quando si usano le 'nuove' opzioni Privilege Escalation di configurazione ansible nel mio file ansible.cfg:

[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 

ottengo il seguente errore:

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

FATAL: all hosts have already failed -- aborting 

il Playbook è anche molto semplice:

Non sono sicuro se c'è qualcosa di rotto in Ansible 1.9.1 o se sto facendo qualcosa sta sbagliando. Sicuramente il modulo 'comando' in Ansible consente di eseguire comandi come sudo.

risposta

0

Penso che dovresti usare la direttiva sudo nella sezione host in modo che le attività successive possano essere eseguite con privilegi sudo a meno che tu non abbia specificato esplicitamente sudo:no in un'attività.

Ecco il tuo libro di esercizi che ho modificato per utilizzare la direttiva 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

Da quello che sto leggendo si riferisce all'esecuzione di Ansible su un host RHEL 6 e una vecchia versione di OpenSSH che non supporta ControlPersist. Sto ancora indagando. Ci proverò comunque domani. Sembra che ci siano opzioni sudo config deprecate in Ansible 1.9.0 e successive. – ilium007

+0

Abbiamo scoperto che OpenSSL è stato corretto con la funzione ControlPersist. – ilium007

+0

La domanda relativa al 'nuovo' Ansible 'diventa' sintassi. Il vecchio "sudo: sì" funziona bene. – ilium007

26

Il problema riguarda la configurazione; Ho preso anche it come esempio e ho avuto lo stesso problema. Dopo aver giocato per un po 'ho notato che le seguenti opere:

1) deprecato sudo:

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

2) nuovo become

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

3) utilizzando ansible.cfg:

[privilege_escalation] 
become = yes 
become_method = sudo 

e poi in un libro di gioco:

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

dal momento che "divenire" tstuser01 (non una radice come me), si prega di giocare un po ', probabilmente il nome utente non dovrebbe essere citato anche:

become_user = tstuser01 

almeno questo è il mio modo definisco REMOTE_USER in ansible.cfg e funziona ... Il mio problema risolto, spero anche il tuo

+2

Il problema sono sicuramente le virgolette sulle opzioni become_user e become_method in ansible.cfg. L'esempio rpm contiene erroneamente virgolette; rimuovere le virgolette fa sì che funzioni. – Jason

+0

Ho usato questo "diventare: sì diventare_user: root diventare_method: sudo" Ma mostrare ancora fastidioso avviso di deprecazione ... –