Je voudrais remplacer /etc/nginx/sites-enabled
avec un lien symbolique vers mon dépôt. J'essaie de le faire en utilisant le module file
, mais cela ne fonctionne pas car le module de fichier ne supprime pas un répertoire avec l'option force.
- name: setup nginx sites-available symlink
file: path=/etc/nginx/sites-available src=/repo/etc/nginx/sites-available state=link force=yes
notify: restart nginx
Je pourrais revenir à l'utilisation de Shell.
- name: setup nginx sites-available symlink
Shell: test -d /etc/nginx/sites-available && rm -r /etc/nginx/sites-available && ln -sT /repo/etc/nginx/sites-available /etc/nginx/sites-available
notify: restart nginx
Existe-t-il un meilleur moyen d'y parvenir au lieu de retomber en coquille?
Lorsque vous agissez, ce sont en fait des choses:
C'est probablement aussi la manière la plus propre de représenter dans Ansible:
tasks:
- name: remove the folder
file: path=/etc/nginx/sites-available state=absent
- name: setup nginx sites-available symlink
file: path=/etc/nginx/sites-available
src=/repo/etc/nginx/sites-available
state=link
force=yes
notify: restart nginx
Mais, toujours supprimer et ajouter le lien symbolique n'est pas si agréable, donc l'ajout d'une tâche pour vérifier la cible du lien peut être un ajout agréable:
- name: check the current symlink
stat: path=/etc/nginx/sites-available
register: sites_available
Et une condition "quand" à la tâche de suppression:
- name: remove the folder (only if it is a folder)
file: path=/etc/nginx/sites-available state=absent
when: sites_available.stat.isdir is defined and sites_available.stat.isdir