0

我已经阅读了这个问题这个问题以及相关的Ansible 文档

我仍然无法弄清楚要使用的正确语法是什么。我正在尝试以下操作:

# Find all of the load-balancers reference
- name: Gather facts about all load-balancers
  elb_application_lb_facts:
  register: load_balancers

# Get the load-balancer we want
- name: Find the correct load-balancer
  set_fact:
    load_balancer_dns: "{{ load_balancer_dns }}"
    elb_zone_id: "{{ elb_zone_id }}"
  with_items: "{{ load_balancers | json_query(lb_query) }}"
  vars:
    lb_query: "load_balancers[?load_balancer_name=='{{load_balancer_name}}'].{load_balancer_dns: dns_name, elb_zone_id: canonical_hosted_zone_id}"

这总是会导致错误(在第二个任务中) The task includes an option with an undefined variable. The error was: 'load_balancer_dns' is undefined:.

来自 的 JSON 输出elb_application_lb_facts确实包括dns_namecanonical_hosted_zone_id键,它们与load_balancer_name(未嵌套在某处)处于同一级别。

请问有人可以帮我解决这个问题吗?

4

1 回答 1

0

设置事实时需要包含“item”,因为您正在循环“with_items”:

# Get the load-balancer we want
- name: Find the correct load-balancer
  set_fact:
    load_balancer_dns: "{{ item.load_balancer_dns }}"
    elb_zone_id: "{{ item.elb_zone_id }}"
  with_items: "{{ load_balancers | json_query(lb_query) }}"
  vars:
    lb_query: "load_balancers[?load_balancer_name=='simple-application-load-balancer'].{load_balancer_dns: dns_name, elb_zone_id: canonical_hosted_zone_id}"

记录在这里:https ://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#with-items

于 2018-08-13T10:45:45.133 回答