我有一个Ansible Playbook,根据在运行Ansible的系统上设置的环境变量执行各种任务。例如:
- hosts: all
tasks:
- name: Download allowlist
command: "some_command {{ lookup('env', 'ALLOWLIST_URL') }}"
when: "lookup('env', 'ALLOWLIST_URL') is defined"
目前,我通过一个包装脚本从playbook外部提供所有环境变量:
export ALLOWLIST_URL="..."
export SOME_OTHER_VAR="..."
ansible-playbook -i hosts playbook.yaml
不过,我希望能够自动将这些环境变量包含到Ansible中,可以通过命令行开关、播放书中的附加任务或其他方式实现,这样就可以完全摆脱包装器。
澄清一下,我更喜欢像这样做某些事情的方式(这不是一个真正的命令,只是为了演示我正在寻找的内容):
ansible-playbook --include-env-vars ENVFILE -i hosts playbook.yml
或者,如果在playbook中,可以像这样实现(再次强调,
include_env_vars
不是真正的模块,仅用作演示):tasks:
- name: Include env vars
include_env_vars:
from: ENVFILE
这种事情可能吗?
export ALLOWLIST_URL="..."; export SOME_OTHER_VAR="..."; ansible-playbook -i hosts playbook.yaml
这真的比命令行参数更糟糕吗? - undefinedinclude_vars
。 - user2064000