gpt4 book ai didi

ansible - 如何从文件中读取环境

转载 作者:行者123 更新时间:2023-12-03 07:19:08 28 4
gpt4 key购买 nike

我想通过 Ansible 读取的 YAML 文件或通过 list 文件向 Ansible 提供我的环境变量。目标是让用户(可以控制 list 文件或新的 YAML 文件)提供他们认为适合(特定于主机的)环境的任何环境变量。我正在拍摄类似以下内容的内容:

# start/provision.yml
- hosts: app1server
vars:
include: ../env_vars.yml
roles:
- python27
- app1
environment: env_vars

其中 env_vars.yml 位于 start/ 中,并具有以下布局:

---
# file: start/env_vars.yml
env_vars:
PATH: /usr/local/nonsense
http_proxy: http://aplacenothere

文件名 env_vars.yml 本身就是 list 文件中的一个参数。

是否有简单的方法可以解决上述问题?为每个主机提供环境任意变量的选项有哪些?

最佳答案

我认为您发布的代码片段已经非常接近了。如此接近,我不确定您的问题是否是如何存档目标,或者您是否询问为什么它不起作用。

恕我直言,唯一不正确的是你如何尝试包含变量。您应该在剧本级别使用 vars_files 而不是 vars:

- hosts: app1server
vars_files:
- "{{ env_file }}"
roles:
- python27
- app1
environment: env_vars

然后你可以使用 --extra-vars="env_file=some/file.yml"调用 ansible

我不能 100% 确定剧本级别的环境是否有效。根据 docs 应该如此。但我最近在 SO 上读到一个问题,有人问为什么没有。

如果它确实不起作用,那就是一个错误。然后尝试将 Ansible 升级到最新版本。如果仍然不起作用,您应该在 github 上将其报告为错误。唯一可能的解决方法是将环境应用到您的所有角色:

roles:
- role: python27
environment: env_vars
- role: app1
environment: env_vars

如果它仍然不起作用,请将其应用于角色内的每个任务。

<小时/>

找到 the other question ,同时得到答复。所以这是一个非常旧的版本中的错误。它应该可以在最新的 1.9.x 或 2.x 版本中运行。

关于ansible - 如何从文件中读取环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960783/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com