当我执行ansible-playbook时,我想定义要使用的playbook参数文件。
例如,定义defaults / staging.yml而不是defaults / main.yml
是否可以将其设置为ansible-playbook参数?
THX
答案 0 :(得分:1)
确实有很多方法可以定义变量,因此为了了解哪种方式最适合您,我们需要有关您的用例的更多信息。
但是,让我概述另一个解决方案,我在我的开发人员团队中使用它。想象一下,您正在通过Git对Ansible存储库进行版本化,并且对于某些参数,您希望提供示例值,但仍允许开发人员覆盖。
如果需要覆盖,您需要保证他们的更改:
这是我的模式:
- name: Load configuration from sample configuration file
include_vars: ../config/config.sample.yml
- name: Check if user_specific configuration file exists
local_action: stat path="../config/config.yml"
register: config_st
- name: Overwrite Configuration file from local configuration file
include_vars: ../config/config.yml
when: config_st.stat.exists == True
将config/config.yml
添加到.gitignore
,用户/开发人员现在可以拥有自己的本地参数集,这些参数集来自您提供的示例配置。他们只需要cp config.sample.yml config.yml
并修改他们的config.yml
。
但是可以肯定的是,如果您只需要在少量明确定义的参数集中进行选择:只需创建多个配置文件,将参数传递给Ansible(例如-e "version=1.23.45"
)并在{{1}上使用该参数条件加载变量(when
)。
希望有所帮助!
答案 1 :(得分:0)
您可以使用include_vars模块来包含要播放的变量文件。例如,
include_vars:
file: staging.yml
答案 2 :(得分:0)
我认为您的用例是为每个环境定义变量(您的示例看起来像这样)?
Ansible有一种很好的方法来按组和主机继承和组合变量。
查看广告资源或group_vars文件夹中定义的group_vars
等:https://docs.ansible.com/ansible/intro_inventory.html#group-variables