我有一些额外的信息,比如存储在/etc/ansible/facts.d/environment.fact中的数据库连接细节等 .
它们可以作为 ansible_local.environment.database.name
等变量使用 . 更新数据库名称的最佳方法是什么?
我尝试了set_fact模块但无法正确更新嵌套变量 . 它只是覆盖整个 ansible_local
哈希 .
- name: Update database name
set_fact:
args:
ansible_local:
environment:
database:
name: "{{ db_name }}"
2 回答
假设您使用的是Ansible 2.0或更早版本,这应该会有所帮助 .
combine
是Jinja2过滤器 . 在这种情况下,请确保使用recursive
参数 .这是默认的Ansible行为 - 在更改部分时覆盖整个哈希 . 见ansible.conf:
因此,如果您将其更改为
hash_behaviour = merge
,它将按预期工作 .