首页 > 解决方案 > 在 salt 中获取 jinja 模板的主机名

问题描述

不知道从哪里开始,但 hre 是我所拥有的,也是我想要做的。

我有的。

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

有一个三台服务器,称为 web01 作为 Web 服务器,app01 作为应用服务器,一个 db01 作为数据库服务器。

每个服务器上都有一个 grains 值,

这是每个服务器以及这些值的谷物值和键。

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 上推送配置文件,这些配置文件有一个变量(另一个层 minion 的主机名).. web01 上的配置应该有名称 app01.. 并且 app01 上的配置应该有名称 db01 ..这些服务器的名称应该根据grains值来抓取。

例如。

应用服务器的主机名,其粒度值等于“appname:employee and tier:app”的服务器

不知道该怎么做。

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

任何帮助将不胜感激。

谢谢

标签: jinja2salt-stacksalt

解决方案


因此,如果我理解正确,您希望配置文件位于包含所有主机名的 web1 和 app1 上。

如果是这样,您可以使用一个支柱文件来说明这些属性。

/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模板中,该模板会在每台服务器上呈现到配置中。


推荐阅读