Возможные переменные между playbooks - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать рабочий процесс, в котором первый playbook запускается на хостах Windows, задаю некоторую переменную со всеми именами хостов, для которых она выполняется.Второй playbook должен прочитать эту переменную и создать каталог в unix с именем хоста windows.

Пробовал использовать set_stats в первом playbook, но переменная объединяется со всеми именами хостов, и в Unix создается один каталог с большой строкой.

Любые обходные пути или предложения для достижения этой цели.

Playbook работает в Windows
- имя: установить имя хоста в переменной
set_stats:
data:
current_hostname: "{{ansible_hostname}}"
per_host: no

Playbook работает в Unix

  • name: создает каталог UNIX
    файл:
    путь: "{{ARCH_DIR_LOC + current_hostname + '/'}}"
    состояние: каталог
    режим: 0777

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Я смог написать скрипт, как показано ниже, и работал на меня:

  vars:  
   win_host_names: []  
  tasks:  
  - name: prepare list  
    set_fact:  
     win_host_names: "{{ win_host_names }} + [ '{{ ansible_facts.hostname }}' ]"  

  - name: set stats 
    set_stats:  
        data:  
          current_hostname_list: "{{ win_host_names }}"  
        per_host: no  
0 голосов
/ 06 декабря 2018

Нет способа сохранить переменные между запусками Ansible.Но есть хитрость: вы можете сохранить переменные в файле yaml / json (на локальном хосте), а затем использовать include_vars для их загрузки.

сохранение:

- copy:
    content: '{{ my_variable|to_json }}'
    dest: foo.json
  delegate_to: localhost

загрузка:

- include_vars:
    file: foo.json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...