如何在 Ansible 中将 array_name 动态分配给 with_items

如何在 Ansible 中将 array_name 动态分配给 with_items

我有一个 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 }}"

因此,vars 中提到的 server_vaar 的值将作为额外变量从 Splunk 传递给脚本,或者在 ansible 脚本运行时手动传递。

此 server_vaar 值可以是 servers_groupA、servers_groupB、servers_groupC、servers_groupD。我们需要将此名称传递给“将主机动态添加到清单”任务中的 with_items。这样它就会转到 json 文件中的该数组并将该列表中的 server_name 传递给清单,并创建一个组“testing_servers_group”作为清单组。

因此我传入了 with_items: "{{ server_vaar}}",其应被视为 with_items: "{{ servers_groupA }}"

但是它为该 server_vaar 抛出了“未定义变量”的错误。我找不到将此组名传递给 with items 的解决方案。有人能给我一些关于我面临的这个问题的想法吗?

答案1

使用抬头插入瓦尔斯。 例如

loop: "{{ lookup('vars', server_vaar) }}"

相关内容