2015-11-22 11 views
9

Podczas próby uruchomienia zadania z sudo w moim asystencie Ansible pojawia się komunikat o błędzie.Brakujące hasło staje się hasłem podczas sudoing

Oto mój PlayBook:

--- 
- hosts: production 
    gather_facts: no 
    remote_user: deployer 
    become: yes 
    become_method: sudo 
    become_user: root 

    tasks: 
    - name: Whoami 
     command: /usr/bin/whoami 

spodziewałbym whoami być root ale zadanie nie powiedzie się z komunikatem o błędzie:

» ansible-playbook -i ansible_hosts sudo.yml --ask-sudo-pass 
SUDO password: [I paste my sudo password here] 

PLAY [production] ************************************************************* 

GATHERING FACTS *************************************************************** 
fatal: [MY.IP] => Missing become password 

TASK: [Whoami] **************************************************************** 
FATAL: no hosts matched or all hosts have already failed -- aborting 

Kiedy ręcznie ssh w polu i spróbować sudo to działa zgodnie z oczekiwaniami:

» ssh [email protected] 
» sudo whoami 
[I paste the same sudo password] 
root 

Hasło użytkownika wdrażającego zostało ustawione przez Ansibl e następująco (w innym playbook):

- hosts: production 
    remote_user: root 

    # The {{ansible_become_pass}} comes from this file: 
    vars_files: 
    - ./config.yml 

    tasks: 

    - name: Create deployer user 
     user: name=deployer uid=1040 groups=sudo,deployer shell=/bin/bash password={{ansible_become_pass}} 

Gdzie {{ansible_become_pass}} to hasło pragnę mieszany z następującym Pythona fragmencie:

python -c 'import crypt; print crypt.crypt("password I desire", "$1$SomeSalt$")' 

"password I desire" ma zastąpić hasłem i "$1$SomeSalt$" jest przypadkowy sól .

Używam wersji Answer 1.9.4.

Na czym polega problem?

+0

Próbowałem obu twoich książek i pracowały dla mnie z ansible 1.9.2. Jedyną zmianą, jaką wprowadziłem, było ustawienie hasła użytkownika ansibli i właśnie wkleiłem wartość zamiast dołączać ją z innego pliku. Nie mogę sobie wyobrazić, że to by miało znaczenie. Właśnie używałem swojej stacji roboczej i łączę się z localhostem. –

+0

Może to błąd w twojej wersji z mieszaniem przełącznika --ask-sudo z składnią stał w podręczniku? Próbowałem obu --ask-sudo i --ask-zostać i oba działały. –

Odpowiedz

4

Próbowałem twojej wersji i playbooka tylko z --ask-pass, która zwraca "stdout": "root" wynik.

Należy wymienić --ask-sudo-pass na --ask-pass. Upewnij się, że użytkownik deployera ma uprawnienia roota.

$ ./bin/ansible --version 
ansible 1.9.4 
$ ./ansible/bin/ansible-playbook -vv pl.yml --ask-pass 
SSH password: 

PLAY [localhost] ************************************************************** 

TASK: [Whoami] **************************************************************** 
<localhost> REMOTE_MODULE command /usr/bin/whoami 
changed: [localhost] => {"changed": true, "cmd": ["/usr/bin/whoami"], "delta": "0:00:00.002555", "end": "2015-12-05 07:17:16.634485", "rc": 0, "start": "2015-12-05 07:17:16.631930", "stderr": "", "stdout": "root", "warnings": []} 

PLAY RECAP ******************************************************************** 
localhost     : ok=1 changed=1 unreachable=0 failed=0 
Powiązane problemy