Ans歧义环境值

时间:2019-06-11 12:45:19

标签: 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

因此,我去查询了该值的来源,并将其所有实例都用引号引起来。还是我想。我仍然收到警告。

所以我去了代码中它出现的地方,似乎是这样的:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  

YAML解析器可能会将其解析为数字,布尔值或其他类型的值加引号(例如"true"),以避免数据丢失。

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

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