有人可以给我一个白痴说明以下是如何工作的:
{% 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为前两个值server
和addrs
分配了什么?
您如何在上面使用多个防雷选项?即如果您的支柱文件具有类似的额外防雷功能:
mine_functions:
network.ip_addrs: [eth0]
role:
- mine_function: grains.get
- role
您如何在第一个代码段中访问角色功能?
希望这是有道理的
答案 0 :(得分:4)
你的支柱中定义的地雷功能告诉小兵们将有关它们的一些信息提供给盐主人。然后,您可以使用mine.get
从任何奴才访问它。这在this page中有记录。
首先,您可以自己查看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
)是此过滤器的过滤器类型。您可以使用glob
,grain
,compound
,基本上任何salt targeting。
现在,要访问role
已挖掘的数据,您只需将network.ip_addrs
替换为role
。