Ansible 模棱两可的 env 值

Kdg*_*Dev 4 ansible

我在 Ansible 中收到以下警告:

[WARNING]: Non-string value found for env option. Ambiguous env options should be wrapped in quotes to avoid YAML parsing. This will become an error in Ansible 2.8. Key: PORT; value will be treated as: 12345
Run Code Online (Sandbox Code Playgroud)

所以我去查找这个值的来源并将它的所有实例都用引号括起来。或者我是这么想的。我仍然收到警告。

所以我去了代码中出现的地方,好像是这样的:

docker_container:
  env: '{{ params | combine(extra_params, {"PORT": my_port|int + amount|int * 10 })}}'
Run Code Online (Sandbox Code Playgroud)

这是一种用于处理同一容器的多个实例的设置,每个实例都有一个唯一的端口,以免相互干扰。

而且我不确定如何在不破坏该设置的情况下解决该问题。计算完成后是否可以再次转换为字符串?我应该提前做吗?这里最好的选择是什么?

JGK*_*JGK 7

作为docker_container 模块在env状态下的ansible文档

可能被 YAML 解析器解析为数字、布尔值或其他类型的值必须被引用(例如"true")以避免数据丢失。

所以你必须将结果转换为带引号的字符串。

env: '{{ params | combine(extra_params, {"PORT": (my_port|int + amount|int * 10) | string })}}'
Run Code Online (Sandbox Code Playgroud)