使用top文件应用salt的state

目录

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

上篇探索了salt的state的创建,并且将state应用到了minion上。本篇看一下将state应用到minion上的另外一种方式——使用top.sls文件。本篇继续使用上篇“salt的环境、pillar和states”中搭建的环境。

上篇我们配置了一个名为user的state,本篇继续使用这个state,只是使用另外一种方式将其应用到minions上,这就需要在development环境的目录中创建一个top.sls的文件。下面就来操作一下。
在/opt/salt/development/目录中创建top.sls文件,内容如下:

top.sls
1
2
3
4
5
6
development:
'*':
- user
'salt-minion':
- match: list
- hostconfig

top.sls文件的作用是决定哪个state应用到哪个minions上。它同样是YAML格式。同样使用了minion matchers来指定符合条件的minion。
上面文件的第1行指明了此top文件是为development环境配置的,如果没有这行则默认使用base环境。第2行的通配符表示针对所有的minions应用下面列表中的state。第3行为state列表,这里给出了名为user的state,这个state是在上篇文章中配置好的。
第4、5、6行是另外一个配置块。第4行仍然是匹配minion的模式。第5行的关键字match表示第4行minion的匹配类型为list,就是说是minion名的列表,这个列表中的名称使用逗号隔开。第6行仍然是state列表,这里给定了一个名为hostconfig的state,我们还没有配置这个state。整个4-6行的意思是名为hostconfig的state要应用到所有在minions列表中的节点上,这里minions列表只包含一个名为salt-minion的主机。
下面将top文件里的state应用到该文件指定的minions上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@centos7-A development]# salt '*' state.highstate saltenv=development
minion:
----------
ID: generic_user
Function: user.present
Name: thomas
Result: True
Comment: User thomas is present and up to date
Started: 10:35:30.341832
Duration: 730.527 ms
Changes:
Summary
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1

根据命令的输出可见,资源名称为generic_user的state应用到了名为minion的节点上。由于在前一篇已经将此state应用到了此minion上,所以输出的changes部分为空,就是没有做任何更改,如果之前没有应用过此state,会输出更改的相关信息。另外,由于我们并没有名为salt-minion的节点,也没有配置名为hostconfig的state,所以输出没有它们的相关信息。
另外,如果不指定saltenv参数的话,将会运行所有环境文件夹下的top.sls文件。在运行highstate之前,可以使用test=True参数来测试top文件的正确性。

本篇学习了使用top文件应用state的方法。下篇学习一下salt minion的其它配置及salt的grains。