saltstack 简单使用且使用saltstack安装lamp
简单说明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
sls文件如下
vim apache/apache.sls
apache-install:
pkg.installed:
- name: httpd
apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf # 把配置好的文件放节点这个位置
- source: salt://apache/files/httpd.conf # 这是我已经配置好的文件
- user: root
- group: root
- mode: 644
apache-service:
service.running:
- name: httpd
- enable: True
salt "slave1" state.sls apache.apache saltenv=base test=true
vim php/php.sls
php-install:
pkg.installed:
- pkgs:
- php72w-cli
- php72w-fpm
- php72w-common
- php72w-devel
- php72w-embedded
- php72w-pecl-redis
- php72w-gd
- php72w-mbstring
- php72w-mysqlnd
- php72w-opcache
- php72w-pdo
- php72w-xml
php-config:
file.managed:
- name: /etc/php.ini
- source: salt://php/files/php.ini
- user: root
- group: root
- mode: 644
php-config:
file.managed:
- name: /etc/php.ini
- source: salt://php/files/php.ini
- user: root
- group: root
- mode: 644
salt "slave1" state.sls php.php saltenv=base test=True
vim mysql/mysql.sls
mysql-repo:
file.managed: # 先配置国内镜像yum源
- name: /etc/yum.repos.d/MariaDB.repo
- source: salt://mysql/files/MariaDB.repo
- user: root
- gourp: root
- mode: 644
mysql-install:
pkg.installed:
- pkgs:
- MariaDB-server
- MariaDB-client
mysql-config:
file.managed:
- name: /etc/my.cnf
- source: salt://mysql/files/my.cnf
- user: root
- gourp: root
- mode: 644
mysql-service:
service.running:
- name: mariadb
- enable: True
salt "slave1" state.sls mysql.mysql saltenv=base test=True
另外PHP的扩展模块如下,需要的可以参考下
swool
swool-install:
pkg.installed:
- pkgs:
- openssl-dev*
- openssl
- centos-release-scl
- devtoolset-7*
file.managed:
- name: /mnt/swoole-src-4.7.1.tar.gz
- source: salt://php/files/swoole-src-4.7.1.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: scl enable devtoolset-7 bash && cd /mnt && tar -xf swoole-src-4.7.1.tar.gz && cd swoole-src-4.7.1 && /usr/bin/phpize && ./configure --enable-openssl --enable-http2&& make && sudo make install && echo "extension=swoole.so" >>/etc/php.ini && systemctl restart php-fpm
beast.so
beast-install:
file.managed:
- name: /mnt/master.zip
- source: salt://php/files/master.zip
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /mnt && unzip master.zip && cd php-beast-master && /usr/bin/phpize && ./configure && make && make install && echo "extension=beast.so" >>/etc/php.ini && systemctl restart php-fpm
这两个文件也可以整合成一个
下一篇文章写:saltstack安装配置lamp和tomcat环境
浙公网安备 33010602011771号