it-swarm.com.de

Wie kopiere ich Dateien mit relativ zur Rolle ansible?

Ich habe eine Kopieraufgabe in einer Rolle und ich hatte erwartet, dass die Position von src relativ zur Rolle selbst ist, nicht zum Playbook, das die Rollen aufruft.

Wie mache ich das und benutze die Dateien von myfrole/files aus einer Aufgabe in myrole/tasks, Ich möchte den Rollennamen nicht in den Pfad aufnehmen, da dies wenig sinnvoll ist. Wenn ich das tue, bricht es ab, wenn ich die Rolle dupliziere.

58
sorin

Wenn Sie keinen Pfad angeben, sondern nur den Dateinamen, wählt Ansible diesen automatisch aus dem Verzeichnis files der Rolle aus.

Zusätzlich gibt es seit Ansible 1.8 die Variable role_path, das Sie in Ihrer Kopie Aufgabe verwenden könnten.

- copy:
    src: "{{ role_path }}/files/foo.conf"
    dest: /etc/foo.conf
116
udondan

Sie müssen den Pfad der zu kopierenden Datei nicht angeben, solange sie im Verzeichnis files gespeichert ist.

So sollte Ihre Rolle aussehen:

my-awesome-role
├───files
│       my-awesome-file
└───tasks
        main.yml

Und so rufen Sie copy im tasks/main.yml Auf:

- copy:
    src: my-awesome-file
    dest: '{{ some_destination }}'
4
avi.elkharrat