playbook - ¿Cómo reemplazar un directorio con un enlace simbólico usando ansible?
ansible_user ansible_password (1)
Cuando tomas tu acción, en realidad son cosas:
- borrar una carpeta
- añadir un enlace simbólico en su lugar
Esta es probablemente también la forma más limpia de representar en 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
Pero, eliminar y agregar siempre el enlace simbólico no es tan bueno, así que agregar una tarea para verificar el objetivo del enlace podría ser una buena adición:
- name: check the current symlink
stat: path=/etc/nginx/sites-available
register: sites_available
Y una condición ''cuando'' para la tarea de eliminar:
- 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
Me gustaría reemplazar /etc/nginx/sites-enabled
con un enlace simbólico a mi repositorio. Estoy tratando de hacer esto usando file
módulo de file
, pero eso no funciona ya que el módulo de archivo no elimina un directorio con la opción de forzar.
- 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
Podría volver a usar 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
¿Hay alguna manera mejor de lograr esto en lugar de volver a caer en la concha?