如何将动态变量传递给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 }}" 
+0

请注意你的'vars'中有一个错字/缺失的报价。 – tedder42

集团你在坐骑字典是这样的:

--- 
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