【Liunx】saltstack运维工具

salt介绍

saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统。

salt强大吗

系统管理员日常会进行大量的重复性操作,例如安装软件,修改配置文件,创建用户,批量执行命令等

等。如果主机数量庞大,单靠人工维护实在让人难以忍受。

  早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或方便的对大量主机进行批量的命令执行。

  salt灵活性强大,可以进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少量本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单。

  不管是几台、几百台、几千台服务器,都可以使用salt在一个中心节点上进行管控,灵活定位任意服务器子集来运行命令。 

  Salt是python编写的,支持用户通过python自定义功能模块,也提供了大量的python API接口,用户可以根据需要进行简单快速的扩展。

saltstack的运行方式

  • Local  本地运行,交付管理
  • Master/Minion   <<<   常用方式
  • Salt SSH   不需要客户端

salt部署基本架构

在安装salt之前,先理解salt架构中各个角色,主要区分是salt-master和salt-minion,顾名思义master是中心控制系统,minion是被管理的客户端。

salt架构中的一种就是master > minion。

在远程执行系统中,salt用python通过函数调用完成任务。

运行salt依赖包

python
zeromq
pyzmp
pycrypto
msgpack-python
yaml
jinja2

服务器环境准备

关闭服务器安全策略

关闭firewalld
systemctl disable firewalld
systemctl stop firewalld

关闭iptables
iptables -F

关闭selinux

安装saltstack

1、环境准备

准备3台机器,配置好ip地址,互相可以通信,即可
互ping一下看看通没通  ping192.168.61.138
一个master

一个minion

一个minion

2、配置hosts解析文件

配置hosts解析文件,强制进行主机名解析,加速salt的minion查找,分别在三台机器上,写入解析

vim /etc/hosts   

192.168.16.142  s20

192.168.16.7 docker01

192.168.16.47  bogon

3、下载saltstack软件包

配置阿里云的源,下载saltstack软件包,  注意区分 服务端和客户端
    1.在master上安装
        yum install salt-master -y

    2.在minion1上安装
        yum install salt-minion -y

    3.在minion2上安装
        yum install salt-minion -y

4、配置文件

【salt-master配置文件】

配置文件在/etc/salt/master

vim master  # 打开配置文件,填入如下内容

interface: 0.0.0.0      #绑定到本地的0.0.0.0地址
publish_port: 4505 #管理端口,命令发送
user: root      #运行salt进程的用户
worker_threads: 5  #salt运行线程数,线程越多处理速度越快,不要超过cpu个数
ret_port: 4506     #执行结果返回端口
pidfile: /var/run/salt-master.pid  #pid文件位置
log_file: /var/log/salt/master  #日志文件地址

#自动接收minion的key
auto_accept: False

【salt-minion1配置文件】

vim /etc/salt/minion  # 打开配置文件,填入如下内容

master: s20     #指定mastet的通信地址
master_port: 4506
user: root
id:  s20minion1      #id用于指定minion的身份信息 ,待会可以在master上查看到的
acceptance_wait_time: 10
log_file: /var/log/salt/minion

【salt-minion2配置文件】

vim /etc/salt/minion  # 打开配置文件,填入如下内容

master: s20
master_port: 4506
user: root
id:  s20minion2
acceptance_wait_time: 10
log_file: /var/log/salt/minion

5、重启master和minion,检查密钥是否匹配

重启

salt通信是在minion初次启动时候,建立新的连接的

systemctl restart salt-master
systemctl restart salt-minion

检查master和minion的秘钥匹配

【在master上执行】

【在minion上获取minion的秘钥】

确认密钥匹配进行下一步

6、查看minion的密钥信息

在minion启动后连接master会请求master为其签发证书,等待证书签发完成后,master可以信任minion,并且minion和master之间的通信是加密的。

在salt-master执行

salt-key命令用于管理mionion秘钥

在master机器上,查看minion的密钥信息

salt-key -L  #查看所有密钥

salt-key -a  s20minion1  #-a参数 单独接受一个密钥信息

salt-key -A    #-A  接受所有的key信息

