我有两个Ansibleangular色,我们称他们为postgres和myservice 。
在我的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色可以覆盖默认值?