Створення симпосилання з ansible та списком змінних


17

Зовсім нове для ansible - я намагаюся позначити купу файлів у каталозі src до місця призначення. На даний момент:

  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

Я отримую помилку: fatal: [vmdev] => One or more undefined variables: 'item' is undefined

Може хтось вказує мені в правильному напрямку ..? Ура

Відповіді:


30

Ваш відступ неправильний, with_itemsмає бути на тому ж рівні, що і file. Це те, що ви хочете:

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' }

Працює як шарм!
williamsowen

2
Якщо у вас є проблеми з синтаксисом / відступом, редагуйте за допомогою atom + plugins: linter, ansible-linter, js-yaml-linter
Jonathan

7

Я вважаю, що ваш синтаксис неправильний. Спробуйте це:

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' }

3

Якщо джерело та цільове посилання названі однаковими, то це має бути ще простішим:

- file:
    src: /drupal/drush/{{ item }}.aliases.drushrc.php
    dest: /home/vagrant/.drush/{{ item }}.aliases.drushrc.php
    state: link
  with_items:
    - new
    - vmdev
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.