2017-02-20 3 views
0

ich versuche, ein kleines ansible-Textbuch für grundlegende Einrichtung eines Servers zu schreiben, aber meine Aufgaben von Rollen ablehnen zu laufen :))ansible Playbook läuft nicht Aufgaben von Rollen

Textbuch diese Verzeichnisstruktur hat:

└── install 
├── group_vars 
│   └── all.yml 
├── roles 
│   ├── basic_setup 
│   │   └── tasks 
│   │    └── main.yml 
│   └── user_management 
│    └── tasks 
│     └── main.yml 
└── setup.yml 

setup.yml wie folgt aussieht:

--- 

- hosts: '{{ target }}' 
    become: yes 
    remote_user: root 
    roles: 
    - { role: basic_setup } 
    - { role: user_management } 

Und zum Beispiel meine install/roles/basic_setup/tasks/main.yml wie folgt aussieht:

--- 

- name: Install python2.7 
    raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal) 
    when: ansible_os_family == "Debian" 

- name: 'test this playbook' 
    shell: "echo 'hello world'" 

Wenn ich versuche, Textbuch ich diese Ausgabe erhalten zu laufen:

$ ansible-playbook install/setup.yml --ask-pass --user=root --extra-vars "target=192.168.1.228" -vvv 
Using /etc/ansible/ansible.cfg as config file 
SSH password: 
_____________________ 
< PLAYBOOK: setup.yml > 
--------------------- 
     \ ^__^ 
     \ (oo)\_______ 
      (__)\  )\/\ 
       ||----w | 
       ||  || 

1 plays in install/setup.yml 
____________ 
< PLAY RECAP > 
------------ 
     \ ^__^ 
     \ (oo)\_______ 
      (__)\  )\/\ 
       ||----w | 
       ||  || 

Datei install/roles/user_management/tasks/main.ym l sieht wie folgt aus:

--- 

- name: Ensure bogdan user 
    user: 
    name: admin 
    state: present 

- name: Ensure ssh key access 
    authorized_key: 
    key: "{{ lookup('file', key_path) }}" 
    user: admin 
    state: present 

- name: Ensure admin user user is sudoer 
    lineinfile: 
    dest: /etc/sudoers 
    line: "admin ALL=(ALL) NOPASSWD:ALL" 
    regexp: '^admin ALL\=' 
    state: present 
    validate: "visudo -cf %s" 

- name: Create deployer user 
    user: 
    name: deployer 
    state: present 

- name: Ensure ssh key access 
    authorized_key: 
    key: "{{ lookup('file', key_path) }}" 
    user: deployer 
    state: present 

mir jemand kann helfen, zu verstehen, was mache ich falsch?

+0

Können Sie bitte Cowsay deaktivieren (https://docs.ansible.com/ansible/faq.html#how-do-i-disable-cowsay). –

+0

@ Techraf, passiert nichts auf dem Remote-Server. Und lokal keine Ausgabe in Gegenwart. Ansible gibt nicht aus, wie viele Tasks ausgeführt werden, wie viele Rasks fehlgeschlagen sind usw. – kitz

+0

@el_wichtel, die Ausgabe ohne cowsay: '$ ansible-playbook install/setup.yml --ask-pass --extra-vars" Ziel = 192.168.1.228 "-vvvvv Verwenden von /etc/ansible/ansible.cfg als Konfigurationsdatei SSH-Passwort: Laden des Standard-Callback-Plugins vom Typ stdout, v2.0 von /usr/lib/python2.7/dist-packages/ ansible/plugins/Rückruf/__ init __ pyc PLAYBOOK:. setup.yml ********************************** ************************** 1 spielt in install/setup.yml PLAY REKAPITULATION *********** ************************************************** ******** ' – kitz

Antwort

1

Ihr Playbook ist in Ordnung. Das Problem liegt in Ihrer Befehls- und Inventardatei.

Ich habe noch nie gesehen, es funktioniert mit der Angabe einer IP-Adresse für Hosts: Feld.

Technisch gesehen, was Sie gerade tun, ist:

- hosts: '{{ target }}' # 192.168.1.228, comes from command line variable 
    become: yes 
    remote_user: root 

Was sollten Sie ist eine Bestandsdatei haben tun (inventory.ini), die zu einem Namen eine IP-Adresse abbildet, Syntax wie folgt:

[your_host] 
192.168.1.228 

das Textbuch bleibt gleich, aber auf der Kommandozeile tun Sie:

$ ansible-playbook install/setup.yml --ask-pass --user=root --extra-vars "target=your_host" -vvv 

Welche wird funktionieren. Es funktioniert auch mit der Verwendung des Hostnamens. (Full-Hostnamen in --Extra-VARs)

Ich bin nicht sicher, warum sie die IP-Adresse Beispiel in docs haben.

+0

Vielen Dank :) Es funktionierte wie ein Charme. – kitz