我想为不同的主机指定不同的密钥。但群里有主持人
production
。例如,我有 host-vars 库存文件和 group-vars 库存文件。
inventory/hostvars/host-01
:
secret-key: <>
inventory/group-vars/production
:
secret-key: <>
我希望,如果指定了主机,则应从主机文件中选择密钥,否则从生产环境中选择密钥。在ansible中是否可能?或者我们可以采取什么方法来完成这个任务?
我尝试使用标签,但它在从命令行运行剧本时添加了额外的变量
这一切都归结为变量优先级。
一般来说,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'