1.什么是saltstack?

saltstack是一个配置管理系统,能维护预定义状态的远程节点。
saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。
saltstack是运维人员提高工作效率、规范业务配置与操作的利器。
saltstack的核心功能是:使命令发送到远程系统是并行的而不是串行;使用安全加密的协议;使用最小最快的网络载荷;提供简单的编程接口。
saltstack同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。

2.saltstack的通信机制

(1)saltstack采用C/S模型,(这也是他和ansible最大的区别),minion与master之间通过ZeroMQ(也叫做零MQ,即轻量级)消息队列通信,默认监听4505端口。
ZeroMQ是saltstack的一大优势,使得他比ansible快很多。
(2)Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口。

2.saltstack的安装与配置

【实验环境】:用server1做saltstack做master,用server2做minion端。

我们可以通过配置saltstack官网里的yum仓库来进行安装。yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

我们也可以使用aliyun的开源镜像:

saltstack state文件传参 saltstack有哪些优点_saltstack


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_02


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_03


saltstack state文件传参 saltstack有哪些优点_vim_04


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_05


saltstack state文件传参 saltstack有哪些优点_saltstack_06


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_07


saltstack state文件传参 saltstack有哪些优点_saltstack_08


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_09


saltstack state文件传参 saltstack有哪些优点_saltstack_10


saltstack state文件传参 saltstack有哪些优点_nginx_11


saltstack state文件传参 saltstack有哪些优点_nginx_12


saltstack state文件传参 saltstack有哪些优点_运维_13


saltstack state文件传参 saltstack有哪些优点_vim_14


saltstack state文件传参 saltstack有哪些优点_运维_15


saltstack state文件传参 saltstack有哪些优点_nginx_16


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_17


saltstack state文件传参 saltstack有哪些优点_saltstack_18


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_19

3.saltstack的远程执行

(1)远程执行shell命令

salt命令由三个主要部分组成:
salt ‘</target/>’ </function/> [arguments]
target:指定那些minion,默认的规则是使用glob匹配minion id。如salt ‘*’ test.ping
Targets:也可以使用正则表达式:
salt -E ‘server[1-3]’ test.ping
Targets:也可以指定列表:
salt -L ‘server2,server3’ test.ping

function是module提供的功能,salt内置了大量有效的functions。
arguments通过空格来界定参数。
salt内置的执行模块列表:http://docs.saltstack.cn/ref/modules/all/index.html

saltstack state文件传参 saltstack有哪些优点_nginx_20


saltstack state文件传参 saltstack有哪些优点_vim_21


saltstack state文件传参 saltstack有哪些优点_运维_22


saltstack state文件传参 saltstack有哪些优点_nginx_23


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_24


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_25


saltstack state文件传参 saltstack有哪些优点_saltstack_26


saltstack state文件传参 saltstack有哪些优点_vim_27


saltstack state文件传参 saltstack有哪些优点_saltstack_28


(2)编写远程执行模块

vim /etc/salt/master

saltstack state文件传参 saltstack有哪些优点_运维_29


saltstack state文件传参 saltstack有哪些优点_nginx_30


saltstack state文件传参 saltstack有哪些优点_nginx_31


saltstack state文件传参 saltstack有哪些优点_saltstack_32


saltstack state文件传参 saltstack有哪些优点_nginx_33


saltstack state文件传参 saltstack有哪些优点_运维_34


(3)了解yaml语法

<1>缩进:salt需要每个缩进级别由俩个空格组成,不要使用tab。

<2>冒号:字典keys在yaml中的表现形式是一个以冒号结尾的字符串。如my_key:my_value。

<3>短横杠:想要表示列表项,使用一个短横杠加一个空格。- list_value_one。

(4)配置管理

salt 状态系统的核心是SLS,或者叫做Slat State文件。
SLS表示系统将会是什么样的状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。

sls文件命名:
(1)sls文件以.sls后缀结尾,但在调用是不会写此后缀
(2)使用子目录来做组织是个很好的选择。
(3)init.sls在一个子目录里面表示引导文件,也就表示子目录本身,所以apache/init.sls就是表示apache。
(4)如果同时存在apache.sls和apache/init.sls,则apache/init.sls被忽略,apache.sls将被用来表示apache。

创建一个sls文件:

vim /srv/salt/apache.sls

saltstack state文件传参 saltstack有哪些优点_vim_35


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_36


saltstack state文件传参 saltstack有哪些优点_nginx_37

vim /srv/salt/apache.sls

saltstack state文件传参 saltstack有哪些优点_nginx_38


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_39

vim /srv/salt/apache.sls

saltstack state文件传参 saltstack有哪些优点_nginx_40


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_41


saltstack state文件传参 saltstack有哪些优点_saltstack_42


saltstack state文件传参 saltstack有哪些优点_saltstack_43


saltstack state文件传参 saltstack有哪些优点_saltstack_44


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_45


saltstack state文件传参 saltstack有哪些优点_nginx_46

vim init.sls  ##我们来编辑一下这个init.sls文件

saltstack state文件传参 saltstack有哪些优点_nginx_47


saltstack state文件传参 saltstack有哪些优点_nginx_48


saltstack state文件传参 saltstack有哪些优点_运维_49


saltstack state文件传参 saltstack有哪些优点_saltstack_50


saltstack state文件传参 saltstack有哪些优点_vim_51


saltstack state文件传参 saltstack有哪些优点_运维_52


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_53

vim init.sls  ##编辑这个文件

saltstack state文件传参 saltstack有哪些优点_运维_54


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_55


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_56


saltstack state文件传参 saltstack有哪些优点_nginx_57


