自动化运维之SaltStack
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维之SaltStack相关的知识,希望对你有一定的参考价值。
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服务操作。
SaltStack安装部署:
角色 | 操作系统 | 主机名 | IP地址 |
---|---|---|---|
master | CentOS7 | master.saltstack.com | 192.168.72.128 |
minion | CentOS7 | web01.saltstack.com | 192.168.72.159 |
minion | CentOS7 | web02.saltstack.com | 192.168.72.161 |
1.修改三台服务器主机名:
* hostnamectl set-hostname master.saltstack.com
* hostnamectl set-hostname web01.saltstack.com
* hostnamectl set-hostname web02.saltstack.com
2.修改三台hosts文件(内容相同):
* vim /etc/hosts
192.168.72.128 master.saltstack.com
192.168.72.159 web01.saltstack.com
192.168.72.161web02.saltstack.com
* init 6 #分别重启系统 让各主机名生效
3.重启之后将三台服务器的防火墙关闭,selinux功能关闭;分别为三台机器添加epel源,本地有官方源.
* systemctl stop firewalld.service
* setenforce 0
* yum install epel-release -y #安装epel源
4.master上安装saltsatck服务端:
* yum install salt-master -y #安装 master salt 服务
5.安装完成之后修改配置文件:
* vim /etc/salt/master
15行:interface: 192.168.72.128 # master 监控地址
215行:auto_accept: True #开启 避免要运行salt-key来确认证书认证,自动授权同意
416行:
file_roots: #开启saltstack文件根目录位置,存放文件
base:
- /srv/salt #默认文件夹不存在,需要创建
710行:
nodegroups:
group1: ‘web01.saltstack.com‘ #指定被控制服务器主机名
group2: ‘web02.saltstack.com‘
552行:pillar_opts: True #开启pillar功能
529行:
pillar_roots: #pillar的主目录,存放动态信息
base:
- /srv/pillar #默认文件夹不存在,需要创建
6.根据刚才修改的配置文件创建相应的目录
* 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 端口是否打开
7.在两台minion上安装saltstack客户端:
* yum -y install salt-minion #安装 minion salt 服务
8.安装好之后修改配置文件(两台minion都需要):
* vim /etc/salt/minion
16行:master: 192.168.72.128 #指向 master IP地址
78行:和master配置文件中节点服务器名称统一
id:web01.saltstack.com #节点一上修改
id:web02.saltstack.com #节点二上修改
9.启动被监控主机服务
* systemctl start salt-minion.service
10.在监控端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 (动态数据)
11.配置管理安装Apache,下面进行的演示是远程通过 yum 方式安装 Apache。步骤如下:
* 修改配置文件
* vi /etc/salt/master // 打开如下内容的注释
file_roots:
base:
- /srv/salt/
12.注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)
* vi /srv/salt/top.sls
base:
‘*‘:
- apache
注意:‘*‘,则表示在所有的客户端执行 apache 模块。
13.编写安装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 表示开机启动。
14.重启服务
* systemctl restart salt-master
执行命令
* salt ‘*‘ state.highstate
15.查看apache服务是否安装成功:
以上是关于自动化运维之SaltStack的主要内容,如果未能解决你的问题,请参考以下文章