SaltStack 介绍和安装


SaltStack 介绍

SaltStack是一种利用Python语言开发的,用于批量管理主机的一套工具,主要实现三种功能:

  • 远程执行:通过saltstack工具,可以同时在多台被管理的主机上,执行操作,并行执行命令,安装加密协议
  • 配置管理:通过YMAL语言脚本,编写主机配置文件,实现自动化安装和运维
  • 云管理:通过saltcloud创建和管理私有云

salt可以用于定义的模式,来维护和管理远程节点,比如说在特定的主机节点上安装和运行特定的服务。也可以用于在指定或所有主机节点上执行命令或请求数据。slat提供了一个简单的管理接口,用于管理大量的信息和远程节点。

salt易于安装和维护,不论项目的大小,都可以使用,可以是本地的,也可以是跨数据中心的,是一种简单的C/S架构。根据特殊的需要,可以定制不同的salt功能。开源软件,基于apache 2.0.

salt采用的消息队列是ZeroMQ,在master和minion之间的认证中,使用的是公钥方式,在消息传递过程中,采用的是AES加密方式,认证和加密都集成到salt中。通过msgpack,使得master和minion之间的消息传递开销很小。

salt是用python编写的,可以说是一个简单得的python API工具,通过salt采集的信息数据,可以用于任何的程序中。方便、灵活、可扩展。

SaltStack的运行模式有以下四种:

  • 本地模式:local,直接本地对主机进行管理,和没有salt是一样的操作
  • Master + Minion模式:最常用的方式,一个master可以同时控制多个minion,实现对minion的管理
  • 代理模式:syndic,master和minion之间不直接通信,通过中间代理的方式,由代理来控制minion
  • salt-ssh模式:在minion上不安装agent,直接通过ssh的方式进行控制

SaltStack 安装

