【问题标题】:How to create dynamic list in yaml?如何在 yaml 中创建动态列表?
【发布时间】:2015-06-24 15:08:41
【问题描述】:

我正在尝试渲染模板。我必须创建一个列表为

host:
- '111.222.333.444'
- '555.666.777.888'

必须从另一个主机文件中获取。

我正在使用这样的东西:

{% for host in groups['hostgroup'] %}
host: {{ host }}
{% endfor %}

实现结果的正确方法是什么?

【问题讨论】:

标签: yaml ansible ansible-playbook


【解决方案1】:

假设您希望在清单中声明一个名为 host 的变量,其中包含一个 IP 地址列表,您可以尝试:

host: {{ groups['hostgroup'] }}

或者您可以跳过声明此变量并在您打算使用{{ host }} 的任何地方直接使用{{ groups['hostgroup'] }}

如果你想引用的话,看看add-quotes-join thread 和这个filter plugin

编辑: 假设你正在渲染一个模板,使用 ansible template 模块

host:
{% for host in groups['hostgroup'] %}
 - '{{ host }}'
{% endfor %}

【讨论】:

  • 这让我到达host: ['111.222.333.444', '555.666.777.888'] 我想要问题中显示的格式。
  • 您是在尝试初始化host 变量还是在渲染模板?
  • 渲染模板。
  • 编辑了我的答案,但似乎太简单了,我猜你的意图不同。
  • 在 for 循环中有 host: 真是太愚蠢了。
猜你喜欢
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2017-06-11
  • 2021-02-23
相关资源
最近更新 更多