如何检查 Ansible 中的环境变量是否为空?
How to check that an environment variable is non-empty in Ansible?
我想检查 Ansible 2.9 中的环境变量是否已定义且非空。如果它为空或未定义,我想 fail
在角色中。因此我需要将表达式传递给 fail
的 when
参数。但是,我无法弄清楚我需要通过什么。我试过了
- fail:
msg: "Environment variable ENV_VAR is not defined or empty"
when: lookup('env', "ENV_VAR") | length > 0
- fail:
msg: "Environment variable ENV_VAR is not defined or empty"
when: (lookup('env', "ENV_VAR") | length) > 0
- fail:
msg: "Environment variable ENV_VAR is not defined or empty"
when: "{{(lookup('env', 'ENV_VAR') | length) > 0}}"
- fail:
msg: "Environment variable ENV_VAR is not defined or empty"
when: lookup('env', 'ENV_VAR') == ''
由于
所有方法都失败了
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Invalid options for fail: when"}
和 documentation of env
as well as fail
对我来说没有任何线索 when
期望什么。
对于 fail
的使用的修复和解释,或者对检查环境变量是否为非空的问题的不同解决方案,我将不胜感激。
我看到 问题是缺少对 int
的强制转换,这不可能是这里的问题,因为 length
returns 是一个整数。
我在 Ubuntu 20.10.
上使用 Ansible 2.9
YAML 对空格极其敏感,as the examples show the when:
must be at the same level as the name:
, since it is a task keyword which applies to all tasks. You may also enjoy the assert:
module,这可能更容易推理
我想检查 Ansible 2.9 中的环境变量是否已定义且非空。如果它为空或未定义,我想 fail
在角色中。因此我需要将表达式传递给 fail
的 when
参数。但是,我无法弄清楚我需要通过什么。我试过了
- fail:
msg: "Environment variable ENV_VAR is not defined or empty"
when: lookup('env', "ENV_VAR") | length > 0
- fail:
msg: "Environment variable ENV_VAR is not defined or empty"
when: (lookup('env', "ENV_VAR") | length) > 0
- fail:
msg: "Environment variable ENV_VAR is not defined or empty"
when: "{{(lookup('env', 'ENV_VAR') | length) > 0}}"
- fail:
msg: "Environment variable ENV_VAR is not defined or empty"
when: lookup('env', 'ENV_VAR') == ''
由于
所有方法都失败了fatal: [localhost]: FAILED! => {"changed": false, "msg": "Invalid options for fail: when"}
和 documentation of env
as well as fail
对我来说没有任何线索 when
期望什么。
对于 fail
的使用的修复和解释,或者对检查环境变量是否为非空的问题的不同解决方案,我将不胜感激。
我看到 int
的强制转换,这不可能是这里的问题,因为 length
returns 是一个整数。
我在 Ubuntu 20.10.
上使用 Ansible 2.9YAML 对空格极其敏感,as the examples show the when:
must be at the same level as the name:
, since it is a task keyword which applies to all tasks. You may also enjoy the assert:
module,这可能更容易推理