【问题标题】:get host name for jinja template in salt在 salt 中获取 jinja 模板的主机名
【发布时间】:2019-11-05 18:50:29
【问题描述】:

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

我有什么。

我有三个 Minion 作为名为 employee 的三层应用程序的一部分。

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

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

这里是每个服务器和这些值的 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”的服务器

不知道怎么做。

对 salt 太陌生,我对它和 jinja 模板都没有太多经验。

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: jinja2 salt-stack salt


    【解决方案1】:

    因此,如果我理解正确,您希望配置文件位于包含所有主机名的 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 模板中,该模板会在每台服务器上呈现到配置中。

    【讨论】:

    • 谢谢 min,你上面提到的是正确的,但在我的情况下,主机名是未知的。我所知道的关于主机的所有信息都是几个颗粒值。它有“appname:employee” " 和 "tier:db",所以 jinja 模板应该包含类似这样的内容。 db_server =(它是包含谷物值“appname:employee”和“tier:db”的服务器)不知道如何获得它。有些人提到grains.filter_by,但我不清楚,因为这对我来说是一个新世界。
    • 我明白了。所以你想获取每个主机名,然后将它们全部附加到每个服务器使用的一个配置中?
    • 感谢您的更新,很抱歉花了太长时间在这里发表评论。我忙于其他项目。这正是您在更新中所说的,但我不知道如何获取带有颗粒的主机名并将其传递给支柱,如果我知道的话,我可以简单地在支柱上硬编码主机名,但由于它未知,我可以简单地做到这一点像这样 if grains['tier']['db'] then employee: hostname_of_another_tier_minion: {% grains['fqdn'] %} 但我不知道该怎么做。
    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 2023-03-04
    • 2020-06-14
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多