千家信息网

自动运维工具 -saltstack安装使用(实例演示!!!)

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,saltstack概述在生产环境中,服务器往往不止一两台,一般都是成千上万台服务器。这对运维人员来说管理难度太大了,而saltstack是一个新的基础平台管理工具,可以支持管理上万台服务器规模,数秒钟
千家信息网最后更新 2024年09月22日自动运维工具 -saltstack安装使用(实例演示!!!)

saltstack概述

在生产环境中,服务器往往不止一两台,一般都是成千上万台服务器。这对运维人员来说管理难度太大了,而saltstack是一个新的基础平台管理工具,可以支持管理上万台服务器规模,数秒钟即可完成数据传递,是现在用的比较多的自动化运维工具之一。Salt是一个基础平台管理工具。SaltStack采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。master监听4505和4506端口,4505为master和minion认证通信端口,4506为master用来发送命令或者接收minion的命令执行返回信息。

saltstack介绍

1、基于python语言开发的

2、轻量级管理工具,批量执行命令

3、常用模板

名称含义
pkg包,有增删更新
file用于管理文件,包括同步文件、设置文件权限和所属用户组、删除文件等操作
cmd在minion上执行命令或者脚本
use管理系统账户操作
service管理系统服务操作
cron管理crontab任务

4、saltstack数据系统

  • Grains(静态数据)

  • pillar(动态数据)

saltstack三大功能

  • 远程执行

  • 配置管理

  • 云管理

saltstack工作原理

SaltStack客户端(Minion)在启动时,会自动生成一套密钥,包含私钥和公钥。之后将公钥发送给服务器端,服务器端验证并接受公钥,以此来建立可靠且加密的通信连接。同时通过消息队列ZeroMQ在客户端与服务端之间建立消息发布连接。
  • Minion是SaltStack需要管理的客户端安装组件,会主动去连接 Master端,并从Master端得到资源状态信息,同步资源管理信息。

  • Master作为控制中心运行在主机服务器上,负责Salt命令运行和资源状态的管理,Master上执行某条指令通过队列下发到各个Minions去执行,并返回结果。

  • ZeroMQ是一款开源的消息队列软件,用于在Minion端与Master端建立系统通信桥梁。

saltstack优缺点

  • 优点
速度快,基于消息队列+线程,跑完多台设备,都是毫秒级别的;非常灵活,源码是python,方便理解和自定义模块(因为python相对于其他的perl、ruby等还是很好理解的)命令简单,功能强大。
  • 缺点
部署minion端较为不便。

Saltstack重要组件

  • grains
grains是在minion(客户端)启动时收集到的一些信息,比如操作系统类型、网卡ip等静态信息。grains 的信息并不是动态的,并不会时时变更,它只是在 minion 启动时收集到的。
  • pillar
pillar和grains不一样,是在master上定义的,并且是针对minion定义的一些信息。像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等。
  • state
state是saltstack的最核心的功能,通过预先指定好的sls文件对 被控主机进行管理(包括:包、网络配置、系统服务、系统用户等)

Saltstack常用命令

  • 拷贝文件到客户端
salt 'client2' cp.get_file salt:#apache.sls /tmp/cp.txt
  • 拷贝目录到客户端
salt 'client2' cp.get_dir salt:#test /tmp
  • 显示存活的客户端
salt-run manage.up
  • 命令下执行服务端的脚本
#编辑脚本vim /srv/salt/test/shell.sh#! /bin/shecho "salt server do run shell script on client" > /tmp/shell.txt#执行脚本salt 'client2' cmd.script salt:#test/shell.sh

Saltstack操作实例-批量部署apache

  • 环境部署
准备三台机器,这三台机器都关闭selinux,清空防火墙规则。
服务器角色IP地址主机名称
master192.168.142.123master.saltstack.com
minion01192.168.142.124web01.saltstack.com
minion02192.168.142.166web02.saltstack.com
  • 安装 saltstack
#分别为三台机器添加epel源,本地有官方源yum install -y epel-release  #安装epel源#服务器安装yum -y install salt-master
  • 配置 master主机
#安装完成修改主配置文件vim /etc/salt/master#修改如下内容#15行 interface: 192.168.175.132   #监听地址#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 ^#      #查看对主配置文件做的更改
  • 启动服务器
#开启服务systemctl start salt-master#设定服务开机自启systemctl enable salt-master#查看服务端口监听状态netstat -anpt | egrep '4505|4506'
  • 创建salt与pillar文件根目录
mkdir /srv/saltmkdir /srv/pillar
  • 被管理端(minion)安装
#在两台服务器上分别安装yum -y install salt-minion
  • 配置minino端
#修改/etc/salt/minino主配置文件vim /etc/salt/minion#修改配置如下#16行 master: 192.168.175.132     #指定主控端IP#78行 id: web01.saltstack.com     #指定被控端主机名启动被控端服务systemctl start salt-minion
  • 在主控端测试与被控端的通信状态
#查看通信状态salt '*' test.ping#查看所有被管理端的挂载状态salt '*' cmd.run 'df -h'#查看在 master 上已经被接受过的客户端salt-key#查看被控主机上grains所有值(每次minion在启动是都会获取客户端信息)#静态数据salt 'web01.saltstack.com' grains.items#动态数据salt 'web01.saltstack.com' pillar.items
  • 配置管理安装Apache,下面进行的演示是远程通过yum方式安装Apache,步骤如下:
#修改主配置文件vim /etc/salt/master file_roots:  base:    - /srv/salt/#注意:环境:base、dev(开发环境)、test(测试环境)、prod(生产环境)。#创建工作目录mkdir /srv/saltvim /srv/salt/top.slsbase:  '*':    - apache#注意:'*',则表示在所有的客户端执行apache模块。vim /srv/salt/apache.slsapache-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#执行刷新state配置命令salt '*' state.highstate 
  • 在两台minino端验证httpd服务是否安装成功
#查看服务端口监听状态netstst -ntap | grep 80#查看生成的配置文件rpm -qc httpd

谢谢阅读!

服务 管理 文件 配置 客户 客户端 服务器 命令 信息 数据 状态 系统 主机 环境 通信 功能 消息 队列 工具 目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网关可以当作dns服务器填写吗 武汉未来科技互联网 数据库中是否存在视图 mc服务器模型 中国网络安全在世界的地位 各系统的服务器管理器 什么叫网络计算机服务器 防火墙网络安全策略 nat穿透如何确保网络安全 计算机网络技术专科专业介绍 昆山市银来互联网科技有限公司 数据库编程需要学会c吗 无服务器计算的商业价值 银行用户数据库中有两张表 大工19秋网络安全作业答案 服务器安全链接建立失败 网络安全监督管理职责中 北京龙首网络技术有限公司 网络安全的研究生有什么方向 北邮网络安全复试资格线 买一个服务器家用能带几台电脑 禹城租房软件开发 mysql+数据库不更新 网络设备嵌入式数据库 马云会不会软件开发 测试网络安全稳定方法 王安 网络技术服务公司 oracle怎么停数据库 网络安全口诀六句简单好写 国家经济领域内网络安全问题
0