default/main.yml
中的默认属性列表
hdfs_namenode_properties:
- { name: "dfs.permissions.superusergroup", value: "hadoop" }
- { name: "dfs.namenode.name.dir", value: "/media/persistent0" }
但是,当我在我的
hdfs_namenode_properties
中定义自己的
site.yml
时,默认值就被覆盖了。 - name: set up cluster master
hosts: masters
vars:
hdfs_namenode: "True"
hdfs_namenode_properties:
- { name: 'dfs.permissions.enabled', value: 'false' }
roles:
- azavea.hdfs
模板,在属性列表上迭代的模板是
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
{% for property in hdfs_namenode_properties -%}
<property>
<name>{{ property.name }}</name>
<value>{{ property.value }}</value>
</property>
{% endfor -%}
</configuration>
有一种方法可以合并这两个列表吗?
或以不同的方式提出它,我如何访问默认值,以便我可以做类似的事情。
hdfs_namenode_properties:
"{{ <<default_namenode_properties>>
+ { name: 'dfs.permissions.enabled', value: 'false' }
}}"
VAR替代是默认的Ansible行为。您可以通过在ansible.cfg文件中更改
Source:
可言文档A Anhother您可以这样做的方法是使用
default
jinja2滤波器,因此您不会通过执行类似的操作来定义role/yourrole/defaults
中的默认值,而是直接在模板中定义默认值(模板文件只是一个示例,我不确定HDFS Namenode conf的结构化):
# file: yourrole/templates/template.j2
[hdfs_namenode]
name: {{ hdfs_namenode_properties.name | default("dfs.permissions.superusergroup") }}
hdfs_namenode_properties
)