不确定从哪里开始,但是这里是我拥有的以及我正在尝试做的。
我有什么。
我有三个奴才作为名为员工的三层应用程序的一部分。
有三个服务器,分别称为web01作为Web服务器,app01作为应用服务器和db01作为数据库服务器。
每个服务器上都有一个谷物值,
这是每个服务器以及这些值的谷物值和键。
web01.
grains value =
appname:employee and
tier:web
app01.
grains value =
appname:employee and
tier:app
db01.
grains value =
appname:employee and
tier:db
我要做什么。
我正在尝试在web01和app01上推送配置文件,这些配置文件具有变量(另一级奴才的主机名).. web01上的配置名称应为app01 ..,而app01上的配置应具有名称名称db01 ..这些切割器的名称应基于谷物值来获取。
例如。
应用程序服务器的主机名,其颗粒值等于“ appname:employee and tier:app”的服务器
不确定如何做到。
对盐来说太新了,我对它也没有太多经验,也没有神社模板。
任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
因此,如果我理解正确,您希望配置文件位于包含所有主机名的web1和app1上。
如果是,则可以使用pillar文件在其中声明这些属性。
/srv/pillar/employee.sls:
employee:
hostname_of_another_tier_minion: hostname.example.com
然后您可以在您的jinja模板/srv/formulas/employee/templates/config.conf.jinja中引用它:
----------
hostname_of_another_tier_minion {{ pillar['employee']['hostname_of_another_tier_minion'] }}
为完整起见,您可以在/srv/employee/web.sls和/srv/employee/app.sls中引用模板:
web-config-file:
file.managed:
- user: root
- group: root
- template: jinja
- mode: '0644'
- names:
- /etc/<web-conf-dir>/web.conf:
- source: salt://employee/templates/config.conf.jinja
如果您还有其他问题,请告诉我。
更新:
如果您所说的主机名未知,则可以先用grains来获取它们,然后将它们放在jinja模板中,该模板会呈现到每个服务器的配置中。