2016-07-25 5 views
0

Для каждого нашего сервера (веб-сайтов и perls) у нас есть разные точки монтирования для каждого типа серверов. Поэтому для веб-серверов я хочу использовать записи для «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

Группа ваши Монтируется в dict следующим образом:

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

И доступ Dict элементы, как это:

- 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» и ваш лучший Playbook уровня относится роль " полотна».

+0

Отлично работает, спасибо! – luckytaxi

Смежные вопросы