2016-11-11 49 views
0

我是相當新的ansible,並試圖探索詞典插件選項。 下面是我的劇本,我想使用from_json模塊將json文件轉換爲字典,然後我只想打印特定的鍵。 無法實現第二部分。Ansible:with_dict訪問從json文件創建的字典的特定鍵

下面的代碼:

hosts: localhost 
vars: 
    jsonVar: "{{ lookup('file', 'ConfigData.json') | from_json }}" 

tasks: 
    - name: print numbers 
    debug: msg=" {{ jsonVar.cpsSiteName }}" 
    debug: msg=" {{ jsonVar.dmsDataCacheAddress }}" 
    debug: msg=" {{ jsonVar.htsHttpClientIdleConnectionTimeout }}" 
    debug: msg=" {{ jsonVar.palConsulServerList }}" 
    debug: msg=" {{ jsonVar.prsMaxIncoReqProcTime }}" 
    debug: msg=" {{ jsonVar.prsMaxNumberOfExecutedScriptInstructions }}" 
    debug: msg=" {{ jsonVar.prsmschapv2Password }}" 

輸出只顯示最後調試語句。 渴望知道是否有更聰明的方式從轉換的字典訪問特定的變量,然後在輸出處打印出來。

我試着用with_items,但不起作用。 感謝您的幫助提前。

下面是一個示例JSON文件:

[email protected]:/etc/ansible# less ConfigData.json 
    { 
     "appSupCommonPullSendProxyAuthInfo":0, 
     "appSupCommonPullSendWebAuthInfo":0, 
     "appSupDdcSupervisionEnabled":1, 
     "appSupDdcSupervisionInterval":15, 
     "appSupDdcSupervisionMaxNoOfFailures":4, 
     "appSupDNS_number_consequtive_failures":5, 
     "appSupDNS_supervision_interval":60, 
    } 

回答

0

你的劇本語法不正確 - 有定義的只有一個任務(每個任務應該開始爲新的列表項(破折號))。

不知道你的問題是什麼,但打印不同任務的所有增值經銷商可以使用:

- hosts: localhost 
    vars: 
    jsonVar: "{{ lookup('file', 'ConfigData.json') | from_json }}" 
    tasks: 
    - debug: msg=" {{ jsonVar.cpsSiteName }}" 
    - debug: msg=" {{ jsonVar.dmsDataCacheAddress }}" 
    - debug: msg=" {{ jsonVar.htsHttpClientIdleConnectionTimeout }}" 
    # etc...