jinja2 - 在 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 模板。
任何帮助将不胜感激。
谢谢
解决方案
因此,如果我理解正确,您希望配置文件位于包含所有主机名的 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模板中,该模板会在每台服务器上呈现到配置中。
推荐阅读
- reactjs - 从哪里导入 CognitoIdentityServiceProvider?
- python - python tkinter treeview 排序树不是列
- docker - 是否可以在 Kubernetes 下将 Pod 主机名作为托管节点主机名?
- bash - 在 heredoc 中传递给 SSH 时,Awk 脚本不起作用
- python - 存储批处理后收集的输出的最佳输出格式
- c# - 如何在更新客户端属性时更新服务器属性
- spring - Spring Boot + JPA 动态数据源
- mysql - org.h2.jdbc.JdbcSQLException:找不到列“OFFER_SERVICE”
- replace - 用 headertext 替换 ax
- google-bigquery - 从数据流中查询 BigQuery 的 INFORMATION_SCHEMA.TABLES 会导致错误