如果 group_vars 定义了代理映射,但任务收到的是空值,请查找在同一 play 中声明的同名变量。play 变量的优先级更高;即使占位符为空,它仍会覆盖清单。

对于允许使用公共 HTTP 代理的外部下载,HTTP 代理列表为清单值提供候选地址。请把映射保留在清单中:

proxy_env:
  http_proxy: http://proxy.example.net:8080
  https_proxy: http://proxy.example.net:8080

然后将其应用到目标任务,且不要使用 play 级的 proxy_env: 占位符:

environment: "{{ proxy_env | default({}) }}"

如果角色需要回退值,角色默认值中的空映射位于清单值之下,可以让清单值胜出。

所示过滤器处理的是 undefined,而不是所有看起来为空的状态。显式的 null 已经定义,因此普通的 default({}) 不会清除那个更高优先级的覆盖。

更改代理端点之前,请先检查受影响主机的实际取值。只有在变量优先级选定了它所求值的映射之后,environment 指令才会提供任务的输入。

相关文章