简单说明salt ‘*’ cmd.run “df -h”
salt 是固定的写法 * 是执行目标 , cmd是执行模块 , run是方法,df –h 就是方法的参数了
master和minion之间的通信除了是加密的的秘钥建立的连接外,通信是通过zeromq来实现的,通过队列的发布订阅机制,master对所有的minion发布命令,通过对目标的限制来确定是哪些minion返回信息
例如需要让slave1来返回命令w的信息
Salt的两大功能,远程执行和状态管理(也叫配置管理),所对应的模块就是执行模块和状态模块
所有在命令行里执行的模块都是执行模块,后续在配置文件里出现的才是状态模块,执行模块和状态模块的名字有些是一样的,甚至参数都一样,注意区分
1. 状态管理
状态的配置文件采用yaml格式,注意冒号后边有空格,通过缩进来辨识层级关系,缩进每次两个空格,用 - 来表示列表,每个 - 后边都会有空格。
状态编写
修改master配置文件
vim /etc/salt/master 677行
添加相关信息
注意缩进和冒号
重启master服务,因为我们修改了配置文件,需要重新弄加载
systemctl restart salt-master
状态管理文件都是sls结尾的,而且是一定要sls结尾,而且文件名要小写。
状态管理就是描述一个状态,符合就返回,不符合就执行命令让你符合,变成符合描述的状态,你安装了就不再安装,没启动服务,我帮你启动起来
/srv/salt/base 下建立一个apache.sls 文件
apache-install:
pkg.installed:
- name: httpd
apache-service:
service.running:
- name: httpd
- enable: True
保存退出:
配置项简单说明:
apache-installed: 这个是id,全局唯一
pkg是模块名,installed是方法名
name是参数,name是sale里边的一个比较特殊的参数,参数值是httpd
整体说就是检查服务器有没有安装httpd这个包,有的话略过,没有的话就会安装上
下边的service是启动模块,也是id唯一,检查httpd是否启动,是否开机启动,如果没有就启动服务并设定开机启动
总的来说是相当于写了一个apache的安装启动脚本,检测是否安装apache,安装后检查是否设定了开机启动和是否启动,没启动给启起来,大体如此!!
为slave1执行这个apache状态管理
salt ‘slave1‘ state.sls apache
可以看到minion id slave1
执行的安装状态id名称,方法,参数和返回状态为True
同样的执行模块返回类似的数据
最后还有Success 和 Failed的返回值
重点看changes下的返回信息,这是改变内容的返回值
如果再次执行命令,可以看到changes返回值就是0了,因为状态符合描述,不作任何改变
这个apache.sls是在base目录下,如果想要分类的更清楚点,我们在base下建立个web的文件夹,将apache.sls放到web下。那么我们之前的执行命令就变成了
salt ‘slave1’ state.sls web.apache
用这种方式来定义层级关系,我们如果有其他的分类,再建立其他的文件夹就可以了
高级状态
上面说的基本的状态管理,如果我一台机器上有apahce、有nginx还有tomcat,那么状态就要执行三次,这时salt引入了高级状态管理
举例说明
base目录下建立一个top.sls的文件
默认的高级状态管理回去base环境的/srv/salt/base下执行top.sls的配置
vim /srv/salt/base/top.sls
base:
‘slave1’:
- web.apache
‘master’:
- web.apache
base是环境名称,这时base环境,如果是测试环境就是test,开发环境是dev,同理生产环境就是prod
slave1和master是minion id ,web.apache是要执行的状态
如果是生产环境一定要运行一台机器来测试
salt ‘slave1’ state.highstate test=True
test=True 就是测试而且不执行,不报错再运行一台机器,再没问题之后,所有环境再执行,一定要小心谨慎,自动化如果出问题就是大面积的范围伤害
下一篇文章写:saltstack安装配置lamp和tomcat环境