我正在编写一个 Ansible 剧本,用于设置系统,在某些配置中,某些系统可能由另一个组织提供。一个非常简单的例子:
存货:
- 应用服务器
- 一个数据库服务器
Playbook:设置两台服务器,并application.properties
使用 db 服务器的 IP、端口和用户/密码将文件添加到应用服务器。
到目前为止工作,但随后一个要求来了,在某些部署中,数据库服务器是由另一个组织提供的,所以我不能将它包含在清单中,因为设置步骤失败,但我仍然想为应用服务器(带有我从其他人那里获得的数据库服务器信息)。
考虑到有 6 种这样的服务器类型,而不仅仅是 2 种(所以不仅仅是 2 种不同的场景,提供的服务器有很多排列),什么是涵盖这两种场景(我自己的数据库服务器和提供的数据库服务器)的最不痛苦的解决方案对我来说,这是我的)。
编辑:更具体地说,我遇到的问题是,如果我在系统不是我的时候使用 vars 而当它是我的系统时使用事实,那么我在编写application.properties.j2
模板时会遇到问题,因为事实和 vars 的引用方式不同。如何在模板中使用 var ,但如果未定义 var 则使用事实?