Erstellen eines Symlinks mit Ansible und einer Liste von Variablen

17

Ganz neu für Ansible - Ich versuche, eine Reihe von Dateien in einem src-Verzeichnis mit einem Ziel zu verknüpfen. Derzeit:

  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

Ich erhalte den Fehler: fatal: [vmdev] => One or more undefined variables: 'item' is undefined

Kann mich jemand in die richtige Richtung lenken? Prost

williamsowen
quelle

Antworten:

30

Ihre Einrückung ist falsch, with_itemssollte auf der gleichen Ebene sein wie file. Das ist, was du willst:

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
quelle
Klappt wunderbar!
Williamsowen
2
Wenn Sie Probleme mit der Syntax / Einrückung haben, bearbeiten Sie diese über Atom + Plugins: linter, ansible-linter, js-yaml-linter
Jonathan
7

Ich glaube deine Syntax ist falsch. Versuche dies:

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
quelle
3

Wenn sowohl Quell- als auch Ziel-Link gleich heißen, sollte das noch einfacher sein:

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