在 Jinja 模板中使用 minion 定位
Use minion targeting within Jinja templates
SaltStack 允许在命令行上精确 targeting of minions,例如:
salt 'prefix*' grains.items
^^^^^^^
有没有什么方法可以在 Jinja 模板中使用相同的方式来定位小兵?我想遍历给定匹配器所针对的主机,例如:
{% for minion in salt.minions['prefix*'] %}
^^^^^^^
很遗憾,我在 official help on using Jinja 中没有找到任何内容。
从您发布的其他评论来看,您似乎正在寻找 Salt mine 功能。使用 Salt mine 我们可以从 minions 收集数据(掌握),并在(通常)其他 minions 上使用这些数据。
Salt Mine可以在minion配置文件中开启,也可以在minion的pillar中启用,但是格式是一样的。
举个例子:
考虑以下 4 个随从:
web1.example.local
db1.example.local
db2.example.local
db3.example.local
现在在 dbX
小兵的支柱文件 (db.sls
) 中,我定义了两个 Salt 模块作为 Mine 函数来获取主机名和额外的 IP 地址。
mine_functions:
network.get_hostname: []
network.ip_addrs: []
请注意,地雷和支柱可能需要更新 (mine.update
)/刷新 (saltutil.refresh_pillar
) 才能反映此更改。
现在 Mine module's get
函数可以引用以上任意一个矿机函数。 Minion 可以用通常的方式作为目标 - 通配符、grains、化合物等。
示例 example.conf.j2
模板,我在其中呈现 minion id 和主机名。
{% for minion_id, hostname in salt['mine.get']('db*', 'network.get_hostname') | dictsort() %}
Minion id {{ minion_id }} has hostname {{ hostname }}
{% endfor %}
此模板可以在具有以下状态的 web1.example.local
上呈现:
create-example-conf:
file.managed:
- name: /tmp/example.conf
- source: salt://example.conf.j2
- mode: 0664
- template: jinja
这将生成 /tmp/example.conf
文件,其中的行显示 minion_id
和 hostname
。
SaltStack 允许在命令行上精确 targeting of minions,例如:
salt 'prefix*' grains.items
^^^^^^^
有没有什么方法可以在 Jinja 模板中使用相同的方式来定位小兵?我想遍历给定匹配器所针对的主机,例如:
{% for minion in salt.minions['prefix*'] %}
^^^^^^^
很遗憾,我在 official help on using Jinja 中没有找到任何内容。
从您发布的其他评论来看,您似乎正在寻找 Salt mine 功能。使用 Salt mine 我们可以从 minions 收集数据(掌握),并在(通常)其他 minions 上使用这些数据。
Salt Mine可以在minion配置文件中开启,也可以在minion的pillar中启用,但是格式是一样的。
举个例子:
考虑以下 4 个随从:
web1.example.local
db1.example.local
db2.example.local
db3.example.local
现在在 dbX
小兵的支柱文件 (db.sls
) 中,我定义了两个 Salt 模块作为 Mine 函数来获取主机名和额外的 IP 地址。
mine_functions:
network.get_hostname: []
network.ip_addrs: []
请注意,地雷和支柱可能需要更新 (mine.update
)/刷新 (saltutil.refresh_pillar
) 才能反映此更改。
现在 Mine module's get
函数可以引用以上任意一个矿机函数。 Minion 可以用通常的方式作为目标 - 通配符、grains、化合物等。
示例 example.conf.j2
模板,我在其中呈现 minion id 和主机名。
{% for minion_id, hostname in salt['mine.get']('db*', 'network.get_hostname') | dictsort() %}
Minion id {{ minion_id }} has hostname {{ hostname }}
{% endfor %}
此模板可以在具有以下状态的 web1.example.local
上呈现:
create-example-conf:
file.managed:
- name: /tmp/example.conf
- source: salt://example.conf.j2
- mode: 0664
- template: jinja
这将生成 /tmp/example.conf
文件,其中的行显示 minion_id
和 hostname
。