在盐状态中使用 mine.get 进行解释

gri*_*rno 1 salt-stack

有人可以给我一个白痴解释以下是如何工作的:

{% for server, addrs in salt['mine.get']('roles:web', 'network.ip_addrs', expr_form='grain') | dictsort() %}
server {{ server }} {{ addrs[0] }}:80 check
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

支柱文件如下所示:

mine_functions:
  network.ip_addrs: [eth0]
Run Code Online (Sandbox Code Playgroud)

盐分配给前两个值是什么,server以及addrs?你会如何在上面使用多个地雷选项?即,如果您的 pillar 文件有一个额外的 mine 功能,如下所示:

mine_functions:
     network.ip_addrs: [eth0]
      role:
        - mine_function: grains.get
        - role
Run Code Online (Sandbox Code Playgroud)

那么如何访问第一个代码片段中的角色函数?

希望这是有道理的

Chr*_*uet 5

在您的支柱中定义的 mine 函数告诉 Minion 将有关它们的一些信息推送给 salt master。然后你可以从任何仆从访问它,使用mine.get. 这在本页中有记录

我的.get

首先,您可以自己查看mine.get结果:

salt 'minion0' mine.get 'roles:web' 'network.ip_addrs' expr_form='grain'
minion0:
    ----------
    minion1:
        - ip1
        - ip2
    minion2:
        - ip
Run Code Online (Sandbox Code Playgroud)

所以你得到了一个字典,键是 minions id,值是网络 IP 地址列表。该dictsort()函数在传递给循环变量之前对键进行排序。

你最终server包含了 minion id,以及addrs它的 ip 地址列表。

第一个参数过滤您想要获取的 minions 数据,第三个 ( expr_form) 是此过滤器的过滤器类型。您可以使用glob, grain,compound基本上任何盐定位

现在,访问role挖掘出的数据,你只需更换network.ip_addrsrole