#常用参数
-L  #查看KEY状态
-A  #允许所有
-D  #删除所有
-a  #认证指定的key
-d  #删除指定的key
-r  #注销掉指定key(该状态为未被认证)

#在master端/etc/salt/master配置
auto_accept: True   #如果对Minion信任,可以配置master自动接受请求


1

2

3

4

5

[[email protected] ~]# salt-key -L

Accepted Keys:  #已经接受的key

Denied Keys:    #拒绝的key

Unaccepted Keys:#未加入的key

Rejected Keys:#吊销的key

7、验证salt minion信息是否存活

salt  "*" test.ping

转化为json信息

将输出的结果,转化为json信息,可以序列化后,丢给前端渲染

salt  "*" test.ping --out=json

salt的命令学习

上面我们已经配置完master和minion的通信,接下来我们就可以通过salt命令来批量管理minion机器了

【验证salt minion信息是否存活】
    salt  "*" test.ping
【转化为json信息】
    salt  "*" test.ping --out=json
【让机器远程返回主机名给我】
    salt --summary ‘*‘ cmd.run ‘hostname‘
【远程安装软件】
    salt "*"  cmd.run "yum install nginx -y"
【salt安装软件的接口】
    远程安装nginx:salt ‘*‘ pkg.install  ‘nginx‘
    远程卸载nginx:salt ‘*‘ pkg.remove "nginx"
    检查pkg包的版本:salt ‘*‘ pkg.version "nginx"
【远程管理服务模块】
    # 管理服务是系统管理员的重要任务,通过salt管理minion服务会很简单,使用service模块
    salt ‘*‘ service.start "nginx"
    salt ‘*‘ service.stop "nginx"
    salt ‘*‘ service.restart "nginx"

查看master和minion都安装了哪些软件

【master端】

rpm -ql salt-master
/etc/salt/master      # salt master主配置文件
/usr/bin/salt           #salt master 核心操作命令
/usr/bin/salt-cp       #salt 文件传输命令
/usr/bin/salt-key    #salt证书管理
/usr/bin/salt-master    #salt master 服务命令
/usr/bin/salt-run          #salt master runner命令

【minion端】

rpm -ql salt-minion
/etc/salt/minion     #minion配置文件
/usr/bin/salt-call    #拉取命令
/usr/bin/salt-minion   #minion服务命令
/usr/lib/systemd/system/salt-minion.service   #minion启动脚本

【test模块】

[[email protected] ~]# salt ‘*‘ test.ping
slave:
    True

# salt 是一个命令
# * 表示目标主机, 在这里代表所有目标主机
# test.ping是salt远程执行的一个模块下面的方法。

这是条很简单的探测minion主机存活命令,也是远程执行命令,我们通过master发送消息给"*"所有的minion,并且告诉他们运行salt内置的命令(也是python模块中的一个函数),返回true表示slave机器监控存活。

test模块实际上还有许多其他的函数

 

测试下test.echo

[[email protected] 192.168.199.155 ~]$salt ‘*‘ test.echo ‘henry nb666‘
slave:
    henry nb666

test.fib生成斐波那契数列

菲波那切数列定义是第0项是0,第1项是1,数列从第3项开始,每一项等于前两项之和。

[[email protected] 192.168.199.155 ~]$salt ‘*‘ test.fib 50
slave:
    |_
      - 0
      - 1
      - 1
      - 2
      - 3
      - 5
      - 8
      - 13
      - 21
      - 34
    - 1.09672546387e-05

salt命令的两种输出格式

【 json】

salt  "*" test.ping --out=json

【yaml】

salt  "*" test.ping --out=yaml

【yaml语法学习】

在学习saltstack过程中,第一要点就是States编写技巧,简称SLS文件。这个文件遵循YAML语法。初学者看这玩意很容易懵逼,来,超哥拯救你学习YAML语法
json xml yaml 数据序列化格式
yaml容易被解析,应用于配置文件

salt的配置文件是yaml配置文件,不能用tab
saltstack,k8s,ansible都用的yaml格式配置文件

语法规则
    大小写敏感
    使用缩进表示层级关系
    缩进时禁止tab键,只能空格
    缩进的空格数不重要,相同层级的元素左侧对其即可
    # 表示注释行
