如何将动态变量传递给Ansible角色
问题描述:
对于我们的每个服务器(网站和perls),我们针对每种服务器都有不同的挂载点。因此,对于Web服务器,我想使用“web_mounts”条目,而perls将是“perl_mounts”。如何将动态变量传递给Ansible角色
如果我将“web_mounts”硬编码到“with_items”,它工作正常。否则,它会告诉我“nfs_group”未定义。
顶级
roles:
- { role: webs, nfs_group: "web_mounts" }
角色/ nfs_mounts /瓦尔/ main.yml
---
web_mounts:
- { source: "nfs.local:/nfs/web1, dest: "/web1", opts: "rw,noatime" }
- { source: "nfs.local:/nfs/web2, dest: "/web2", opts: "rw,noatime" }
perl_mounts:
- { source: "nfs.local:/nfs/perl1, dest: "/perl1", opts: "rw,noatime" }
- { source: "nfs.local:/nfs/perl2, dest: "/perl2", opts: "rw,noatime" }
角色/ nfs_mounts /任务/ main.yml
- name: Create fstab entries
mount: fstab=nfs state=present opts="{{ item.opts }}" src="{{ item.source }}" name="{{ item.dest }}"
with_items: "{{ nfs_group }}"
答
集团你在坐骑字典是这样的:
---
mounts:
web_mounts:
- { source: "nfs.local:/nfs/web1", dest: "/web1", opts: "rw,noatime" }
- { source: "nfs.local:/nfs/web2", dest: "/web2", opts: "rw,noatime" }
perl_mounts:
- { source: "nfs.local:/nfs/perl1", dest: "/perl1", opts: "rw,noatime" }
- { source: "nfs.local:/nfs/perl2", dest: "/perl2", opts: "rw,noatime" }
项
,并获得字典内容是这样的:
- name: Create fstab entries
mount: fstab=nfs state=present opts="{{ item.opts }}" src="{{ item.source }}" name="{{ item.dest }}"
with_items: "{{ mounts[nfs_group] }}"
至于“nfs_group是未定义”错误,请检查您是否正确调用角色 - 你的角色的名字是“nfs_mounts”和你的顶级剧本适用角色“网”。
+0
很好,谢谢! – luckytaxi
请注意你的'vars'中有一个错字/缺失的报价。 – tedder42