Ansible json_query - 在语法上苦苦挣扎
Ansible json_query - struggling with syntax
我已阅读 and as well as the relevant Ansible documentation。
我仍然无法弄清楚要使用的正确语法是什么。我正在尝试以下操作:
# 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
。
elb_application_lb_facts
的 JSON 输出包含 dns_name
和 canonical_hosted_zone_id
键,它们与 load_balancer_name
处于同一级别(未嵌套某处)。
有人可以帮我解决这个问题吗?
您需要在设置事实时包含 "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
我已阅读
我仍然无法弄清楚要使用的正确语法是什么。我正在尝试以下操作:
# 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
。
elb_application_lb_facts
的 JSON 输出包含 dns_name
和 canonical_hosted_zone_id
键,它们与 load_balancer_name
处于同一级别(未嵌套某处)。
有人可以帮我解决这个问题吗?
您需要在设置事实时包含 "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