Création d'un lien symbolique avec ansible et une liste de variables

17

Tout nouveau sur ansible - j'essaie de lier un tas de fichiers d'un répertoire src à une destination. Actuellement:

  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

Je reçois l'erreur: fatal: [vmdev] => One or more undefined variables: 'item' is undefined

Quelqu'un peut-il m'orienter dans la bonne direction ..? À votre santé

williamsowen
la source

Réponses:

30

Votre indentation est erronée, with_itemsdevrait être au même niveau que file. Voici ce que vous voulez:

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
la source
Fonctionne comme un charme!
williamsowen
2
Si vous avez des problèmes avec la syntaxe / indentation, modifiez via atom + plugins: linter, ansible-linter, js-yaml-linter
Jonathan
7

Je crois que votre syntaxe est erronée. Essaye ça:

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
la source
3

Si les liens source et destination sont nommés de la même manière, cela devrait être encore plus simple:

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