top.sls
top.sls
是配置管理的入口文件,默认存放在/srv/salt/下. top.sls文件非必须
。
在大规模的配置管理工作中,我们需要编写大量的states.sls
文件。top.sls
是states
系统的入口文
件,它在大规模配置管理工作中负责指定哪些设备调用哪些states.sls
文件。
salt远程命令的语法
salt '<Target>' <function> [参数]
执行salt '*' state.highstate
,master会对Target发出指令,目标机器会对top.sls进行分析,
根据top.sls内匹配规则进行解析,执行,然后结果反馈给 master.
Target匹配
salt的Target选择很多,支持minion ID,pillar,grains,group,CIDR,compound等.
Target匹配示例
1.minion ID匹配
1.1通配符
# 命令行
salt '*' test.ping
#=====================
#在top文件中使用时
base:
'*':
- webserver
1.2指定ID
# 命令行
salt 'dbserver' test.ping
#=====================
#在top文件中使用时
base:
'dbserver'
- redis
1.3正则表达式
# 通过`-E`可以指定使用pcre。如:
salt -E 'dbserver-(prod|dev)' test.ping
#===================================================
#在top文件中使用时,必须通过`match: pcre`来指定,例如:
base:
'dbserver-(prod|dev)':
- match:pcre
- redis
1.4列表
# 命令行
salt -L 'dbserver1,dbserver2,dbserver3' test.ping
#===================================================
#在top文件中使用时,必须通过`match: list`来指定,例如:
base:
'dbserver1,dbserver2,dbserver3':
- match:list
- redis
2.Grians匹配
#命令行中通过`-G`来表明,如:
salt -G 'os:ubuntu' test.ping
#===================================================
#在top文件中使用时,必须通过`match: grain`来指定,例如:
base:
'os:ubuntu':
- match: grain
- webserver
3.组匹配
#命令行中通过`-N`来表明,如:
salt -N group1 test.ping
#===================================================
#在top文件中使用时,必须通过`match: nodegroup`来指定,例如:
base:
group1: #组名为group的,组在/etc/salt/master中定义
- match: nodegroup
- dbserver
4.Pillar匹配
# 命令行
salt -I 'role:DB' test.ping
#===================================================
#在top文件中使用时,必须通过`match: pillar`来指定,例如:
base:
'role:DB':
- match: pillar
- redis
5.CIDR匹配
# 命令行
salt -S '192.168.1.0/24' test.ping
#===================================================
#在top文件中使用时,必须通过`match: ipcidr`来指定,例如:
base:
'192.168.1.0/24':
- match: ipcidr
- webserver
6.compound匹配
# 命令行
salt -C 'webserv* and G@os:Debin or E@web-dec-serv.*' test.ping
#===================================================
#在top文件中使用时,必须通过`match: compound`来指定,例如:
base:
'webserv* and G@os:Debian or E@web-dc1-serv.*':
- match: compound
- webserver
top.sls多环境配置
在/etc/salt/master
中有例子
file_roots:
base: #没指定环境时则从base目录获取文件
- /srv/salt/
dev:
- /srv/salt/dev/services #每一个环境都可以定义多个目录, 优先级关系由定义目录的顺序决定.开发环境有两个目录,
- /srv/salt/dev/states #它会从services目录先找,找不到就去states目录找,如果services找到了就不往下找了
prod:
- /srv/salt/prod/services
- /srv/salt/prod/states