2017-02-21 14 views
0

Я несколько вложенных переменный по умолчанию в моем /defaults/main.yml:как перезаписать вложенные значения по умолчанию в анзибле

php_fpm_pools: 
    - name: www 
    user: php-fpm 

В сборнике пьес, я хочу, чтобы перезаписать значение пользователя по умолчанию, и я попытался следующие варианты, но безрезультатно:

roles: 
    - { 
    name: php-fpm, 

    php_fpm_pools.[www].user: vagrant 
    php_fpm_pools.www.user: vagrant 
    php_fpm_pools.['www'].user: vagrant 
    } 

что такое правильный синтаксис, который я должен использовать для того, чтобы перезаписать значения по умолчанию?

ответ

2

Нет easy способ переписать часть по умолчанию dict/list.

Вы либо перезаписать полный вар, как:

roles: 
    - role: php-fpm 
    php_fpm_pools: 
     - name: www 
     user: vagrant 

Или написать пользовательскую логику в начале роли объединить ваши параметры с переменными по умолчанию.

Когда-нибудь есть простой обходной путь, как это:

def_pool_user: php-fpm 
php_fpm_pools: 
    - name: www 
    user: "{{ def_pool_user }}" 

Таким образом, вы можете переопределить только def_pool_user.

+0

Спасибо за ответ. Ситуация здесь неожиданно меня отрицательно отрицает, так как это преследует цель иметь значения по умолчанию - если мне нужно повторно отправить весь набор из 50 значений из учебника. Во втором предложении def_pool_user должен быть def_pool_www_user, и я буду дублировать работу в файле по умолчанию. –

+0

По умолчанию переменные полностью прекрасны в Ansible. Вам просто нужно немного их реорганизовать. –