Ansible json_查询-与语法斗争

Ansible json_查询-与语法斗争,ansible,json-query,Ansible,Json Query,我已经阅读了和以及相关的 我仍然不知道应该使用什么样的语法。我正在尝试以下方法: # 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-ba

我已经阅读了和以及相关的

我仍然不知道应该使用什么样的语法。我正在尝试以下方法:

# 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}"
这总是会导致错误(在第二个任务中):
该任务包含一个带有未定义变量的选项。错误是:“负载\u平衡器\u dns”未定义

elb_应用程序\u lb_facts
的JSON输出包括
dns_name
canonical_hosted_zone_id
键,它们与
load_balancer_name
处于同一级别(不嵌套在任何地方)

有人能帮我解释一下语法吗?

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

此处记录:

# 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}"