【问题标题】:Ansible variable scope clashAnsible 变量范围冲突
【发布时间】:2016-06-15 16:40:21
【问题描述】:

我有一个看起来像这样的ansible 设置

inventories/
    sandbox1
    group_vars/
       all
       sandbox1
pb/
    pb1/
        run_pb1.yml

我也有角色和其他东西,但我认为这足以抓住我需要做的事情的要点。

我有一个变量 foo 我在里面定义

inventories/group_vars/all

inventories/group_vars/sandbox1

现在我的问题是每当我打电话时

ansible-playbook -i inventories/sandbox1 pb/pb1/run_pb1.yml

playbook 以 foo 的值运行 包含在 inventories/group_vars/all... 换句话说,来自 inventories/group_vars/sandbox1 的 foo 的值不会覆盖“global/all”版本.

这是实现库存特定变量的正确方法吗?我想避免为像变量更改这样简单的事情创建多个剧本......即,我不想在“所有”文件中做这样的事情

default_foo: bar
sandbox1_foo: baz

还有多个剧本,除了它们引用的变量之外,它们都是相同的。

有没有办法按照我的要求去做?

【问题讨论】:

  • group_vars 文件夹应该包含组的名称,而不是用于添加变量的清单。您能否分享一份您的 sandbox1 库存样本以进一步说明?
  • 您的评论提供了解决方案,我的清单文件中没有包含一个名为 sandbox1 的组。谢谢!
  • 为了后代,我添加了我的评论作为答案。 :-)

标签: variables scope ansible ansible-playbook inventory


【解决方案1】:

group_vars 文件夹应该包含组的名称,而不是用于添加变量的清单。在您的 sandbox1 清单文件中添加一个名为“sandbox1”的组,然后它将使用这些变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2012-08-06
    • 1970-01-01
    相关资源
    最近更新 更多