2017-02-15 51 views
0

我正在嘗試計算elb中的實例。這是我的Ansible劇本:Ansible顯示錯誤:「使用'with_items'時,一個或多個未定義的變量:'項目'未定義」

- name: Get elb facts 
    local_action: 
    module: ec2_elb_facts 
    name: "{{elb}}" 
    region: "{{ansible_ec2_placement_region}}" 
    environment: creds 
    register: elb_facts 

- debug: 
    var: elb_facts 
    verbosity: 2 

- debug: 
    msg: "Instance: {{ item.instances }}" 
    with_items: "{{ elb_facts.elbs }}" 

和我的輸出(刪除敏感數據):

TASK: [debug ] **************************************************************** 
ok: [10.0.0.0] => { 
    "elb_facts": { 
     "changed": false, 
     "elbs": [ 
      { 
       "availability_zones": [ 
        "ap-southeast-2b", 
        "ap-southeast-2a" 
       ], 
       "dns_name": "elbname123.ap-southeast-2.elb.amazonaws.com", 
       "health_check": { 
        "healthy_threshold": 2, 
        "interval": 10, 
        "target": "TCP:0000", 
        "timeout": 5, 
        "unhealthy_threshold": 2 
       }, 
       "instances": [ 
        { 
         "id": "i-000000000000000", 
         "state": null 
        } 
       ], 
       "name": "accessgateway", 
       "scheme": "internal", 
       "security_groups": [ 
        "sg-00000000" 
       ], 
       "subnet": [ 
        "subnet-0000000", 
        "subnet-1111111" 
       ], 
       "vpc_id": "vpc-000000" 
      } 
     ], 
     "invocation": { 
      "module_args": "", 
      "module_name": "ec2_elb_facts" 
     } 
    } 
} 

TASK: [debug ] **************************************************************** 
fatal: [10.0.0.0] => One or more undefined variables: 'item' is undefined 

FATAL: all hosts have already failed -- aborting 

那麼什麼即時試圖做的是通過公正循環和打印elb_facts裏面的一切,實例變量。從我可以告訴它是一個散列,包含一個哈希列表。

我使用http://docs.ansible.com/ansible/playbooks_loops.html#looping-over-subelements作爲參考。我不能爲了我的生活找出爲什麼這不起作用。

回答

4

with_items(以及整個with_循環系列)是在任務中定義的字典密鑰,而不是該操作的參數。

修復縮進:

- debug: 
    msg: "Instance: {{ item.instances }}" 
    with_items: "{{ elb_facts.elbs }}" 
+0

感謝那些工作! –