获取盐中的Jinja模板的主机名

时间:2019-06-23 23:52:23

标签: jinja2 salt-stack salt

不确定从哪里开始,但是这里是我拥有的以及我正在尝试做的。

我有什么。

我有三个奴才作为名为员工的三层应用程序的一部分。

有三个服务器,分别称为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”的服务器

不确定如何做到。

对盐来说太新了,我对它也没有太多经验,也没有神社模板。

任何帮助将不胜感激。

谢谢

1 个答案:

答案 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模板中,该模板会呈现到每个服务器的配置中。