【发布时间】:2021-01-11 14:43:52
【问题描述】:
我有一个试点项目,在group_vars 中保留了许多常见变量。
group_vars/
group1.yml
group2.yml
group3.yml
对于不同的实现(通常是每个客户端),我想保留覆盖group_vars 内容的保留文件,其中该文件的内容可能具有以下格式,即client1.yml:
group1:
var11_to_override: "foo"
var12_to_override: "bar"
group2:
var21_to_override: "foo"
var22_to_override: "bar"
是否可以简单地告诉 Ansible 文件 client1.yml 覆盖 group_vars 内容?
include_vars 模块当然可以与set_facts 在一个循环中一起使用,但它可能需要复杂的 jinja2 过滤器表达式...
我要写一个新模块或过滤器更新hostvars吗?
【问题讨论】:
-
见docs.ansible.com/ansible/latest/user_guide/…。乍一看,我会将您当前的文件保存在库存
group_vars文件夹中,并在剧本group_vars文件夹中逐组添加覆盖文件。 -
@Zeitounator 不幸的是,我必须保持
client1.yml文件的格式,并且不能与group_vars文件放在同一个文件夹中。在这个项目的未来,我应该能够从 REST API 获得相同的内容。 -
在这种情况下什么是“客户”?它是由 Ansible 管理的系统,还是您的客户,以便
client1.yml保存客户特定的数据? -
@Jack 对于每个客户端,
group_vars中的一些值会发生变化,但主要部分仍然相同;这就是为什么我们要维护一种覆盖文件,覆盖一些默认值,而不是替换group_vars文件夹中的整个文件。 -
@ibt23sec5 这不能回答我的问题。 “客户”是由 Ansible 管理的系统,还是“客户”是您的客户?
标签: ansible yaml ansible-inventory ansible-facts