我想看看是否可以在ansible中分割一个相当大的var文件。
这是集合:https://github.com/Icinga/ansible-collection-icinga
---
- name: Build Icinga Image
hosts: all
become: yes
vars_files:
- vars/icinga-config/main.yml
collections:
- icinga.icinga
tasks:
- ansible.builtin.include_role:
name: icinga2
var 文件的结构如下:
icinga2_objects:
internal.icinga:
- name: host1.fqdn
type: Host
file: zones.d/main/host1.fqdn.conf
address: 127.0.0.2
- name: host2.fqdn
type: Host
file: zones.d/main/host2.fqdn.conf
address: 127.0.0.3
请帮忙!我不知道下一步该尝试什么
我尝试将其放入单独的 var 文件中,但当我这样做时,其中一个文件会被忽略。这是一个例子:
- name: Build Icinga Image
hosts: all
become: yes
vars_files:
- vars/icinga-config/host1.yml
- vars/icinga-config/host2.yml
collections:
- icinga.icinga
tasks:
- ansible.builtin.include_role:
name: icinga2
var 文件的结构如下:
vars/icinga-config/host1.yml
icinga2_objects:
internal.icinga:
- name: host1.fqdn
type: Host
file: zones.d/main/host1.fqdn.conf
address: 127.0.0.2
vars/icinga-config/host2.yml
icinga2_objects:
internal.icinga:
- name: host2.fqdn
type: Host
file: zones.d/main/host2.fqdn.conf
address: 127.0.0.3
关于如何让它们合并而不被忽略的任何想法。
我没有使用 Icinga 的经验,但它的 Monitoring Configuration Objects 文档明确指出您不应该像您一样使用该
icinga2_objects
变量:
默认
变量的优点是,您可以在许多不同的服务器上运行 playbook,而无需在 playbook 中的每个主机上部署监控配置。否则,该变量应仅放置在icinga2_objects
文件中,以限制在每个主机上的部署。host_vars
作为辅助选项,您可以使用没有第二级的变量,如下例所示。
注意!如果不限制,它将部署在每个主机上。这应该只在
中定义,除非你知道你在做什么!host_vars
关于如何让它们合并而不被忽略的任何想法。
上面的警告注释来自于 Ansible 变量的一般工作方式。
鉴于您没有提供库存示例,在我看来,这个问题是一种 X/Y 问题 - 似乎您需要首先弄清楚如何组织变量。很难针对您的情况给出具体答案,因为可能的选择太多。
除了建议仔细阅读以下文档之外,我别无选择: