2017-02-16 20 views
1

Так я имею ниже раздел в моей PlayBook:анзибль 1,8 не решает item.key в set_facts

- name: Loop hash 
    set_fact: 
    "{{ item.key }}": 
     instance_id: "{{ item.value.ansible_ec2_instance_id }}" 
     instance_az: "{{ item.value.ansible_ec2_placement_availability_zone }}" 
    with_dict: "{{ hostvars }}" 
    when: (item.value.ansible_ec2_instance_id is defined) and 
     (item.value.ansible_ec2_placement_availability_zone is defined) 

когда я проверяю выход это не разрешающую item.key

'item.key': {'instance_id': u'i-abc12345678', 'instance_az': u'ap-southeast-2b'} 

любой идеи о том, что происходит?

редактировать:

погрешность предлагаемого решения:

ERROR: Syntax Error while loading YAML script, /apps/co-playbooks/common/tasks/elb_check_instances.yml 
Note: The error may actually appear before this position: line 40, column 18 

    { "{{ item.key }}": 
     instance_id: "{{ item.value.ansible_ec2_instance_id }}" 
       ^
We could be wrong, but this one looks like it might be an issue with 
missing quotes. Always quote template expression brackets when they 
start a value. For instance: 

попытался другой синтаксис:

- name: Loop hash 
    set_fact: 
    { "{{ item.key }}": 
     { instance_id: "{{ item.value.ansible_ec2_instance_id }}", 
     instance_az: "{{ item.value.ansible_ec2_placement_availability_zone }}" }} 

    with_dict: "{{ hostvars }}" 
    when: (item.value.ansible_ec2_instance_id is defined) and 
     (item.value.ansible_ec2_placement_availability_zone is defined) 

еще не решает item.key

'{# item.key #}': {'instance_id': u'i-abc1234567', 'instance_az': u'ap-southeast-2b'} 

ответ

0

Добавьте одну пару от { } вне задачи set_fact.

- name: Loop hash 
    set_fact: 
    { "{{ item.key }}": 
     instance_id: "{{ item.value.ansible_ec2_instance_id }}" 
     instance_az: "{{ item.value.ansible_ec2_placement_availability_zone }}" } 
    with_dict: "{{ hostvars }}" 
    when: (item.value.ansible_ec2_instance_id is defined) and 
     (item.value.ansible_ec2_placement_availability_zone is defined) 
+0

Привет, BMW, спасибо за ответ. Это не похоже на новый формат и дает мне синтаксическую ошибку. Я обновил свой оригинальный вопрос, так как этот раздел комментариев не отображает синтаксис. –