saltstack state.sls

配置:

修改master配置文件,告诉master, state.sls作业存放的路径

file_roots:
  base:
    - /srv/salt/base
  dev:
    - /srv/salt/dev

注:

  1. 配置完配置文件之后,需要确定以上配置的目录都必须存在,才可以重启,如果配置的目录不存在,是起不来的。
  2. base目录是必须有的。

创建state的作业脚本

cd /src/salt/base
vim mytest.sls   # 必须是.sls结尾的

nginx_install:  # 此作业的ID
 pkg.installed:  # 使用的功能
  - name: nginx  # 参数

说明: sls作业脚本遵循yaml语法 

运行作业脚本

salt '*' state.sls mytest   # 注意是作业脚本文件名

state.sls也可以指定读取哪个环境:state.sls salt_env=’dev’xxxx.sls,这个xxxx.sls可以不在top.sls中记录。 

作业目录

一般会将作业的脚本通过目录来分类,例如刚才我们创建的mysql.sls就可以归为web类,可以在base目录下创建一个web目录,存放这类的作业脚本,然后运行的时候通过点.来区分目录结构,如下

cd /srv/salt/base
mkdir web
mv mytest.sls web
salt '*' state.sls web.mytest  # 注意 文件夹名.文件名

state.highstate高级状态

state.sls默认读取base环境,但是它并不会读取top.sls文件。你可以指定state.sls执行哪个sls文件,只要这个sls文件在base环境下存在;

state.highstate会读取所有环境(包括base环境)的top.sls文件,并且执行top.sls文件内容里面定义的sls文件,不在top.sls文件里面记录的sls则不会被执行;

用法:

cd /srv/salt/base
vim top.sls
base:
 '*':   # 指定minion, * 即所有minion
  - web.mytest  # 执行的作业脚本
 '192.168.3.82':   # 指定minion
  - web.mytest2  # 执行的作业脚本
salt '*' state.highstate

 问题:

The function"state.sls" is running as PID 3869 and was started at 2022, Mar 23 10:19:32.691177 with jid 20220323101932691177

原因:salt-minion执行的 sls策略未执行完有收到了sls策略任务,或者并发的执行两个sls策略出现的问题

解决

添加 queue=true 参数, 这样会判断如果当前正在运行任何其他状态,这会将状态排队。请记住,此选项会为每个排队的状态运行启动一个新线程

salt "*" state.sls firewalld.level queue=true

作业脚本内可以使用的方法功能:

salt 一些state模块函数的使用方法记录 - LYCong - 博客园

SaltStack其他常用的状态模块和方法 - *年少轻狂* - 博客园

参考:

SaltStack入门 - *年少轻狂* - 博客园

 saltstack使用指南:saltstack组件之state状态管理_东城绝神的博客-CSDN博客_saltstack state

saltstack的state.sls和state.highstate之区别

若出现 State pkg.installed found in sls mytest is unavailable 错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值