Tworzenie dowiązania symbolicznego z ansible i listą zmiennych

17

Zupełnie nowy w ansible - próbuję dowiązać kilka plików w katalogu src do miejsca docelowego. Obecnie:

  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

Pojawia się błąd: fatal: [vmdev] => One or more undefined variables: 'item' is undefined

Czy ktoś może skierować mnie w dobrym kierunku ...? Twoje zdrowie

williamsowen
źródło

Odpowiedzi:

30

Twoje wcięcie jest błędne, with_itemspowinno być na tym samym poziomie co file. To jest to, czego chcesz:

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
źródło
Działa jak marzenie!
williamsowen
2
Jeśli masz problemy ze składnią / wcięciem, edytuj za pomocą atomu + wtyczek: linter, ansible-linter, js-yaml-linter
Jonathan
7

Uważam, że twoja składnia jest nieprawidłowa. Spróbuj tego:

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
źródło
3

Jeśli zarówno link źródłowy, jak i docelowy mają taką samą nazwę, powinno to być jeszcze prostsze:

- file:
    src: /drupal/drush/{{ item }}.aliases.drushrc.php
    dest: /home/vagrant/.drush/{{ item }}.aliases.drushrc.php
    state: link
  with_items:
    - new
    - vmdev
gertas
źródło