2016-07-25 100 views
0

對於我們的每個服務器(網站和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

回答

1

集團你在坐騎字典是這樣的:

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