vars playbook ansible_user ansible_password ansible ansible-playbook

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?