自动化运维之SaltStack
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维之SaltStack相关的知识,希望对你有一定的参考价值。
SaltStack原理
SaltStack由Master和Minion构成,Master 是服务端, 表示一台服务器;Minion是客户服务端,表示多台服务器。在Master上发送命令给符合条件的Minion,Minin就会执行相应的命令,Master和Minion之间是通过ZeroMQ (消息队列)进行通信的。
SaltStack的Master端监听4505与4506端口,4505为Master和Minion认证通信端口,4506为Master用来发送命令或者接收Minion的命令执行返回信息。
当客户端启动后,会主动连接Master端注册,然后一直保持该TCP连接,而Master通过这条TCP连接对客户端进行控制。如果连接断开,Master对客户端将不能进行控制。但是,当客户端检查到连接断开后,会定期向Master端请求注册连接。
SaltStack常用模块
- pkg模块:包管理,包括增删更新。
- file模块:管理文件操作,包括同步文件、设置文件权限和所属用户组、删除文件等操作。
- cmd模块:在Minion上执行命令或者脚本。
- user模块:管理系统账号操作。
- service模块:管理系统服务操作。
- cron模块:管理cron服务操作。
SaltStack批量部署并配置Apache
部署环境
角色 | 主机名 | IP地址 |
---|---|---|
master | master | 192.168.10.157 |
minion | web1 | 192.168.10.161 |
minion | web2 | 192.168.10.129 |
开始部署
SaltStack安装
1、修改所有主机的主机名和hosts文件后重启
master:
vim /etc/hostname
master //修改主机名
vim /etc/hosts
192.168.10.157 master
192.168.10.161 web1
192.168.10.129 web2
init 6 //重启
web1:
vim /etc/hostname
web1 //修改主机名
vim /etc/hosts
192.168.10.157 master
192.168.10.161 web1
192.168.10.129 web2
init 6 //重启
web2:
vim /etc/hostname
web2 //修改主机名
vim /etc/hosts
192.168.10.157 master
192.168.10.161 web1
192.168.10.129 web2
init 6 //重启
2、三台主机上安装epel源
yum install epel-release -y
3、master上安装salt-master
yum install salt-master -y
4、编辑master主机上的salt配置文件
vim /etc/salt/master
interface: 192.168.10.157 //15行,改为为本机地址
auto_accept: True //215行,自动认证被控端的认证
file_roots: //416-418行,去掉注释开启
base:
- /srv/salt //这个目录默认是没有的,需要创建。
pillar_roots: //529-531行, 去掉注释开启
base:
- /srv/pillar //这个目录默认是没有的,需要创建。
pillar_opts: True //552行,开启pillar功能
nodegroups: //710行,组的分类
group1: ‘web1‘
group2: ‘web2‘
5、查看修改的内容
cat /etc/salt/master | grep -v ^$ | grep -v ^#
6、创建salt目录及pillar目录
mkdir /srv/salt
mkdir /srv/pillar
7、关闭防火墙和安全功能,开启salt-master服务并查看4505端口和4506端口是否开启
systemctl stop firewalld.service
setenforce 0 //关闭防火墙和安全功能
systemctl start salt-master.service 开启服务
netstat -ntap | egrep ‘4505|4506‘
8、在两台被控端web1,web2上安装salt-minion
yum install salt-minion -y
9、编辑salt-minion的配置文件
vim /etc/salt/minion
master: 192.168.10.157 //16行,指定控制端IP
id: web1 //78行,指定本机主机名,web2则为web2
10、两台被控端关闭防火墙和安全功能,开启服务
systemctl stop firewalld.service
setenforce 0 //关闭防火墙和安全功能
systemctl start salt-minion.service //开启服务
11、测试控制端与被控端的通信状态
salt ‘*‘ test.ping
web2:
True
web1:
True
SaltStack批量部署Apache
1、master上创建top.sls文件并写入以下内容
vim /srv/salt/top.sls
base:
‘*‘: //表示在所有的客户端执行apache模块
- apache
2、master上创建apache.sls文件并写入以下内容
vim /srv/salt/apache.sls
apache-service:
pkg.installed:
- names:
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
3、重启salt-master服务
systemctl restart salt-master
4、刷新state配置命令,让两台被控端去执行安装apache
salt ‘*‘ state.highstate
web2:
----------
ID: apache-service
Function: pkg.installed
Name: httpd
Result: True
Comment: Package httpd is already installed.
Started: 15:22:08.547203
Duration: 1363.436 ms
Changes:
----------
ID: apache-service
Function: pkg.installed
Name: httpd-devel
Result: True
Comment: Package httpd-devel is already installed.
Started: 15:22:09.910806
Duration: 0.533 ms
Changes:
----------
ID: apache-service
Function: service.running
Name: httpd
Result: True
Comment: Service httpd is already enabled, and is in the desired state
Started: 15:22:09.911959
Duration: 360.802 ms
Changes:
Summary
------------
Succeeded: 3
Failed: 0
------------
Total states run: 3
web1:
----------
ID: apache-service
Function: pkg.installed
Name: httpd
Result: True
Comment: Package httpd is already installed.
Started: 15:22:08.546047
Duration: 1364.252 ms
Changes:
----------
ID: apache-service
Function: pkg.installed
Name: httpd-devel
Result: True
Comment: Package httpd-devel is already installed.
Started: 15:22:09.910497
Duration: 0.516 ms
Changes:
----------
ID: apache-service
Function: service.running
Name: httpd
Result: True
Comment: Service httpd is already enabled, and is in the desired state
Started: 15:22:09.911733
Duration: 375.981 ms
Changes:
Summary
------------
Succeeded: 3
Failed: 0
------------
Total states run: 3
接上图
通过执行结果看到了三个ID,它们相当于三个任务,第一个安装httpd,第二个安装httpd-devel,第三个启动。并且显示三个都成功了,失败为零。
5、两台被控端上查看是否已安装Apache并开启
web1:
web2:
实验完成
以上是关于自动化运维之SaltStack的主要内容,如果未能解决你的问题,请参考以下文章