我很想就如何优雅地处理这种情况提出一些建议
我有一个需要特定环境变量的应用程序。该应用程序的构建使我可以加载 .env 文件,并且该应用程序将从环境变量中读取登录用户/密码。
我有一个可靠的剧本
a) 检查一个 git 仓库
b) 设置应用
我需要在环境变量到位的情况下运行应用
(这些环境变量 [作为 .env 文件] 由 terraform 工作流创建)
使用 .env 文件将环境变量传递到 ansible.builtin.shell/command 等而不将它们存储在磁盘上的优雅方法是什么
.env 文件采用 key=value 格式
例如
USER=Fish
PASSWORD=Net
我知道 Ansible 可以读取定义了变量的 .yaml/.json 文件,但是我想避免另一种存储登录/密码参数的方式。
答案 0 :(得分:0)
这对我有用
- name: Get env vars
shell: cat .env
register: env
- name: Run command
shell: /usr/bin/env {{ env.stdout_lines | join(' ') }} bash -c 'echo $USER $PASSWORD'
register: echo
- name: debug
debug:
var: echo.stdout_lines
TASK [debug] **********************************************************
ok: [localhost] => {
"echo.stdout_lines": [
"Fish Net"
]
}
但我不得不说,这是一件可怕的事情,要弄清楚如何去做。我期待 /usr/bin/env 命令将文件名作为参数(就像 docker 一样)但没有。