web-dev-qa-db-fra.com

Comment copier des fichiers avec ansible relativement au rôle?

J'ai une tâche de copie dans un rôle et je m'attendais à ce que l'emplacement src soit relatif au rôle lui-même, et non au playbook qui appelle les rôles.

Comment puis-je faire ce travail et utiliser les fichiers de myfrole/files d'une tâche à l'intérieur de myrole/tasks, Je ne souhaite pas inclure le nom du rôle dans le chemin car cela n’a pas beaucoup de sens. Si je le fais, cela casserait si je dupliquais le rôle.

58
sorin

Si vous ne fournissez aucun chemin, uniquement le nom du fichier, Ansible le choisira automatiquement dans le répertoire files du rôle.

De plus, depuis Ansible 1.8, il existe la variable role_path que vous pourriez utiliser dans votre tâche copie .

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

Vous n'avez pas besoin de spécifier le chemin du fichier à copier, tant qu'il est stocké dans le répertoire files.

Voici à quoi devrait ressembler votre rôle:

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

Et voici le moyen d'appeler copier dans le tasks/main.yml:

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