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