2014-07-03 5 views
10

Ich benutze Ansible und ich habe einige Probleme mit dem Vorlagenpfad. Hier ist der Fehler ausgegeben, wenn ich ausführen:Warum liest Ansible die Vorlagen nicht im relativen Pfad?

$ ansible-playbook -i hosts site.yml 

PLAY [users] ****************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [10.0.3.240] 

TASK: [templates] ************************************************************* 
fatal: [10.0.3.240] => {'msg': 'unable to read /home/robe/Desktop/ansible_demo/fig.conf.j2', 'failed': True} 
fatal: [10.0.3.240] => {'msg': 'unable to read /home/robe/Desktop/ansible_demo/fig.conf.j2', 'failed': True} 

FATAL: all hosts have already failed -- aborting 

PLAY RECAP ******************************************************************** 
      to retry, use: --limit @/home/robe/site.retry 

10.0.3.240     : ok=1 changed=0 unreachable=1 failed=0 

Es ist meine Projektstruktur:

$ tree 
. 
├── ansible.cfg 
├── hosts 
├── roles 
│   └── users 
│    ├── files 
│    ├── handlers 
│    │   └── main.yml 
│    ├── tasks 
│    │   └── main.yml 
│    ├── templates 
│    │   └── fig.conf.j2 
│    └── vars 
│     └── main.yml 
├── site.yml 
└── Vagrantfile 

Es ist mein site.yml Code:

--- 
- hosts: users 
    remote_user: root 
    sudo: True 
    tasks: 
    - name: templates 
    template: src="fig.conf.j2" dest="/home/vagrant/fig.conf" 

Dann warum ansible doesn‘ t schau in Vorlagen Verzeichnis und es sieht nur im Stammverzeichnis.

+0

Warum rufst du 'template' nicht von Benutzern/tasks/main.yml? Die 'fig.conf' ist eindeutig Teil der 'Benutzer'-Rolle. – tedder42

Antwort

16

Ansible sucht nur im Verzeichnis roles/users/templates, wenn Sie explizit die Rolle "users" verwenden, die Sie in Ihrem Beispiel nicht verwenden. Zu tun, was Sie wollen, müssen Sie Ihre site.yml ändern etwas wie folgt aussehen:

- hosts: users 
    remote_user: root 
    sudo: True 
    roles: 
    - { role: users } 

Dann in Rollen/Benutzer/Aufgaben/main.yml würden Sie haben:

- name: templates 
    template: src="fig.conf.j2" dest="/home/vagrant/fig.conf" 

Die Rolle in site.yml teilt Ansible mit, die yaml-Datei roles/users/main.yml aufzurufen. Aufgaben, die sich auf Dateien oder Vorlagen in dieser Rolle beziehen, suchen standardmäßig in den Rollen/Benutzer/Dateien und Rollen/Benutzer/Vorlagen für diese Dateien/Vorlagen. Vielleicht möchten Sie mehr über Rollen in der Ansible documentation lesen, um sicherzustellen, dass Sie besser verstehen, wie sie zusammenpassen.

Verwandte Themen