使用特定的defaults / main.yml文件

时间:2017-05-29 10:13:24

标签: ansible

当我执行ansible-playbook时,我想定义要使用的playbook参数文件。

例如,定义defaults / staging.yml而不是defaults / main.yml

是否可以将其设置为ansible-playbook参数?

THX

3 个答案:

答案 0 :(得分:1)

确实有很多方法可以定义变量,因此为了了解哪种方式最适合您,我们需要有关您的用例的更多信息。

但是,让我概述另一个解决方案,我在我的开发人员团队中使用它。想象一下,您正在通过Git对Ansible存储库进行版本化,并且对于某些参数,您希望提供示例值,但仍允许开发人员覆盖

如果需要覆盖,您需要保证他们的更改:

  • 坚持设置
  • 未反映在Git存储库中(因此未与其他开发人员同步)
  • 易于维护

这是我的模式:

- 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