saltstack state文件传参 saltstack有哪些优点_nginx_58


saltstack state文件传参 saltstack有哪些优点_vim_59

vim init.sls  ##编辑这个文件

saltstack state文件传参 saltstack有哪些优点_nginx_60

vim /srv/salt/apache/files/httpd.conf  ##编辑这个文件

saltstack state文件传参 saltstack有哪些优点_vim_61


saltstack state文件传参 saltstack有哪些优点_vim_62


saltstack state文件传参 saltstack有哪些优点_vim_63


saltstack state文件传参 saltstack有哪些优点_运维_64


saltstack state文件传参 saltstack有哪些优点_运维_65


上面配置文件修改了端口号,但是netstat查看端口号没有被修改,是因为没有触发。

vim init.sls

saltstack state文件传参 saltstack有哪些优点_运维_66

vim /srv/salt/apache/files/httpd.conf  ##编辑这个文件

saltstack state文件传参 saltstack有哪些优点_运维_67


saltstack state文件传参 saltstack有哪些优点_vim_68


saltstack state文件传参 saltstack有哪些优点_运维_69

vim /srv/salt/apache/files/httpd.conf  ##再来修改一下来源文件中的httpd的配置文件

saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_70


saltstack state文件传参 saltstack有哪些优点_nginx_71


saltstack state文件传参 saltstack有哪些优点_运维_72


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_73

vim init.sls

saltstack state文件传参 saltstack有哪些优点_运维_74


saltstack state文件传参 saltstack有哪些优点_运维_75


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_76


上面我们是一台master和一台minion端,现在我们来再加一台minion端,来更加深入掌握.sls文件的编写和推入。

saltstack state文件传参 saltstack有哪些优点_vim_77


saltstack state文件传参 saltstack有哪些优点_运维_78


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_79


saltstack state文件传参 saltstack有哪些优点_vim_80


saltstack state文件传参 saltstack有哪些优点_nginx_81


saltstack state文件传参 saltstack有哪些优点_vim_82


saltstack state文件传参 saltstack有哪些优点_vim_83


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_84


这里我们来做一个nginx源码包的安装启动配置。

cd /srv/salt 
mkdir nginx  ##master端创建一个nginx目录
cd nginx  ##进入nginx
mkdir files  ##建立一个files目录,将nginx的源码包存放到这里

saltstack state文件传参 saltstack有哪些优点_nginx_85


saltstack state文件传参 saltstack有哪些优点_运维_86

cd ..  ##回到上一级目录
vim init.sls

saltstack state文件传参 saltstack有哪些优点_vim_87


saltstack state文件传参 saltstack有哪些优点_vim_88


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_89


saltstack state文件传参 saltstack有哪些优点_运维_90


saltstack state文件传参 saltstack有哪些优点_nginx_91

vim init.sls  ##编辑一下nginx/init.sls文件

saltstack state文件传参 saltstack有哪些优点_vim_92


saltstack state文件传参 saltstack有哪些优点_nginx_93


saltstack state文件传参 saltstack有哪些优点_vim_94


上面我们有解压安装编译成功了,现在我们来启动一下,平常我们是用systemd的方式,这里我们用脚本方式来启动nginx服务。

saltstack state文件传参 saltstack有哪些优点_saltstack_95


saltstack state文件传参 saltstack有哪些优点_saltstack_96


saltstack state文件传参 saltstack有哪些优点_vim_97


saltstack state文件传参 saltstack有哪些优点_nginx_98

vim init.sls  ##编辑nginx/init.sls这个文件

saltstack state文件传参 saltstack有哪些优点_saltstack_99

vim /srv/salt/nginx/files/nginx.service  ##上面init.sls文件中有文件来源,所以我们需要将nginx的启动脚本文件放在这个目录下

saltstack state文件传参 saltstack有哪些优点_vim_100


saltstack state文件传参 saltstack有哪些优点_nginx_101


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_102


saltstack state文件传参 saltstack有哪些优点_vim_103


saltstack state文件传参 saltstack有哪些优点_运维_104


saltstack state文件传参 saltstack有哪些优点_saltstack_105


前面我们已经完成了nginx服务的开启,现在我们来设置一下开机启动,还有配置文件的监视。

vim inits.sls  ##编辑nginx/init.sls文件

saltstack state文件传参 saltstack有哪些优点_vim_106


saltstack state文件传参 saltstack有哪些优点_vim_107


saltstack state文件传参 saltstack有哪些优点_saltstack_108


现在我们来修改一下这个conf文件。

saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_109

vim /srv/salt/nginx/files/nginx.conf  ##修改一下这个文件

saltstack state文件传参 saltstack有哪些优点_vim_110


saltstack state文件传参 saltstack有哪些优点_nginx_111


saltstack state文件传参 saltstack有哪些优点_saltstack_112


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_113


saltstack state文件传参 saltstack有哪些优点_vim_114


saltstack state文件传参 saltstack有哪些优点_vim_115

vim nginx.conf  ##编辑此文件

saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_116


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_117


saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_118


saltstack state文件传参 saltstack有哪些优点_运维_119


这里我们再来看一下top文件

saltstack state文件传参 saltstack有哪些优点_saltstack state文件传参_120


saltstack state文件传参 saltstack有哪些优点_saltstack_121


saltstack state文件传参 saltstack有哪些优点_vim_122


saltstack state文件传参 saltstack有哪些优点_vim_123


saltstack state文件传参 saltstack有哪些优点_saltstack_124


saltstack state文件传参 saltstack有哪些优点_saltstack_125


saltstack state文件传参 saltstack有哪些优点_nginx_126