2016-01-13 3 views
2

Я пытаюсь объединить переменную в себя в цикле воспроизведения Ansible, но я не могу этого сделать. Могло бы быть простым, но неспособным достичь этого.Переключить переменную в себя в Ansible

Что я здесь делаю.

- name: all directories 
    set_fact: all_dir={{ item }} 
    with_items: 
    - src/main/java 
    - src/main/test 
    - src/main/resources 

- debug: var=all_dir  

Ожидаемые результаты в all_dir

src/main/java src/main/test src/main/resources 

Я попытался join. Любое предложение?

+0

Вы не можете использовать это с 'join', потому что вы просто установив три факта вместо создания объединенном переменной. Сделайте эту работу на 'vars', как @udondan ответил –

+0

Спасибо за ваше предложение. У меня есть эта задача в моей игровой книге. и я динамически беру каталоги из файла. Поэтому я не мог писать в «vars». – Roopendra

ответ

3

join - это то, что вы должны использовать.

- hosts: 127.0.0.1 
    connection: local 
    vars: 
    dirs: 
     - src/main/java 
     - src/main/test 
     - src/main/resources 
    all_dir: "{{ dirs | join(' ') }}" 
    tasks: 
    - debug: var=all_dir 

Или через set_fact:

- hosts: 127.0.0.1 
    connection: local 
    vars: 
    dirs: 
     - src/main/java 
     - src/main/test 
     - src/main/resources 
    tasks: 
    - set_fact: 
     all_dir: "{{ dirs | join(' ') }}" 
    - debug: var=all_dir 

TASK: [debug var=all_dir] ***************************************************** 
ok: [127.0.0.1] => { 
    "var": { 
     "all_dir": "src/main/java src/main/test src/main/resources" 
    } 
} 
+0

Спасибо за ваш ответ. Ваши решения имеют отношение ко мне. Но я использую эту задачу в своем учебнике по игре, и я динамически роняю в этом плейбуке. Итак, есть ли способ сделать это через set_fact? – Roopendra

+0

Вы также можете использовать 'set_fact'. Я добавил альтернативный пример выше. – udondan

Смежные вопросы