自动化运维系列之SaltStack批量部署Apache服务
saltstack原理
SalStack由master和minion构成,master是服务端,表示一台服务器;minion是客户端,表示多台服务器。在Master上发送命令给符合条件的minion,Minion就会执行相应的命令。Master和Minion之间是通过ZeroMQ(消息队列)进行通信的。
SaltStack的Master端的监听端口是4505和4506,4505端口是Master和Minion认证通信端口;4506端口是Master用来发送命令或者接收Minion的命令执行返回信息。
当客户端启动后,会主动连接Master端注册,然后一直保持该TCP连接,而Master通过这条TCP连接对客户端进行控制。
saltstack常用模块
(1)、pkg模块
pkg模块的作用是包管理,包括增删更新。
(2)、file模块
file模块的作用的管理文件操作,包括同步文件、设置文件权限和所属用户组、删除文件等操作。
(3)、cmd模块
cmd模块的作用是在Minion上执行命令或者脚本。
(4)、user模块
user模块的作用是管理系统账户操作。
(5)、service模块
service模块的作用是管理系统服务操作。
(6)、cron模块
cron模块的作用是管理cron服务操作。
SaltStack部署安装
- 部署环境
角色 | 主机名 | IP地址 |
---|---|---|
master | master.saltstack.com | 172.16.10.138 |
minion | web01.saltstack.com | 172.16.10.147 |
minion | web02.saltstack.com | 172.16.10.146 |
安装部署的操作步骤
- 修改三台服务器的主机名
vim /etc/hostname
三台主机分别为:
master.saltstack.com //(管理)
web01.saltstack.com //(被管理)
web02.saltstack.com //(被管理)
- 修改主机解析文件
vim /etc/hosts
172.16.10.138 master.saltstack.com
172.16.10.147 web01.saltstack.com
172.16.10.146 web02.saltstack.com
//修改完成后,init 6 重启服务器使配置生效
- 重启完成后,首先关闭防火墙
systemctl stop firewalld.service //关闭防火墙
setenforce 0 //关闭增强性安全功能
- 安装服务
yum install -y epel-release //配置安装软件源
yum install -y salt-master //管理端安装
yum install -y epel-release //配置安装软件源
yum install -y salt-minion //被管理端安装
- 管理端配置(修改管理端的配置文件)
vim /etc/salt/master
修改如下:
15行 interface: 172.16.10.138 //监听地址(本地地址)
215行 auto_accept: True //避免要运行salt-key来确认证书认证
416行 file_roots:
base:
- /srv/salt //saltstack文件根目录位置,目录需要创建
710行组分类:
nodegroups:
group1: ‘web01.saltstack.com‘
group2: ‘web02.saltstack.com‘
552行 pillar_opts: True //开启pillar功能,同步文件功能
529行
pillar_roots:
base:
- /srv/pillar //pillar的主目录,需要创建
- 查看对主配置文件做的更改
cat /etc/salt/master | grep -v ^$ | grep -v ^#
- 创建saltstack文件根目录、pillar的主目录
mkdir /srv/salt //创建saltstack文件根目录
mkdir /srv/pillar //创建pillar的主目录
- 启动master服务器(管理端)
systemctl start salt-master.service //开启salt-master服务
systemctl enable salt-master.service //设置开机自启动
netstat -anpt | egrep ‘4505|4506‘ //检查master的端口是否开启
- 被管理端配置
vim /etc/salt/minion
16行 master: 172.16.10.138 //指定主控端IP
78行 id: web01.saltstack.com //指定被控端主机名
id: web02.saltstack.com //第二台被控端主机名
- 开启被控端的服务
systemctl start salt-minion.service
- 主控端测试与被控端的通信状态
salt ‘*‘ test.ping //*表示所有主机
salt ‘*‘ cmd.run ‘df -h‘ //远程执行命令
salt-key //查看在 master 上已经被接受过的客户端
salt ‘web01.saltstack.com‘ grains.items (静态数据)
salt ‘web01.saltstack.com‘ pillar.items (动态数据)
配置管理安装Apache
- 在主控端创建入口文件
vim /srv/salt/top.sls
base:
‘*‘:
- apache
注意:‘*‘,则表示在所有的客户端执行 apache 模块。
- 创建apache.sls文件并写入以下内容
vim /srv/salt/apache.sls
apache-service:
pkg.installed:
- names: // 如果只有一个服务,那么就可以写成 –name: httpd 不用再换一行
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
注意:apache-service 是自定义的 id 名。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running 也是一个函数,来保证指定的服务启动,enable 表示开机启动。
- 重启控制端服务
systemctl restart salt-master.service
- 刷新state配置命令,使两台被控端安装apache并配置启动服务
salt ‘*‘ state.highstate
- 被控端检查验证acaphe服务是否安装启动
原文地址:http://blog.51cto.com/13659301/2160056
时间: 2024-10-26 04:51:37