У меня есть файл json (server.json) с таким содержимым:
servers_groupA: [{server_name: server1abc.net, start_file: w.bat, stop_file: d.bat},
{server_name: server2.abc.net, start_file: w.bat, stop_file: d.bat}
]
servers_groupB: [{server_name: server3.abc.net, start_file: e.bat, stop_file: f.bat},
{server_name: server4.abc.net, start_file: e.bat, stop_file: f.bat }
]
Я должен динамически назначить эти серверы группе с помощью следующего кода:
hosts: localhost
gather_facts: false
ignore_errors: yes
vars:
server_vaar: "servers_groupA"
#server_vaar: {{ server_group }}
tasks:
- name: Importing json file
include_vars:
file: server.json
- name: Adding host dynamically to inventory
add_host:
hostname: "{{ item.server_name }}"
groups: testing_servers_group
ansible_connection: winrm
ansible_port: 5985
ansible_winrm_transport: ntlm
ansible_winrm_scheme: http
ansible_winrm_server_cert_validation: ignore
ansible_winrm_operation_timeout_sec: 60
ansible_winrm_read_timeout_sec: 70
with_items: "{{ server_vaar }}"
Таким образом, значение server_vaar, указанное в vars, будет передано скрипту в качестве дополнительной переменной из Splunk или вручную при запуске скрипта ansible.
Это значение server_vaar может быть server_groupA, servers_groupB, servers_groupC, servers_groupD. Нам нужно передать это имя в with_items в ЗАДАЧЕ «Динамическое добавление хоста в инвентарь». Таким образом, он отправит этот массив в файл json и передаст имя_сервера из этого списка в инвентаризацию и создаст группу «testing_servers_group» в качестве группы инвентаризации.
Итак, я передал with_items: "{{server_vaar}}", который следует рассматривать как with_items: "{{servers_groupA}}"
Но это выдало ошибку как "неопределенную переменную" для этого server_vaar. Я не смог найти решение для передачи этого имени группы в with items. Может ли кто-нибудь дать мне некоторое представление об этой проблеме, с которой я столкнулся.
Использовать уважать плагин варс. Например
loop: "{{ lookup('vars', server_vaar) }}"