Crear un enlace simbólico con ansible y una lista de variables

17

Nuevo para ansible: estoy tratando de vincular un montón de archivos en un directorio src a un destino. Actualmente:

  file:
    src: /drupal/drush/{{ item.path }}.aliases.drushrc.php
    dest: /home/vagrant/.drush/{{ item.dest }}.aliases.drushrc.php
    with_items:
      - { path: 'new', dest: 'new' }
      - { path: 'vmdev', dest: 'vmdev' }
    state: link

Me sale el error: fatal: [vmdev] => One or more undefined variables: 'item' is undefined

¿Alguien puede señalarme en la dirección correcta ...? Salud

williamsowen
fuente

Respuestas:

30

Su sangría es incorrecta, with_itemsdebe estar al mismo nivel que file. Esto es lo que quieres:

file:
  src: "/drupal/drush/{{ item.path }}.aliases.drushrc.php"
  dest: "/home/vagrant/.drush/{{ item.dest }}.aliases.drushrc.php"
  state: link
with_items:
  - { path: 'new', dest: 'new' }
  - { path: 'vmdev', dest: 'vmdev' }
dtoubelis
fuente
¡Funciona de maravilla!
williamsowen
2
Si tiene problemas con la sintaxis / sangría, edite a través de atom + plugins: linter, ansible-linter, js-yaml-linter
Jonathan
7

Creo que tu sintaxis está mal. Prueba esto:

file: >
  src=/drupal/drush/{{ item.path }}.aliases.drushrc.php
  dest=/home/vagrant/.drush/{{ item.dest }}.aliases.drushrc.php
  state=link
with_items:
  - { path: 'new', dest: 'new' }
  - { path: 'vmdev', dest: 'vmdev' }
EEAA
fuente
3

Si tanto el enlace de origen como el de destino tienen el mismo nombre, eso debería ser aún más simple:

- file:
    src: /drupal/drush/{{ item }}.aliases.drushrc.php
    dest: /home/vagrant/.drush/{{ item }}.aliases.drushrc.php
    state: link
  with_items:
    - new
    - vmdev
gertas
fuente