簡體   English   中英

讀取Ansible時如何處理JSON數組中包含空格鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM