saltstack是一个服务器基础设施管理工具,它具备配置管理、远程执行、监控等功能。saltstack由python语言编写,是很是简单易用和轻量级的管理工具。node
saltstack由master和minion构成,Master是服务端,表示一台服务器;Minion是客户服务端,表示多台服务器。在Master上发送命令给符合条件的Minion,Minion就会执行相应的命令,Master和Minion之间经过ZeroMQ(消息队列)进行通讯的。python
三台服务器的部署参数如表所示:web
1.SaltStack安装apache
1)设置三台服务器的名称和hosts文件,重启服务器便于系统识别。vim
master: [root@master salt]# vim /etc/hostname master.saltstack.com [root@master salt]# vim /etc/hosts 192.168.126.138 master.saltstack.com 192.168.126.147 web01.saltstack.com 192.168.126.157 web02.saltstack.com minion1: [root@web01 ~]# vim /etc/hostname web01.saltstack.com [root@web01 ~]# vim /etc/hosts 192.168.126.138 master.saltstack.com 192.168.126.147 web01.saltstack.com 192.168.126.157 web02.saltstack.com minion2: [root@web01 ~]# vim /etc/hostname web02.saltstack.com [root@web01 ~]# vim /etc/hosts 192.168.126.138 master.saltstack.com 192.168.126.147 web01.saltstack.com 192.168.126.157 web02.saltstack.com ~
2)三台服务上都须要安装epel源centos
[root@master salt]# yum install epel-release -y
3)在主控端(master)上安装saltstack软件。api
[root@master salt]# yum install salt-master -y
4)配置主控端文件/etc/salt/master。服务器
[root@master salt]# vim /etc/salt/master interface: 192.168.126.138 #15行 /监听地址本地地址 auto_accept: True #215行 /自动认证被控端的认证 file_roots: #416行 /saltstack文件根目录位置,注意这个目录默认是没有的,须要建立。 base: - /srv/salt pillar_roots: #529行 /修改pillar的主目录,须要建立。 base: - /srv/pillar pillar_opts: True #552行 /开启pillar功能 nodegroups: #710行 /组的分类 group1: 'web01.saltstack.com' group2: 'web02.saltstack.com'
5)查看主控端修改的内容运维
[root@master ~]# cat /etc/salt/master | grep -v ^$ | grep -v ^# interface: 192.168.126.138 auto_accept: True file_roots: base: - /srv/salt pillar_roots: base: - /srv/pillar pillar_opts: True nodegroups: group1: 'web01.saltstack.com' group2: 'web02.saltstack.com'
6)建立salt根目录及pillar目录tcp
[root@master ~]# mkdir /srv/salt [root@master ~]# mkdir /srv/pillar
7)开启salt-master服务并查看4505端口和4506端口是否开启
[root@master ~]#systemctl stop firewalld.service [root@master ~]#setenforce 0 [root@master ~]#systemctl start salt-master.service [root@master ~]# netstat -ntap | egrep '4505|4506' tcp 0 0 192.168.126.138:4505 0.0.0.0:* LISTEN 5918/python tcp 0 0 192.168.126.138:4506 0.0.0.0:* LISTEN 5936/python
8)在两台被控端(minion)上安装saltstack软件
[root@web01 ~]#yum install salt-minion -y
9)配置两台被控端配置文件/etc/salt/minion
[root@web01 ~]#vim /etc/salt/minion master: 192.168.126.138 #16行 /指定主控端IP id: web01.saltstack.com #78行 /指定被控主机名
10)分别启动两台被控端服务
[root@web01 ~]#systemctl stop firewalld.service [root@web01 ~]#setenforce 0 [root@web01 ~]#systemctl start salt-minion.service
11)测试主控端与被控端的通讯状态
[root@master ~]# salt '*' test.ping web01.saltstack.com: True web02.saltstack.com: True
2.saltstack批量部署Apache
1)修改配置文件/etc/salt/master
[root@master ~]# vim /etc/salt/master file_roots: base: - /srv/salt/ 注意:环境:base、dev(开发环境)、test(测试环境)、prod(生成环境)
2)建立top.sls文件并写入如下内容
[root@master ~]# vim /srv/salt/top.sls base: '*': #表示在全部的客户端执行apache模块 - apache ~
3)建立apache.sls文件并写入如下内容
[root@master ~]# vim /srv/salt/apache.sls apache-service: pkg.installed: - names: - httpd - httpd-devel service.running: - name: httpd - enable: True
4)重启salt-master服务
[root@master ~]#systemctl restart salt-master
5)刷新state配置命令,让两台被控端去执行安装apache并配置。
[root@master salt]# salt '*' state.highstate web02.saltstack.com: ---------- ID: apache-service Function: pkg.installed Name: httpd Result: True Comment: The following packages were installed/updated: httpd Started: 15:41:54.228461 Duration: 157517.576 ms Changes: ---------- apr: ---------- new: 1.4.8-3.el7_4.1 old: apr-util: ---------- new: 1.5.2-6.el7 old: httpd: ---------- new: 2.4.6-80.el7.centos.1 old: httpd-tools: ---------- new: 2.4.6-80.el7.centos.1 old: mailcap: ---------- new: 2.1.41-2.el7 old: ---------- ID: apache-service Function: pkg.installed Name: httpd-devel Result: True Comment: The following packages were installed/updated: httpd-devel Started: 15:44:31.928768 Duration: 61210.573 ms Changes: ---------- apr-devel: ---------- new: 1.4.8-3.el7_4.1 old: apr-util-devel: ---------- new: 1.5.2-6.el7 old: cyrus-sasl: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-devel: ---------- new: 2.1.26-23.el7 old: cyrus-sasl-gssapi: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-lib: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-md5: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-plain: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-scram: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 expat-devel: ---------- new: 2.1.0-10.el7_3 old: httpd-devel: ---------- new: 2.4.6-80.el7.centos.1 old: libdb: ---------- new: 5.3.21-24.el7 old: 5.3.21-20.el7 libdb-devel: ---------- new: 5.3.21-24.el7 old: libdb-utils: ---------- new: 5.3.21-24.el7 old: 5.3.21-20.el7 openldap: ---------- new: 2.4.44-15.el7_5 old: 2.4.44-5.el7 openldap-devel: ---------- new: 2.4.44-15.el7_5 old: ---------- ID: apache-service Function: service.running Name: httpd Result: True Comment: Service httpd has been enabled, and is running Started: 15:45:33.717897 Duration: 4787.005 ms Changes: ---------- httpd: True Summary ------------ Succeeded: 3 (changed=3) Failed: 0 ------------ Total states run: 3 web01.saltstack.com: ---------- ID: apache-service Function: pkg.installed Name: httpd Result: True Comment: The following packages were installed/updated: httpd Started: 15:41:54.383424 Duration: 157125.605 ms Changes: ---------- apr: ---------- new: 1.4.8-3.el7_4.1 old: apr-util: ---------- new: 1.5.2-6.el7 old: httpd: ---------- new: 2.4.6-80.el7.centos.1 old: httpd-tools: ---------- new: 2.4.6-80.el7.centos.1 old: mailcap: ---------- new: 2.1.41-2.el7 old: ---------- ID: apache-service Function: pkg.installed Name: httpd-devel Result: True Comment: The following packages were installed/updated: httpd-devel Started: 15:44:31.684541 Duration: 63010.684 ms Changes: ---------- apr-devel: ---------- new: 1.4.8-3.el7_4.1 old: apr-util-devel: ---------- new: 1.5.2-6.el7 old: cyrus-sasl: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-devel: ---------- new: 2.1.26-23.el7 old: cyrus-sasl-gssapi: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-lib: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-md5: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-plain: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 cyrus-sasl-scram: ---------- new: 2.1.26-23.el7 old: 2.1.26-21.el7 expat-devel: ---------- new: 2.1.0-10.el7_3 old: httpd-devel: ---------- new: 2.4.6-80.el7.centos.1 old: libdb: ---------- new: 5.3.21-24.el7 old: 5.3.21-20.el7 libdb-devel: ---------- new: 5.3.21-24.el7 old: libdb-utils: ---------- new: 5.3.21-24.el7 old: 5.3.21-20.el7 openldap: ---------- new: 2.4.44-15.el7_5 old: 2.4.44-5.el7 openldap-devel: ---------- new: 2.4.44-15.el7_5 old: ---------- ID: apache-service Function: service.running Name: httpd Result: True Comment: Service httpd has been enabled, and is running Started: 15:45:35.659786 Duration: 4142.607 ms Changes: ---------- httpd: True Summary ------------ Succeeded: 3 (changed=3) Failed: 0 ------------ Total states run: 3
经过执行结果看到了三个ID,它们至关于三个任务,第一个安装,第二个配置,第三个启动。并且显示三个都成功了,失败为零。
6)查看被控端httpd是否安装80端口是否开启
[root@web02 ~]# rpm -q httpd httpd-2.4.6-80.el7.centos.1.x86_64 [root@web02 ~]# netstat -ntap | grep 80 tcp6 0 0 :::80 :::* LISTEN 4550/httpd [root@web01 ~]# rpm -q httpd httpd-2.4.6-80.el7.centos.1.x86_64 [root@web01 ~]# netstat -ntap | grep 80 tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1280/dnsmasq tcp6 0 0 :::80 :::* LISTEN 4688/httpd
部署成功