Как перебрать диктовку списков и передать переменные в роль Ansible? - PullRequest
0 голосов
/ 05 марта 2019

У меня есть роль Ansible, которая использует переменные: connection_name, connection_ip и т. Д. Для создания соединения.

В моих файлах hosts у меня могло быть множество «соединений», и я определил его каксловарь списков:

host_file:
hosts:
    host_one:
        domain: one
        ip: 172.18.1.1
        connection:
                - connection_name: two
                  connection_ip: 172.18.1.2

                - connection_index: three
                  local_hub_ip: 172.18.1.3

    host_two:
        domain: two
        ip: 172.18.1.2

    host_three:
        domain: three
        ip: 172.18.1.3

Как передать каждый объект «подключения» в мою роль Ansible, чтобы он мог использовать вложенные переменные «имя_соединения» и «имя_соединения»?Я попытался использовать «with_items» и «with_dict» следующим образом:

---
- name: Creating new connection
  hosts: "{{ host_name }}"
  gather_facts: no
  become: yes
  remote_user: "{{ user | default('root')}}"
  tasks:
      - include_role:
            name: connection-create
         with_items: "{{connection}}"

Но я получаю «FAILED: имя_соединения не определено», потому что оно передается в объекте как {"connection_name": two, "connection_ip": 172.18.1.2} вместо внутренней части" имя_соединения ": два," имя_соединения ": 172.18.1.2 без {}.

1 Ответ

0 голосов
/ 06 марта 2019

В вашем случае connection - это список словарей,

, поэтому используйте item.connection_name и item.connection_ip в своем задании.

Посмотрите официальный документ на петли playbook

...