yaml支持的数据结构
    对象: 键值对,也称作映射 mapping 哈希hashes 字典 dict    冒号表示 key: value   key冒号后必须有
    数组: 一组按次序排列的值,又称为序列sequence 列表list     短横线  - list1
    纯量: 单个不可再分的值

对象:键值对
yaml
    first_key:
      second_key:second_value

python
    {
        ‘first_key‘:{
            ‘second_key‘:‘second_value‘,
        }
    }


1

2

3

4

YAML是YAML Ain‘t Markup Language的首字母缩写,YAML的语法简单,

结构体通过空格展示

项目使用 ‘-‘ 代表

键值对通过 ‘:‘ 分割

YAML语法遵循固定的缩进风格,表示数据层级结构关系,saltstack需要每个缩进级别由2个空格组成,禁止用tabs!!!

Python中的字典是简单的键值对,go语言中称作哈希表map
字典的key通过冒号分割

key在YAML中表现形式是一个冒号结果的字符串
my_key: my_value
转化到python语法中,上述命令为
{‘my_key‘:‘my_value‘}

value还可以通过缩进和key关联,四个空格!!
my_key:
    my_value
转化为python语法同样的
{‘my_key‘:‘my_value‘}

YAML语法中字典是可以嵌套的
one_dict_key:
    two_dict_key:value_dict
转化为python语法
{
  ‘one_dict_key‘:{
    ‘two_dict_key‘:‘value_dict‘
  }
}

短横杠
YAML语法表示列表,使用一个横杠加一个空格
多个项使用同样的缩进级别作为同一个列表的部分
- list_value_one
- list_value_two
- list_value_three
列表可以作为一个键值对的value,例如一次性要安装多个软件
my_dict:
  - l1
  - l2
  - l3
转化为python代码理解就是
{
  ‘my_dict‘:[‘l1‘,‘l2‘,;l3]
}

原文地址:https://www.cnblogs.com/youxiu123/p/11624339.html

时间: 2024-10-12 06:27:03

【Liunx】saltstack运维工具的相关文章

【搭建Saltstack运维工具】

目录 所谓Salt 开始搭建 配置接受密钥 salt命令 YAML详解 目标定位字符串 state模块定义主机状态 Salt采集静态信息之GrainsSalt @(Saltstack) *** 所谓Salt Saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. Salt有多强大! ????系统管理元日常会进行大量的重复性操作,例如安装软件,修改配置文件,创建用户,批量执行命令等等,如果主机数量庞大, 单靠人工维护是在让人难以忍受

【搭建Saltstack运维工具】 -- 2019-08-11 19:24:07

目录 所谓Salt 开始搭建 配置接受密钥 salt命令 YAML详解 目标定位字符串 state模块定义主机状态 Salt采集静态信息之GrainsSalt 原文: http://106.13.73.98/__/108/ @(Saltstack) *** 所谓Salt Saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. Salt有多强大! ????系统管理元日常会进行大量的重复性操作,例如安装软件,修改配置文件,创建用户,批

运维工具ansible理论部分

1.运维工作介绍 运维工作的全部流程: 系统安装(物理机.虚拟机)--> 程序包安装.配置.服务启动 --> 批量操作 --> 程序发布  --> 监控 随着一些大公司的IT系统架构越来越复杂,服务器数量越来越多,标准化和自动化已经是运维工作的基本要素. 自动化运维经历了4个阶段:人工,这个阶段基本上是全部需要到机器上一步步操作:脚本,使用计划任务完成一些重复性工作:工具,这个阶段一个人可以管理大量的机器,常见的工具:puppet,saltstack,ansible:平台化,这时运

运维工具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修改之后,再获取数据即生效了

运维工具SaltStack之一安装部署

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

自动化运维工具之saltstack

今天试着在centos7上安装了saltstack自动化运维工具,以下是安装步骤: 首先,我们安装bash-completion包,它可以补全centos7的命令. yum install -y bash-completion 关于服务的启动问题: 首先,设置服务开机自动启动: systemctl enable salt-master 查看是否设置好开机启动: systemctl is-enabled salt-master 启动服务: systemctl restart salt-master

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

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

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

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