从主机和组变量中选取变量

问题描述 投票:0回答:1

我想为不同的主机指定不同的密钥。但群里有主持人

production
。例如,我有 host-vars 库存文件和 group-vars 库存文件。

inventory/hostvars/host-01

secret-key: <>

inventory/group-vars/production

secret-key: <>

我希望,如果指定了主机,则应从主机文件中选择密钥,否则从生产环境中选择密钥。在ansible中是否可能?或者我们可以采取什么方法来完成这个任务?

我尝试使用标签,但它在从命令行运行剧本时添加了额外的变量

ansible ansible-inventory
1个回答
0
投票

这一切都归结为变量优先级

一般来说,Ansible 优先考虑最近定义的、更活跃的、范围更明确的变量。

在您的情况下,

inventory/hostvars/host-01
(9)中设置的变量将覆盖
inventory/group-vars/production
(6)中设置的变量。

您可以手动更改它。我在一些剧本中明确设置了顺序,如下所示:

- name: Run a playbook with some extra variables
  hosts: all
  vars_files:
    - 'group_vars/override-less-important/all.yml'
    - 'group_vars/override-more-important/all.yml'

您也可以在此处使用带有额外变量的 Jinja2 模板。

- name: Run a playbook with some extra variables
  hosts: all
  vars_files:
    - 'group_vars/{{ group }}/all.yml'
© www.soinside.com 2019 - 2024. All rights reserved.