Ansible 过滤器 - 需要解释

Ansible filter - Need an explaination

我有一个 YML 文件来定义这样的变量。

例如:

/opt/ansible/role/defaults/main.yml

APP_NAME: False
SERVICE: "{{hostvars[inventory_hostname][APP_NAME] | default('')}}"
APP_HOME: "{{hostvars[inventory_hostname][APP_NAME]['variables']['app_home'] | default('') }}"

谁能告诉我 default 过滤器和 hostvars[inventory_hostname][APP_NAME] 的结果是什么。

非常感谢!

此特定情况下的 default 过滤器如下所示:

SERVICE: "{{hostvars[inventory_hostname][APP_NAME] | default('')}}"

获取特殊变量 hostvars 以获得将在其中工作的 inventory hostname 并应用过滤器 default('') 这意味着它已定义且为空。

它应该等同于 bash 如果 iirc:

SERVICE=${$(hostname -s):-}

这是一种将默认值设置为空但确保变量存在且“已定义”的方法。