gpt4 book ai didi

Ansible 错误地提示未引用的值

转载 作者:行者123 更新时间:2023-12-05 02:59:39 27 4
gpt4 key购买 nike

我有这样的 Ansible 设置:

角色/myrole/defaults/main.yml
some_flag: "False"
角色/myrole/vars/some_env.yml
SOME_FLAG: "{{ some_flag }}"
角色/myrole/tasks/main.yml
---
- name: Load env
include_vars:
file: "vars/some_env.yml"
name: "some_env"

- name: Some Task
docker_container:
name: "some_container"
image: "some_image"
env: "{{ some_env }}"

这里一切看起来都不错,一切都被引用(也参见 this question )。尽管如此,Ansible (2.8.3) 还是提示:

fatal: [myhost]: FAILED! => {"changed": false, "msg": "Non-string value found for env option. Ambiguous env options must be wrapped in quotes to avoid them being interpreted. Key: SOME_FLAG"}

这是怎么回事?

最佳答案

“True”“True”“False”“False”(区分大小写)在 YAML 中是string,但在 Ansible 中是boolean

"true", "false", "TRUE", "FALSE" 等都是< YAML 和 Ansible 中的 strong>string。

使用以下剧本对其进行测试:

# test.yml
---
- hosts: localhost
gather_facts: no
vars:
b: "True"
s: "true"
tasks:
- name: var:b
debug:
var: b

- name: var:s
debug:
var: s

并检查结果:

$ ansible-playbook test.yml 
PLAY [localhost] ****************

TASK [var:b] ********************
ok: [localhost] => {
"b": true
}

TASK [var:s] ********************
ok: [localhost] => {
"s": "true"
}

PLAY RECAP **********************
localhost : ok=2

因此,要回答您的问题,请尽可能使用 some_flag: "false" 而不是 some_flag: "False"

如果您必须使用"False",那么在引用它时您将需要"{{ some_flag | string }}"

请注意,quote 过滤器将不起作用,因为它旨在在必要时引用变量以供 shell 使用,而不是简单地引用变量并在内部转义引号。

关于Ansible 错误地提示未引用的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57678988/

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