2017-09-22 13 views
-1

私は、次のコードを持っている:他の変数としてプロパティ名とansible変数のプロパティにアクセスする

- name: "Get output from ec2.py" 
    shell: python convinventory/ec2.py 
    register: ec2_py_output 
- set_fact: 
    EC2_MY_AP_HOST: "{{(ec2_py_output.stdout | from_json).myIPs[0]}}" 
- set_fact: 
    EC2_MY_AP_DATA: "{{ (ec2_py_output.stdout | from_json)._meta.hostvars. }}-{{EC2_IFX_AP_HOST}} " //Need to know the syntax on this line 

を私はEC2_MY_AP_HOST10.0.1.2

のような文字列のIPを返す私はpython convinventory/ec2.pyから受け取ったJSON構造は以下のようなものであることを確認しました:

{ 
    "_meta": { 
    "hostvars": { 
     "10.0.1.2": { 

    < need to access this data in EC2_MY_AP_DATA > 
} 
} } } 

このデータにアクセスする正しい方法は何ですか?

+0

私はこの質問を理解しようとしており、できません。 '10.0.1.2'と' 10.0.36.13'の関係は何ですか? 'myIPs'リストはどこに保存されていますか(明確にはっきりしていないので、あなたが投稿した例ではなぜそうではありませんか?どんなデータにアクセスする必要がありますか?あなたはドットの後に何を置くべきかを尋ねていますか(どのように誰が知ることができますか)?あなたは辞書 '10.0.36.13'を参照する方法を尋ねていますか?(それは同時に偶然' hostvars'という名前のファクトへのアクセスを記述するすべてのドキュメントとFAQにあります) – techraf

答えて

0

あなたの質問に答えるために:

- set_fact: 
    EC2_MY_AP_DATA: "{{ (ec2_py_output.stdout | from_json)._meta.hostvars[EC2_MY_AP_HOST] }}" 

をしかし、私の推測では、あなたが間違ったパス上にあるということです、そしてあなたは、このコードで解決しようとするタスクに別の解決策があります。