2016-11-16 2 views
1

私はAnsible/Jinjaを初めて使うので、これはおそらく基本的な質問です。URI&XMLモジュールを使用した可能な変数割り当て

--- 
- name: Test PAN API 
    hosts: fw 
    connection: local 
    gather_facts: False 

    tasks: 
    - name: Calling API System Info 
    action: uri url=https://192.168.1.10/api/?type=op&cmd=<show><system><info></info></system></show>&key=thisismysecretkey return_content=yes validate_certs=no 
    register: result 
    - name: Set variable 
    set_fact: sysinfo="{{ result.content }}” 
    - name: Parsing XML response 
    action: xml xmlstring="{{ sysinfo }}" xpath=//system/* content=text 
    register: hn 
    - debug: var=hn.matches['hostname'] 

私は変数のようにホスト名= PA-VMなどにXMLノードのそれぞれを解析したいのですが、次のように私は、ネットワークデバイスへのREST API呼び出しを行うために、コアURIモジュールを使用しています

TASK [debug var=sysinfo] ******************************************************* 
ok: [pan] => { 
    "changed": false, 
    "sysinfo": "<response status=\"success\"><result><system><hostname>PA-VM</hostname><ip-address>192.168.1.10</ip-address><netmask>255.255.255.0</netmask></system></result></response>" 
} 

TASK [Testing XML] ************************************************************* 
ok: [pan] 

TASK [debug var=hn.matches] **************************************************** 
ok: [pan] => { 
    "changed": false, 
    "hn.matches": [ 
     { 
      "hostname": "PA-VM" 
     }, 
     { 
      "ip-address": "192.168.1.10” 
     }, 
     { 
      "netmask": "255.255.255.0" 
     } 
    ] 
} 

私は別の神社フィルタを試してきましたが、私は、単純な何かが欠けていたかのように私は感じる:ここでは、応答は次のようになります。 hn.matchesはリストであり、各キー値のペアは文字列であるようです。例えば、もし私...

- debug: var=hn.matches[0] 

私は...本当に素晴らしいされるもの

TASK [debug var=hn.matches[0]] ************************************************* 
ok: [pan] => { 
    "changed": false, 
    "hn.matches[0]": { 
     "hostname": "PA-VM" 
    } 
} 

を取得...

ジャストクリーン/最高を探して
set_fact: hn="{{ response.result.system.hostname }}" 

正規表現を使わずに

答えて

0

mapselectフィルタの組み合わせを使用します。

- debug: msg="{{ hn.matches | map(attribute='hostname') | select('defined') | first }}" 
+0

ありがとうございました - それをやっています! – 66pontiac

関連する問題