想要在某种角色的vars / main.yml或default / main.yml中声明哈希数组,例如:
mysql:
instances:
new:
port: 3306
dir: /mydir
config:
innodb_log_file_size: '128M'
tmp_table_size: '128M'
innodb_buffer_pool_size: '10G'
...
我只想更改YAML广告资源或group_vars中的某些键值。其他值必须取自具有某些作用的vars / main.yml:
mysql:
instances:
new:
config:
innodb_buffer_pool_size: '2G'
我要在jinja2模板中使用结果:
mysql:
instances:
new:
port: 3306
dir: /mydir
config:
innodb_log_file_size: '128M'
tmp_table_size: '128M'
innodb_buffer_pool_size: '2G'
...
答案 0 :(得分:0)
问题:“只想更改YAML广告资源或group_vars中的某些键值。其他值必须取自具有某些角色的vars / main.yml”。
1)服务角色(nginx,mysql,pgsql ...)。我以这个角色描述默认设置,...
2)然后,我创建一个项目角色,其中可以包含服务角色,并且我将使用服务角色中描述的大多数默认设置。项目角色只能更改一小部分服务设置。
答案:
在“服务”角色中,使用 defaults 特殊变量创建用于以后可能更改的参数。例如
mysql_port: "3306"
mysql_dir: "mydir"
mysql_innodb_log_file_size: "128M"
mysql:
instances:
new:
port: "{{ mysql_port }}"
dir: "{{ mysql_dir }}"
config:
innodb_log_file_size: "{{ mysql_innodb_log_file_size }}"
...
在“项目”角色中,具有更高precedence的任何变量都将覆盖角色的默认值。