我有一个 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 项目的解决方案。谁能给我一些关于我面临的这个问题的想法。
使用查找插件vars。例如