salt-配置文件管理之sls讲解
SLS是Salt State系统的核心,用来描述系统的目标状态,使用YAML语言书写。被用作配置文件管理。
SLS文件
sls配置文件分为两种类型
- top.sls 这是所有配置文件的入口
- sls 这是每个不同的配置文件
top.sls
- top.sls 文件是其他sls文件的起始位置,使用
salt '*' state.highstate
调用。 - top.sls 文件的位置:master文件中base环境定义的文件夹下。
- 假设base路径为:
/srv/salt/base
则top文件路径:/srv/salt/base/top.sls
top.sls 文件格式如下:
1 | base: ## 从哪里开始读取配置文件,可以是base,prod等, |
解释:
- top文件遵循YAML语法,不同的层级用不同的空格定义。
- base:表示文件的其实位置。
- ‘os:centos’ :表示目标主机。
- match:
- grain: 按照grains规则去匹配
- nodegroup: 按照分组名进行匹配
- pcre: 正则匹配
- 如果不写match行,则默认使用通配符匹配。
sls文件编写方法
1 | agent-config: ##定义一个名称 |
简写方法:
vim /srv/salt/apache/install.sls
1 | apache: # 定义名称 |
简版的语法与上面的语法一致,区别在于可以将名称写在行首。这样就不用定义方法名称了。
最后执行 salt '*' state.highstate test=True
测试编写的文件是否正常。结果正常,则去掉test=True
正式执行。
sls编写方法注意事项
1 | include: |
1 | include: |
include
可以把已经写好的文件包含进来一起执行。
一个agent-config代表一个命名空间,一个命名空间内只有有一种方法即file.managed
方法只能出现一次。
如果写多个file.managed
就需要使用不用的命名空间。
- template: jinja
表示配置文件中定义了jinja模板。
jinja模板语法:
1 | {% for i in ['/etc/','/usr']%} |
1 | httpd: |
set 这是jinja模板的值
1 | {% set site_user = 'testuser' %} |
- require
表示依赖,Apache表示命名空间,pkg表示命名空间中的某一个方法。
1 | - require: |
其他配置
- watch: 监控状态是否变化,常用在service.running中。
- last:想让某个state最后一个运行,可以用last。
- order:优先级比require和watch低,有order指定的state比没有order指定的优先级高。
1 | vim: |