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

时间:2017-03-06 17:30:13

标签: 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 %}

支柱文件如下:

mine_functions:
  network.ip_addrs: [eth0]

salt为前两个值serveraddrs分配了什么? 您如何在上面使用多个防雷选项?即如果您的支柱文件具有类似的额外防雷功能:

mine_functions:
     network.ip_addrs: [eth0]
      role:
        - mine_function: grains.get
        - role

您如何在第一个代码段中访问角色功能?

希望这是有道理的

1 个答案:

答案 0 :(得分:4)

你的支柱中定义的地雷功能告诉小兵们将有关它们的一些信息提供给盐主人。然后,您可以使用mine.get从任何奴才访问它。这在this page中有记录。

mine.get

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

salt 'minion0' mine.get 'roles:web' 'network.ip_addrs' expr_form='grain'
minion0:
    ----------
    minion1:
        - ip1
        - ip2
    minion2:
        - ip

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

您的最终结果是server包含了minion ID,addrs包含了其IP地址列表。

第一个参数过滤您想要获取的minions数据,第三个参数(expr_form)是此过滤器的过滤器类型。您可以使用globgraincompound,基本上任何salt targeting

现在,要访问role已挖掘的数据,您只需将network.ip_addrs替换为role