Назад | Перейти на главную страницу

Как динамически назначить array_name для with_items в Ansible

У меня есть файл 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) }}"