我目前正在尝试执行一项任务,该任务将为两个不同的服务创建目录,但我无法解决我想如何使用 ansible 循环来做到这一点。
这是对象:
obj:
metadata:
uuid:
version:
services:
- server:
archive: binary.tar.gz
dirs:
bindir: /path/to/bindir/
confdir: /path/to/confdir/
tmpdir: /path/to/tmpdir/
- client:
archive: binary.tar.gz
dirs:
tmpdir: /path/to/tmpdir
这是我的相关任务:
#Creating directories
- name: Creating directories for server and client mode.
file:
path: "{{ item.1.dirs['tmpdir'] }}"
state: directory
owner: "{{ item.0.metadata.uuid }}"
group: "{{ item.0.metadata.uuid }}"
mode: 0750
with_subelements:
- "{{ obj }}"
- services
现在,我对循环在 ansible 上的工作方式感到有点不安,并且暂时坚持我当前的迭代,所以,你能帮我找到一种方法来实现我想要做的事情吗?
根据您的评论,您希望为
obj.services.#.dirs.tmpdir
项目创建目录,其中包含来自obj.metadata
. 解决方案width_items: "{{ object.services }}"
几乎可以工作 - 但您无权访问obj.metadata
. 问题是——根本只有一个obj.metadata
,所以你不需要在循环中引用它。您可以直接使用它。