【问题标题】:How to use group_vars from a relative path in Ansible如何在 Ansible 中使用相对路径中的 group_vars
【发布时间】:2020-10-13 14:21:09
【问题描述】:

我有一个要求,我需要在 Ansible 中使用 group_vars,但它不需要在同一路径上。基本上我的剧本在 SVN 中,每当我们想要部署时,我们实际上都会检查带有发布版本的最新剧本,然后进行部署。

实际执行部署的剧本具有这种结构 -

/home/ansible/myapp/ansible-myapp-release/deploy/ansible-myapp-5.80.0-05
 - bin
 - roles
 - myapp-main.yml
 - myapp-full-deployment.yml
 - myapp-config.yml

我从 SVN 签出的另一件事是,它包含我的应用程序的配置,它不包含任何播放,对于不同的环境,如 preprod、prod、test 等,它可能会有所不同。

/home/ansible/myapp/ansible-myapp-release/configuration/5.80.0-05/preprod
 - config
 - group_vars
    - preprod.yml
 - inventory
     - myapp

库存myapp -

[preprod]
myapp-preprod

现在,当我执行我的第一个剧本时,我想使用这个 group_vars,因为这是我的配置在 preprod.yml 中的位置,它将在运行时加载到 jinja 模板中。

我如何从这个path 使用这个inventorygroup_vars 或者我需要将这些文件夹从这里复制到原来的剧本root 目录,然后执行剧本?

如果有人可以就此提供建议,请告诉我。

文档说路径应该相对于您的库存存储位置 https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#organizing-host-and-group-variables

【问题讨论】:

  • 如果我尝试像这样/home/ansible/myapp/ansible-myapp-release/configuration/5.80.0-05/preprod/inventory/myapp 定义inventory 路径,那么它也不起作用。它给了我这个错误-msg: The task includes an option with an undefined variable. The error was: 'tomcat_symlink_path' is undefined这个变量实际上是在我的preprod.yml文件中定义的
  • group_vars 移动到您的 inventory 目录中。完成。
  • @Zeitounator 这很简单。完美的。非常感谢:)

标签: ansible


【解决方案1】:

引用Organizing host and group variables

Ansible 通过搜索相对于清单文件或剧本文件的路径

来加载主机和组变量文件

以下是如何将 group_vars 相对于库存文件的示例

shell> tree /home/ansible/myapp/ansible-myapp-release/configuration/5.80.0-05/preprod
/home/ansible/myapp/ansible-myapp-release/configuration/5.80.0-05/preprod
└── inventory
    ├── group_vars
    │   └── preprod.yml
    └── myapp

【讨论】:

  • 谢谢弗拉基米尔。按照建议在库存中移动 group_vars 效果很好。我想我对相对路径感到困惑。
猜你喜欢
  • 2021-08-08
  • 2017-02-11
  • 2015-12-10
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多