Как установить несколько фактов из dict? - PullRequest
0 голосов
/ 30 марта 2020

Аналогично: Установить факт с помощью динамического c имени ключа в ansible

У меня есть собственный плагин, который возвращает словарь. Я хотел бы установить диктат как множество фактов на хосте, но набор фактов не работает, как ожидалось. Как правильно установить несколько фактов из выражения шаблона в Ansible?

Это не работает.

# Should set "name", "uuid"
- set_fact: "{{ plugin_returns_a_dict(inventory_hostname) }}"
# Evaluates to false
- assert:
    that: name is defined

Это работает.

# Should set "name", "uuid"
- with_dict: "{{ plugin_returns_a_dict(inventory_hostname) }}" 
  set_fact: { "{{ item.key }}": "{{ item.value }}" }
# Evaluates to true
- assert:
    that: name is defined

1 Ответ

0 голосов
/ 30 марта 2020

вы пытались использовать vars?

Вы можете построить структуру json следующим образом:

  vars:
    user:
     name: "{{ first }}.{{ second }},"
     date: "{{ day }}.{{ month }}"

это можно использовать со многими ansible модулями

- name: add line to a the end of the file
  lineinfile:
    dest: "{{ destination }}/{{ file }}.json"
    line: "{{ user|to_json }}"
    insertafter: EOF
  vars:
    user:
     name: "{{ first }}.{{ second }},"
     date: "{{ day }}.{{ month }}"
...