首页 > 解决方案 > ANSIBLE - 如何使用 with_items 和库存组生成“列表条目”列表

问题描述

我正在尝试通过使用 with_items 和某个库存组的主机列表来生成“列表条目”列表。例如:

如果我的清单中有两台主机

[myservice]
 10.0.0.1
 10.0.0.2

然后我想通过执行以下操作来创建一个 yaml 列表

service_clients:
- connection_type: "local"
  database: "all"
  user: "bob"
  address:"127.0.0.1/32"
- connection_type: "host"
  database: "all"
  user: "all"
  address: "::1/128"
- connection_type: "host"
  database: "myservicedb"
  user: "all"
  address: "{{ item }}/24"
  with_items: "{{groups['myservice']}}"

然而,上述失败。我无法遍历主机列表并创建 X,对于此示例,两个新元素。我怎样才能使这项工作?

提前谢谢你,ioigoume

标签: ansible

解决方案


你有一个非常模糊的要求。对于一个简单的配置文件,我会说您需要使用{% for %}Jinja 的功能。对于特定类型的迭代(只需用逗号加入它们),可以使用|join()Jinja 的过滤器。

但是您已经要求一种通过with_items.

这是一种构造列表的方法with_items

- name: Processing list
   set_fact:
      my_new_list: '{{ my_new_list|default([]) + [item] }}'
  with_items: '{{ groups.myservice }}'

我希望它会有所帮助,但我真的很想你需要澄清你的要求。


推荐阅读