[英]how to deal with include space keys in JSON array when reading in Ansible
下面是我的 JSON 文件:
{
"changed": false,
"invocation": {
"module_args": {
"cucm_ip": "1.1.1.1",
"cucm_option": "DBREPLICATION",
"cucm_pwd": "123",
"cucm_user": "123"
}
},
"meta": [
{
"DB/RPC/DBMON?": "Y/Y/Y",
"IP_ADDRESS": "1.1.1.1",
"PING (msec)": "0.029",
"REPL.QUEUE": "0",
"REPLICATION SETUP (RTMT) & Details": "(2) Setup Completed",
"Replication Group ID": "(g_2)",
"SERVER_NAME": "bopub1"
},
{
"DB/RPC/DBMON?": "Y/Y/Y",
"IP_ADDRESS": "1.1.1.2",
"PING (msec)": "0.175",
"REPL.QUEUE": "0",
"REPLICATION SETUP (RTMT) & Details": "(2) Setup Completed",
"Replication Group ID": "(g_3)",
"SERVER_NAME": "bosub1"
},
{
"DB/RPC/DBMON?": "Y/Y/Y",
"IP_ADDRESS": "1.1.1.3",
"PING (msec)": "0.293",
"REPL.QUEUE": "0",
"REPLICATION SETUP (RTMT) & Details": "(2) Setup Completed",
"Replication Group ID": "(g_6)",
"SERVER_NAME": "bosub2"
}
]
}
我需要從鍵“REPLICATION SETUP (RTMT) & Details”中獲取值,如何實現這個……
我總是收到致命錯誤 '"msg": "在模板化 '{{ item.'REPLICATION SETUP (RTMT) & Details' }}' 時發生未處理的異常。錯誤是 <class 'ansible.errors.AnsibleError'>,原始message: template error while templating string: expected name or number. String: {{ item.'REPLICATION SETUP (RTMT) & Details' }}"'..
問: “從鍵‘REPLICATION SETUP (RTMT) & Details’獲取值”
A:把文件中的JSON讀入字典
- include_vars:
file: data.json
name: data
給
data: changed: false invocation: module_args: cucm_ip: 1.1.1.1 cucm_option: DBREPLICATION cucm_pwd: '123' cucm_user: '123' meta: - DB/RPC/DBMON?: Y/Y/Y IP_ADDRESS: 1.1.1.1 PING (msec): '0.029' REPL.QUEUE: '0' REPLICATION SETUP (RTMT) & Details: (2) Setup Completed Replication Group ID: (g_2) SERVER_NAME: bopub1 - DB/RPC/DBMON?: Y/Y/Y IP_ADDRESS: 1.1.1.2 PING (msec): '0.175' REPL.QUEUE: '0' REPLICATION SETUP (RTMT) & Details: (2) Setup Completed Replication Group ID: (g_3) SERVER_NAME: bosub1 - DB/RPC/DBMON?: Y/Y/Y IP_ADDRESS: 1.1.1.3 PING (msec): '0.293' REPL.QUEUE: '0' REPLICATION SETUP (RTMT) & Details: (2) Setup Completed Replication Group ID: (g_6) SERVER_NAME: bosub2
將密鑰“REPLICATION SETUP (RTMT) & Details”放入變量中。 如果使用單引號,則不必轉義特殊字符。 聲明變量
rsd: "{{ data.meta|map(attribute=my_key)|list }}"
my_key: 'REPLICATION SETUP (RTMT) & Details'
給
rsd:
- (2) Setup Completed
- (2) Setup Completed
- (2) Setup Completed
用於測試的完整劇本示例
- hosts: localhost vars: rsd: "{{ data.meta|map(attribute=my_key)|list }}" my_key: 'REPLICATION SETUP (RTMT) & Details' tasks: - include_vars: file: data.json name: data - debug: var: data - debug: var: rsd
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.