我的/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
}
为了覆盖该默认值,我必须使用哪种正确的语法?
答案 0 :(得分:2)
没有 easy 方式来覆盖部分默认字典/列表。
你要么覆盖完整的var,比如:
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
。
答案 1 :(得分:0)
您是否尝试过Filters | Combining hashes/dictionaries?
roles:
- name: php-fpm
php_fpm_pools: '{{ php_fpm_pools |combine({'user':'vagrant'}) }}'