Wie kopiere ich Dateien mit ansible relativ zur Rolle?

78

Ich habe eine Kopieraufgabe in einer Rolle und hatte erwartet, dass der srcSpeicherort relativ zur Rolle selbst ist, nicht zum Playbook, in dem die Rollen aufgerufen werden.

Wie mache ich das und verwende die Dateien aus myfrole/fileseiner darin enthaltenen Aufgabe? myrole/tasksIch möchte den Rollennamen nicht als Teil des Pfads einfügen, da dies nicht sehr sinnvoll ist. Wenn ich das tue, wird es kaputt gehen, wenn ich die Rolle dupliziere.

Sorin
quelle

Antworten:

154

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

Darüber hinaus gibt es seit Ansible 1.8 die Variable, role_pathdie Sie für Ihre Kopieraufgabe verwenden können .

- copy:
    src: "{{ role_path }}/files/foo.conf"
    dest: /etc/foo.conf
Udondan
quelle
27

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

So sollte Ihre Rolle aussehen:

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

Und hier ist die Möglichkeit, copy in the aufzurufen tasks/main.yml:

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