使用最常见的Master + Minion的部署模式,使用两台主机,一台安装master和minion,另一台只安装minion,具体的安装过程如下:

  1. 安装仓库文件

    为解决安装包依赖的问题,建议使用官方的repo仓库文件进行安装,先安装官方的仓库文件。

    yum install https://repo.saltstack.com/yum/redhat/salt-repo-2019.2.el7.noarch.rpm
  2. 在master主机上安装master和minion

    yum install salt-master salt-minion
  3. 启动master,配置minion

    主要配置的是master监听的地址,保持不变即可,在minion上,要指明master,默认都是通过域名去解析master的,在这里可以通过IP地址。建议是做全局的域名解析。master和minion的配置文件存放在/etc/salt目录下。

    默认情况下,master是在所有地址上监听4505和4506端口,可以在interface上绑定指定的IP地址,也就是master的服务地址。修改完master的配置文件之后,需要重启master。

    [root@localhost ~]# sed -i 's/#interface: 0.0.0.0/interface: 192.168.64.131/' /etc/salt/master
    [root@localhost ~]# grep 'interface' /etc/salt/master
    # The address of the interface to bind to:
    interface: 192.168.64.131

    minion的配置,只需要在配置文件中,指向master即可。或者直接修改/etc/hosts文件,将master域名指向192.168.64.131

    [root@localhost ~]# echo '192.168.64.131 salt' >> /etc/hosts
    [root@localhost ~]# ping salt
    PING salt (192.168.64.131) 56(84) bytes of data.

    修改minion的id,在这里最好是FQDN或者是唯一IP地址。在启动minion之后,会在/etc/salt下生成一个minion_id的文件,里面就是minion_id,在这里都是IP地址。

    启动master和minion

    [root@localhost ~]# systemctl start salt-minion
    [root@localhost ~]# systemctl start salt-master
  4. master 和minion的认证

    在启动了minion 之后,会自动的在minion的目录下,生成minion的认证公钥和私钥文件。具体路径为/etc/salt/pki/minion。

    [root@localhost minion]# tree
    .
    ├── minion.pem
    └── minion.pub 0 directories, 2 files

    还有一个目录,是pki/master,在master未ACCEPT 相关minion 之前,该minion的该目录下为空。这个时候可以在master上通过命令查看master和minion 的认证关系。

    [root@localhost salt]# salt-key
    Accepted Keys:
    Denied Keys:
    Unaccepted Keys:
    192.168.64.131
    192.168.64.132
    Rejected Keys:

    其中accepted为绿色,unaccepted为红色。

    可以通过命令来选择accept 指定minion,在这里选择accept 192.168.64.132

    [root@localhost salt]# salt-key -a 192.168.64.132
    The following keys are going to be accepted:
    Unaccepted Keys:
    192.168.64.132
    Proceed? [n/Y] y
    Key for minion 192.168.64.132 accepted.
    [root@localhost salt]# salt-key
    Accepted Keys:
    192.168.64.132
    Denied Keys:
    Unaccepted Keys:
    192.168.64.131
    Rejected Keys:
    [root@localhost salt]#

    当master选择accept了minion之后,在minion的pki/minion目录下,就会生成master的信息。

    [root@localhost pki]# tree
    .
    ├── master
    └── minion
    ├── minion_master.pub
    ├── minion.pem
    └── minion.pub 2 directories, 3 files

    而在master的目录下,就会生成minion的信息。具体目录在/etc/salt/pki/minions

    [root@localhost salt]# ls pki/master/ -l
    total 8
    -r-------- 1 root root 1678 Apr 13 14:52 master.pem
    -rw-r--r-- 1 root root 450 Apr 13 14:52 master.pub
    drwxr-xr-x 2 root root 28 Apr 13 15:09 minions
    drwxr-xr-x 2 root root 6 Apr 13 14:52 minions_autosign
    drwxr-xr-x 2 root root 6 Apr 13 14:52 minions_denied
    drwxr-xr-x 2 root root 28 Apr 13 15:09 minions_pre
    drwxr-xr-x 2 root root 6 Apr 13 14:52 minions_rejected
    [root@localhost salt]# ls pki/master/minions -l
    total 4
    -rw-r--r-- 1 root root 450 Apr 13 15:00 192.168.64.132
    [root@localhost pki]# tree
    .
    ├── master
    │   ├── master.pem
    │   ├── master.pub
    │   ├── minions
    │   │   └── 192.168.64.132
    │   ├── minions_autosign
    │   ├── minions_denied
    │   ├── minions_pre
    │   │   └── 192.168.64.131
    │   └── minions_rejected
    └── minion
    ├── minion.pem
    └── minion.pub 7 directories, 6 files

    通过命令salt-key -A,可以一次性将所有的minion的请求,全部accept。

    这个认证过程很简单,就是master将自己的公钥,传递到minion上,以后master就可以直接控制minion了,这个过程和ssh免密码登录的原理是一样的。

  5. 远程控制

    salt最基本的功能就是远程控制,可以直接在master上,控制minion去做一项操作。比如查看minion的版本。

    [root@localhost salt]# salt '*' test.version
    192.168.64.131:
    2019.2.0
    192.168.64.132:
    2019.2.0
    • 其中salt是命令,'*'表示匹配所有的minion,如果只想匹配指定的minion,则输入该minion的id即可,可以使用*作为通配符。
    • test.version是作为指令的,其中test是指模块,version是指方法,这个和python的有关,在python中引用别的模块中的方法,也是这么调用的
    • 如果是让远端执行某个脚本或命令,需要使用cmd.run,其中cmd就是模块名,run就是方法名

      [root@master salt]# salt '*' cmd.run 'cat /etc/hosts'
      192.168.64.131:
      127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
      ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
      192.168.64.131 master
      192.168.64.131 salt
      192.168.64.132:
      127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
      192.168.64.131 master
      192.168.64.131 salt

远程控制,是salt的一个核心功能,在master主机上,可以通过cli接口,来控制salt。在远程控制的命令中,需要一些字段,来表示让minion执行的信息,比如目标minion需要定义、调用的方法,和一些其他参数。

  • 定义目标minion

    • 目标minion是salt的第一个参数,通过主机名/minion-id来定义。
    • 也可以通过正则表达式的形式,定义目标minion,salt -E '^.*'
    • 还可以通过指定minion,让minion来执行命令,salt -L '***',其实可以省略。
  • 定义调用的方法,该参数是用来定义在目标minion上执行的方法,方法也可以使用参数

