自动运维工具 -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/sh
echo "salt server do run shell script on client" > /tmp/shell.txt

#执行脚本
salt ‘client2‘ cmd.script salt:#test/shell.sh

Saltstack操作实例-批量部署apache

  • 环境部署
准备三台机器,这三台机器都关闭selinux,清空防火墙规则。
服务器角色 IP地址 主机名称
master 192.168.142.123 master.saltstack.com
minion01 192.168.142.124 web01.saltstack.com
minion02 192.168.142.166 web02.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/salt
mkdir /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/salt

vim /srv/salt/top.sls

base:
  ‘*‘:
    - apache
#注意:‘*‘,则表示在所有的客户端执行apache模块。

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

#执行刷新state配置命令
salt ‘*‘ state.highstate 
  • 在两台minino端验证httpd服务是否安装成功
#查看服务端口监听状态
netstst -ntap | grep 80

#查看生成的配置文件
rpm -qc httpd

谢谢阅读!

原文地址:https://blog.51cto.com/14449521/2469201

时间: 2024-10-11 18:26:11

自动运维工具 -saltstack安装使用(实例演示!!!)的相关文章

自动化运维工具SaltStack安装配置

SaltStack是一种全新的基础设置管理方式,部署轻松,在几分钟内可运作起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯.通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理.分发文件.采集服务器数据.操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率.规范业务配置与操作的利器. 特性:(1).部署简单.方便:(2).支持大部分UNIX/Linux及Windows环境:(3).主从集中化管理:(4

自动化运维工具---SaltStack安装部署及简单案例

SaltStack原理 SaltStack由Master(服务端)和Minion(客户端)组成,Master和Minion之间通过ZeroMQ(消息队列)进行通讯,Master和Minion分别监听4505与4506端口,4505为master与minion认证通信端口,4506为master用来发送或者接受minion的命令执行返回信息. 当客户端启动后,会主动链接master端注册,然后一直保持该TCP连接,而master通过这条TCP连接对客户端进行控制,如果连接断开,master将对客户

运维工具SaltStack之一安装部署

运维工具SaltStack之一安装部署 一.概述 salt是一个异构平台基础设置管理工具,使用轻量级的通讯器ZMQ,用Python写成的批量管理工具,完全开源,遵守Apache2协议,与Puppet,Chef功能类似,有一个强大的远程执行命令引擎,也有一个强大的配置管理系统,通常叫做Salt State System. 二.基本原理 采用C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信.minion上

自动化运维工具SaltStack详细部署【转】

==========================================================================================一.基础介绍==========================================================================================1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp

Linux自动运维工具Ansible的使用

Linux自动运维工具Ansible的使用 我们熟悉这个工具后, 可以很轻松的安装k8s. 一.介绍 ansible - run a task on a target host(s) Ansible是一个用Python开发的运维工具, 可以在本地让远程主机执行命令, 项目地址: Github源码, 中文文档 二.安装 简单上阵, 我们的主机都是ubuntu, 请使用root用户: sudo su apt install ansible ansible --version 配置文件: ls /et

运维工具SaltStack之三Grains组件

运维工具SaltStack之三Grains组件 一.grains组件介绍 grains是收集Minion主机的静态.不常变化的基本信息,存储在Minion端本地,如:CPU.内核.操作系统.虚拟化等,并且服务器端可以根据这些信息进行灵活定制或个性化定制,是Saltstack最重要的组件之一,多用来做资产管理的信息收集,主要解决平台的差异性. 如可以使用以下命令: #salt 'minion01' grains.items  #获取minion01主机基本信息 二.grains组件自定义 自定义g

运维工具SaltStack之四Pillar组件

运维工具SaltStack之四Pillar组件 一.pillar组件介绍 跟grains的结构一样,存放需要提供给Minion端的信息,存储在master端.可根据各个机器环境的不同,分别定义变量,然后再sls文件里统一引用,官方表示pillar是存储敏感数据的,主要解决环境的差异性.同时与grains组件还有一个特别的区别:grains数据加载在内存里,即minion启动之后不会变,哪怕修改了grains,除非重启minion或者从master端同步.而pillar修改之后,再获取数据即生效了

自动化运维工具ansible——安装及模块管理

ansible简介 ?ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ?ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指

运维自动化 SaltStack 安装

运维自动化 SaltStack SaltStack介绍:(略) 设置epel源 rpm -ivh 'http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm' yum安装master.minion Master主机安装: [[email protected]_1 yum.repos.d]# yum install salt-master 正在安装: salt-master