【问题标题】:Ansible json_query - struggling with syntaxAnsible json_query - 在语法上苦苦挣扎
【发布时间】:2019-01-20 01:04:35
【问题描述】:

我已阅读this questionthis one 以及相关的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_namecanonical_hosted_zone_id 键,它们与 load_balancer_name 处于同一级别(未嵌套在某处)。

请有人帮我解决这个问题的语法吗?

【问题讨论】:

    标签: ansible json-query


    【解决方案1】:

    您需要在设置事实时包含“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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多