SaltStack 介绍和安装的更多相关文章

  1. 自动化运维工具saltstack01 -- 之SaltStack介绍、安装与基础使用

    SaltStack介绍 官网地址:http://www.saltstack.com 官方文档地址:http://docs.saltstack.com Github:http://Github.com/ ...

  2. Saltstack 介绍、安装、配置(一)

    Slatstack 介绍 官网:https://saltstack.com/ 官方源:http://repo.saltstack.com/  (介绍各操作系统安装方法) http://repo.sal ...

  3. Saltstack 介绍、安装、配置语法(一)

    Slatstack 介绍 官网:https://saltstack.com/ 官方源:http://repo.saltstack.com/  (介绍各操作系统安装方法) yum install htt ...

  4. Python介绍、安装、使用

    Python介绍.安装.使用 搬运工:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python语言介绍 说到Python语言,就不得不说一下它的创始人Guido van Rossu ...

  5. Saltstack 服务器基本安装

    Salt介绍 Salt是一个基础平台管理工具 Salt是一个配置管理系统,能够维护预定义状态的远程节点 Salt是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据 Salt核心功能 使命令发 ...

  6. SaltStack介绍及简单配置-第一篇

    SaltStack介绍 一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, 使其可以用于编配 ...

  7. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

  8. 从零自学Hadoop(14):Hive介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...

  9. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

随机推荐

  1. 实现DataTables搜索框查询结果高亮显示

    DataTables是封装好的HTML表格插件,丰富了HTML表格的样式,提供了即时搜索.分页等多种表格高级功能.用户可以编写很少的代码(甚至只是使用官方的示例代码),做出一个漂亮的表格以展示数据.关 ...

  2. 360浏览器兼容模式下IE内核版本

    问题 最近在跟客户演示系统时,自己电脑IE 11下好好的,我们web系统最低支持到IE9.在客户电脑上,IE9浏览器下可以正常浏览,但是360兼容模式下,页面什么也不显示. 通过F12调试工具发现,3 ...

  3. java:数据结构复习(二)数组栈

    import java.util.Arrays;import java.util.Scanner; /** * @author 李正阳 */public class MyArraysStack< ...

  4. java:编程比赛中有用的方法整理(一)数组

    我曾经参加过几次编程比赛,但是当时用的是c语言,现在学习了java,打算专攻java组,故以此整理. 数组无论在哪里都必不可少. 一.数组的拷贝: 使用Arrays类的copyOf方法: 1.将一个数 ...

  5. 轻松学习UML之类图,状态图

    本文主要讲解UML图中的类图与状态图相关内容,如有不足之处,还请指正. 概述 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模语言,UML因其简单.统一 ...

  6. python使用rabbitMQ介绍四(路由模式)

    一.模式介绍 路由模式,与发布-订阅模式一样,消息发送到exchange中,消费者把队列绑定到exchange上. 这种模式在exchange上添加添加了一个路由键(routing-key),生产者发 ...

  7. 【Teradata SQL】行转列函数TDStats.udfConcat

    TDstats.udfConcat为Teradata自带UDF,定义如下: show function tdstats.udfconcat; REPLACE FUNCTION tdstats.UDFC ...

  8. UVA - 11090 - Going in Cycle!!(二分+差分约束系统)

    Problem  UVA - 11090 - Going in Cycle!! Time Limit: 3000 mSec Problem Description You are given a we ...

  9. Pyinstaller 打包exe

    安装 ​ pip insatll Pyinstaller 参数 pyinstaller -Fw main.py 参数 概述 -F,-onefile 打包一个单个文件,如果你的代码都写在一个.py文件的 ...

  10. Luogu P5283 [十二省联考2019]异或粽子

    感觉不是很难的一题,想了0.5h左右(思路歪了,不过想了一个大常数的两只\(\log\)做法233) 然后码+调了1h,除了一个SB的数组开小外基本上也没什么坑点 先讲一个先想到的方法,我们对于这种问 ...