Создание символической ссылки с 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' }

Работает как шарм!
Уильямсовен

2
Если у вас есть проблемы с синтаксисом / отступами, отредактируйте с помощью атомов + плагинов: 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.