对依赖Ansibleangular色的“合成”默认variables的懒惰评价

我有两个Ansibleangular色,我们称他们为postgresmyservice

在我的postgresangular色中,我定义了一些默认variables(在postgres/defaults/main.yml ):

 postgres_db: pgdb postgres_user: postgres postgres_systemd_docker_service_name: postgres_{{postgres_db}} 

在我的postgresangular色中,我从postgres_systemd_docker_service_namevariables创build了一个systemd服务单元文件。 这里的想法是,如果我想为多个服务运行多个postgres docker容器,我可以使用postgres_dbvariables来区分它们。

然后我有myserviceangular色,我依赖于postgresangular色并重写一些默认variables。

在我的myservice/meta/main.yml

 dependencies: - {role: docker} - role: postgres postgres_user: "myservice_user" postgres_password: "myservice_password" postgres_db: "myservice" 

但是,当我运行使用myserviceangular色的playbook时,它将创build我的systemd单元文件为postgres_pgdb (这是默认值)而不是postgres_myservice

如果我在我的myserviceangular色中使用postgres_systemd_docker_service_namevariables,它将被评估为postgres_myservice

有没有什么办法可以确保我的postgresangular色中的复合variables以这样的方式被评估:我的myserviceangular色可以覆盖默认值?