自动化运维之SaltStack
在生产环境中,服务器往往不只一台,有可能是成千上万台。对于运维人员来说,如果单独对每一台服务器进行管理,工作难度实在是太大了。SaltStack是一个服务器基础设施管理工具,它具有配置管理,远程执行,监控等功能。SaltSack有Python语言编写,是非常简单易用和轻量级的管理工具
SaltStack原理
SaltStack由Master和Minion构成,master是服务端,表示一台服务器;minion是客户服务端,表示多台服务器。在master上发送命令给minion,minion就会执行相应的命令。master与minion之间是通过ZeroMQ(消息队列)进行通信的。
SaltStack的master端监听4505与4506端口,4505为master和minion认证通信端口,4506为master用来发送命令或者接受minion的命令执行返回信息。
当客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,而master通过这条TCP连接对客户端进行控制,如果连接断开,master对客户端将不能进行控制,但是,当客户端检查到连接断开后,会定期向master端请求注册连接。
SaltStack常用模块
SaltStack提供了非常多的功能模块,以便于对操作系统的基础功能和常用工具的操作
(1)pkg模块
pkg模块的作用是包管理,包括增删更新
(2)file模块
file模块的作用是管理文件操作,包括同步文件,设置文件权限和所属用户组,删除文件等操作
(3)cmd模块
cmd模块的作用是在minion上执行命令或者脚本
(4)user模块
user模块的作用是管理系统帐号操作
(5)service模块
service模块的作用是管理系统服务操作
(6)cron模块
cron模块的作用是管理cron服务操作
部署环境介绍
角色 主机名 IP master master.saltstack.com 192.168.195.147 minion web01.saltstack.com 192.168.195.167 minion web02.saltstack.com b60 192.168.195.168
SaltStack安装部署
修改三台服务器主机名
hostnamectl set-hostname master.saltstack.com //在master修改
hostnamectl set-hostname web01.saltstack.com
hostnamectl set-hostname web02.saltstack.com
修改三台hosts文件(内容相同)
vim /etc/hosts
192.168.195.147 master.saltstack.com
192.168.195.167 web01.saltstack.com
192.168.195.168 web02.saltstack.com
init 6 //分别重启系统 让各主机名生效
安装saltstack
重启之后将三台服务器的防火墙关闭,selinux功能关闭
systemctl stop firewalld.service
setenforce 0
分别为三台机器添加epel源,本地有官方源
yum install epel-release -y #安装epel源
master上安装saltsatck服务端
yum install salt-master -y #安装 master salt 服务
安装好之后修改配置文件
vim /etc/salt/master
第15行
interface: 192.168.195.147 # master 监控地址
第215行
auto_accept: True #开启 避免要运行salt-key来确认证书认证,自动授权同意
第416行
file_roots: #开启saltstack文件根目录位置,存放文件
base:
- /srv/salt #默认文件夹不存在,需要创建
第710行529GG
nodegroups:
group1: 'web01.saltstack.com' #指定被控制服务器主机名
group2: 'web02.saltstack.com'
第552行
pillar_opts: True #开启pillar功能
第529行
pillar_roots: #pillar的主目录,存放动态信息
base:
- /srv/p 111c illar #默认文件夹不存在,需要创建
mkdir /srv/salt #创建
mkdir /srv/pillar
cat /etc/salt/master | grep -v ^$ | grep -v ^# #查看配置文件修改内容
systemctl start salt-master.service #开启服务
netstat -antp | egrep '4505|4506' #查看 4505 4506 端口是否打开
被管理端minion上的部署配置
两台minion上安装saltstack客户端
yum -y install salt-minion #安装 minion salt 服务
安装好之后修改配置文件
vim /etc/salt/minion
第16行
master: 192.168.195.147 #指向 master IP地址
第78行
和master配置文件中节点服务器名称统一
id:web01.saltstack.com #节点一上修改
id:web02.saltstack.com #节点二上修改
启动被监控主机服务
systemctl start salt-minion.service
在监控端master查看管理的主机
salt-key list #查看被控主机
在主控端测试与被控端的通信状态!
salt '*' test.ping 测试与被管理端是否网络连通
salt '*' cmd.run 'df -h' //远程执行命令
查看被控主机上grains所有值:(每次minion在启动是都会获取客户端信息)
salt 'web01.saltstack.com' grains.items (静态数据)
salt 'web01.saltstack.com' pillar.items (动态数据)
配置管理安装Apache
下面进行的演示是远程通过 yum 方式安装 Apache。步骤如下:
修改配置文件
vi /etc/salt/master // 打开如下内容的注释
file_roots:
base:
- /srv/salt/
注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)
vi /srv/salt/top.sls
base:
'*':
- apache
注意:'*',则表示在所有的客户端执行 apache 模块。
vi /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
执行命令
salt '*' state.highstate
在minion上查看apache服务是否安装成功
- 运维自动化之Saltstack( 三)Saltstack的数据信息采集者Grains和Pillar
- 运维自动化之SALTSTACK简单入门
- saltstack 自动化运维神器(四)salt-ssh
- 运维自动化之Saltstack(五)配置管理
- 自动化运维工具Saltstack详细介绍
- 自动化运维之saltstack(三)常用模块使用之file
- Ansible vs SaltStack 谁才是自动化运维好帮手?
- 自动化运维三贱客之 SaltStack 安装
- SaltStack (1)运维自动化部署
- saltstack:运维自动化工具
- 自动化运维神器之saltstack (五)salt-ssh的应用场景
- 自动化运维之SaltStack
- saltstack运维自动化的安装与简单配置(一)
- 自动化运维神器之saltstack (三)节点组及复合匹配器
- 自动化运维工具Saltstack使用杂记
- 自动化运维工具之SaltStack-1、SaltStack介绍及安装
- 自动化运维工具之SaltStack-2、SaltStack配置管理
- 自动化运维工具SaltStack - 分组(使用记录,groups)
- 自动化运维之 部署Saltstack 并批量部署 Nginx
- 运维自动化之Saltstack使用详解