状态模块:pkg
功能:管理软件包状态
常用方法:
pkg.installed #确保软件包已安装,如果没有就进行安装
pkg.latest #确保软件包是最新版本,不是的话就升级
pkg.remove #如果之前安装了软件包就卸载
pkg.purge #卸载软件包并删除配置文件
状态模块:file
功能:管理文件状态
常用方法:
file.managed #保证文件存在并且内容一致
file.recurse #保证目录存在并且为对应状态
file.absent #如果文件存在就进行删除
状态模块:service
功能:管理服务状态
常用方法:
service.running #确保服务处于运行状态,没有运行的话则启动
service.enabled #让服务开机自动启动
service.disabled #让服务开机不要自动启动
service.dead #确保服务处于停止状态,服务在运行的话则停止
状态模块:requisites
功能:处理状态间关系
常用方法:
require #我依赖某个状态,比如安装软件时依赖某个软件包
require_in #我被某个状态依赖
watch #我关注某个状态
watch_in #我被某状态关注
一般写sls文件可以按照pkg、file、service这样的模块顺序来写,因为我们平时操作也是先进行软件包安装,再写配置文件,最后启动服务,这是一个例子:
apache-service: #定义id,和apache服务有关
pkg.installed: #使用pkg模块的installed功能,可以看出是进行安装软件包
- name: httpd #安装包的名字
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://files/httpd.conf
- user: root
- group: root
- mode: 644
- require: #定义该文件依赖于谁
- pkg: apache-service #依赖于httpd包,这里使用的是事件的id,因为sls文件只有唯一的pkg事件,就是pkg.installed
service.running: #定义服务状态
- name: httpd #服务名称
- enable: True #开启服务
- reload: True #当文件发生变动时如果服务支持重载的话就进行重载而非重启
- watch: #文件发生变化时重启服务
-file: apache-service #哪个文件发生变化时重启服务
mysql-service: #定义id,可以看出是和mysql有关
pkg.installed: #使用pkg模块的installed功能,可以看出是进行安装软件包
-name: mysql-server #安装包的名字
-require_in: #该软件包被什么文件依赖
- file: mysql-service #被依赖的文件是该事件id下的file模块内的文件,由于sls是唯一的,可以得知是my.cnf文件
file.managed: #使用file模块的managed功能,说明是在进行文件内容的修改
- name: /etc/my.cnf #要修改的文件
- source: salt://files/my.cnf #参考该文件来修改要被修改的文件
- user: root
- group: root
- mode: 644
service.running: #使用service模块的running功能,说明是要启动服务
- name: mysqld #要启动的服务名字