salt执行模块
运行shell命令
1 | saltstack 支持在master上向client 远程执行命令,并显示命令执行的结果 |
示例:
1 | [root@CentOS-20 ~]# salt \* cmd.run "df -h" |
状态模块
1 | SaltStack使用现有的序列化系统来渲染sls数据。而这个现有的序列化系统就是YAML,而严格的YAML格式往往使现在正在学习SaltStack的同学屡屡掉坑。 |
YAML语法-参考
YAML文件格式-注意点
1 | 1.务必使用空格缩进,第二个层级比第一个层级多2个空格,2、4、6、8以此类推。 |
环境
1 | 系统:CentOS6 |
salt-master主配置文件-修改
1 | 搜索“file_roots”快速定位到对应位置,添加如下: |
软件安装—通过salt安装apache
1 | cd /var/salt/base #进入salt状态模块目录 |
1 | 知识点-扩展: |
1 | 上面使用了state.sls 远程执行命令, state是模块,sls是state模块的一个方法 |
推送文件—编写批量更改dns的sls状态文件
1 | (1)首先定义好resolv.conf配置文件并放到/var/salt/base/files/目录下 |
state模块-介绍
1 | state模块是saltstack配置管理的核心内容,需要熟练掌握如下几个组件以及常用的方法,以后会常用。 |
- file - 管理文件状态
1 | 常用方法: |
1 | 递归管理整个目录--举例: |
1 | 举例: |
1 | /etc/foo.conf: |
- pkg - 管理软件包状态
1 | 常用方法: |
1 | 举例: |
1 | 举例: |
- service - 管理服务状态
1 | 常用方法: |
1 | 举例: |
- cmd 远程执行命令
1 | saltstack 支持在master上向client 远程执行命令,并显示命令执行的结果 |
1 | 示例:使用cmd.run远程执行命令, cmd是模块,run是cmd模块的一个方法 |
- 针对“操作目标” 进行进行过滤
1 | 有时候需要针对远程minion主机进行过滤,如何进行精确匹配呢? |
1 | 普通匹配: |
1 | (1)正则匹配: |
实例:
1 | 要求:给网站web添加认证 |
1 | (1)准备并配置httpd.conf文件, 并放在/var/salt/base/files目录下 |
1 | (2)编辑配置状态文件 |
1 | (3) 执行 |
top.sls
也许你已经发现了,上面我们去执行状态模块文件的方式都是逐一去执行的。那么能否将所有状态模块文件一块执行呢?答案是肯定的
1 | top.sls 是配置管理的入口文件,一切都是从这里开始,在master 主机上,默认存放在/srv/salt/目录,而我已将其定义在了/var/salt目录。 |
top.sls 文件格式
1 | #可以通过正则进行匹配 |
- 编辑top.sls
1 | cd /var/salt/base |
1 | 测试 |
向文件追加内容
1 | cd /var/salt/base |
state的逻辑关系列表及示例
1 | match: 配模某个模块,比如 match: grain match: nodegroup |
state的逻辑关系
require:
依赖某个state,在运行此state前,先运行依赖的state,依赖可以有多个
1 | httpd: # maps to "name" |
watch:
在某个state变化时运行此模块,watch除具备require功能外,还增了关注状态的功能
1 | redis: |
order
优先级比require和watch低,有order指定的state比没有order指定的优先级高
1 | vim: |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/10/18/saltstack进阶学习2/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!