方括号和单引号内的 Ansible 变量 [' ']

Ansible Variable Within square brackets and single quotes [' ']

大家好,谁能告诉我如何在方括号和单引号内格式化变量。

我正在使用库存组,但希望有一个我可以更改并被引用的变量,即

_devices:
   - webservers

并且我希望在以下内容中使用 var _devices

`groups[' ']` 

所以我只有一个条目要更改,而不是整个剧本。用[' ']

努力逃离"{{ _devices }}"

groups['"{{_ devices }}"']

{% for host in groups['webservers'] %}
{{ hostvars[host][‘ansible_host’] }}
{% endfor %}

您将字符串文字与变量引用混为一谈;任何时候发现自己试图使用嵌套的 jinja2 胡子,这是一个错误

你所说的 [] 意味着你期望 devices 实际上是一个组名列表,在这种情况下你会希望 | extract filter 应用 [groups[g_name] for g_name in devices](遗憾的是 jinja2 不理解这样的列表理解)。然后,因为每个 extract 运行 本身就是一个 list[str],这意味着输出将是 list[list[str]],但您只需要 list[str],您将应用|flatten 将它们折叠成一个列表

- debug:
    msg: >-
      all hosts in devices are: {{ devices | map("extract", groups) | flatten | list }}
  vars:
    devices:
    - webservers