Criando um link simbólico com ansible e uma lista de variáveis


17

Novo no ansible - Estou tentando vincular vários arquivos em um diretório src a um destino. Atualmente:

  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

Estou recebendo o erro: fatal: [vmdev] => One or more undefined variables: 'item' is undefined

Alguém pode me apontar na direção certa ..? Felicidades

Respostas:


30

Seu recuo está errado, with_itemsdeve estar no mesmo nível que file. Isso é o que você quer:

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

Funciona como um encanto!
williamsowen

2
Se você tiver problemas com a sintaxe / recuo, editar via átomo + plugins: linter, ansible-linter, JS-yaml-Linter
Jonathan

7

Acredito que sua sintaxe está errada. Tente o seguinte:

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

Se o link de origem e de destino tiver o mesmo nome, isso deverá ser ainda mais simples:

- file:
    src: /drupal/drush/{{ item }}.aliases.drushrc.php
    dest: /home/vagrant/.drush/{{ item }}.aliases.drushrc.php
    state: link
  with_items:
    - new
    - vmdev
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.