Salt

Salt是一个配置管理系统,能够根据定义的状态,配置远程节点,比如保证远程节点上指定的安装包安装,运行指定的服务。Salt也是一个分布式远程执行系统,用于在远程节点上执行命令和请求数据,不论是单个或者是任意的选择标准。

Salt是为了提供一个基于远程执行脚本,提供更好、更快和更加可扩展的解决方案二开发的,通过一个简单的可管理的借口,能够覆盖大量的信息,能快速的覆盖到大量的服务器上。

简单

在大规模部署环境和小规模环境中,提供了很多功能,salt搭建和维护都很简单,不用考虑项目大小。Salt的架构,可以应对与任意数量的服务器,从本地网络或者跨数据中心,salt的架构是一个简单的CS架构,将所需要的功能,编译经一个单独的守护进程集合中,使用默认的配置文件,就可以使用,不需要修改,salt也可以根据特殊的需求进行相关配置。

并行执行

Salt的核心功能是:

  1. 并行的在远程节点上执行命令,而不是串行
  2. 使用安全、加密的协议
  3. 使用更小的网络负载
  4. 提供一个简单的管理接口

Salt在远程执行命令上提供了更加精细化的控制,不仅可以通过主机名来访问目标主机,也可以通过系统属性来访问目标主机。

Salt使用了大量的技术,网络层使用了ZeroMQ网络库,所以salt守护进程提供了一个透明的可用的AMQ终端,对于master守护进程,salt使用公钥认证,对于传输数据,使用更快的AES加密算法,认证和加密,都已经集成在salt中。Salt使用了msgpack,保证更快和更轻量级的网络传输。

基于python的客户端接口

为了简单的扩展,salt的执行规则,可以使用python模块来编写,通过salt执行器收集的数据,会被返回给master 服务器,或者返回给任意的程序,salt可以被简单的python API调用,或者是通过命令行调用,所以salt可以是一个单独使用的命令,或者集成在一个大应用中使用。

快速、灵活、可扩展

使用salt的结果,就是一个系统能快速的在目标主机组上执行命令,salt能快速简单的部署,然后提供一个远程执行架构,可以管理任意数量的服务器。Salt基础架构将远程执行的优势结合在一起,扩大了功能,使得salt能够适应任何的网络。

开源

Salt是在Apache 2.0下开发的,可以应用于任何的开源或闭源的环境中。

Salt的安装

如果是第一次安装,需要在一个单独的管理服务器上,安装salt master,然后在每一个想管理的系统上,安装一个salt agent(minion)。不用担心现在的架构,如果需要增加组件和修改配置,不需要重新安装。

通用安装过程如下:

  1. 使用salt bootstrap脚本,安装salt master,一定要使用-M选项来安装;
  2. 保证所有agent机器,都能反问master
  3. 在这些机器上安装agent
  4. 在使用salt连接的时候,接受认证

这些操作完成后,可以执行一个简单的命令,然后会收到所有的返回值,命令格式如下:salt '*' test.ping

修改本地DNS

修改/etc/resolve.conf文件,设置dns,为192.168.64.2,网关也为该地址,然后修改/etc/nsswitch.conf文件,hosts后面增加dns,使得能够dns解析。

route add -net 0.0.0.0 gw 192.168.64.2

下载国内站点163的repo,然后复制到/etc/yum.repo.d/目录下,执行yun clean all和yum upgrade命令。

必须要使用epel.repo安装仓库,下载地址为https://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/,安装仓库的命令为:

rpm -Uvh ~/epel-release-6-8.noarch.rpm

主要是要这个仓库

[epel]

name=Extra Packages for Enterprise Linux 6 - $basearch

#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch

mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

failovermethod=priority

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

安装完成后,需要yum clean all 和yum upgrade all

开始安装salt,在master上要安装的组件如下:

yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud

安装完成后,可以直接使用salt help命令了。

在需要被远程执行命令的主机上,安装salt-minion即可。

初始化配置

Salt的配置非常简单,在大多数的安装过程中,master默认的配置可以直接适用,只需要在minion也就是agent上,配置文件中指定master的位置即可。

配置文件存放在/etc/salt目录下,其中master文件是master的配置文件,minion文件是minion的配置文件。

默认情况下,master在所有的借口地址上,监听4505和4506两个端口,在配置文件中体现为0.0.0.0,如果需要修改默认的监听地址和端口,需要修改master文件,其中地址为,interface:*.*.*.*,如果修改了配置文件,需要重启salt master服务才能生效。

正常情况下,minion上的配置也是可以直接使用的,因为salt minion会去查找以salt开头的主机,如果解析正确,则不需要做任何配置。如果解析不到,则需要在配置文件中指定,具体为master:*.*.*.*。如果修改了,也是需要重启服务的。

重启服务可以使用/etc/init.d/salt-master和salt-minion命令。

 
 

Key认证

在初始key交换之前,salt提供了一个命令,用于在master和minion上激活key。激活key认证能够避免连接到错误的master上,并防止在初始连接时,潜在的MiTM攻击。

在master主机上,使用命令,打印master的finger print指纹:salt-key -F master.

然后在local keys上拷贝master.pub,在minion的master_finger上设置该值。保存minion的配置,然后重启minion服务。

然后通过salt-call –local key.finger来查看minion的key finger,将这个值和master上salt-key –finger 来进行对比,是否一致。

在minion 上查看,很慢。

在master和minion之间的通信,采用了AES加密方式,这保证了从master发送给minion的命令,不会被篡改,master和minion直接的通信,是基于受信任的密钥的认证方式。

在发送命令到minion之前,需要在master上受信任minion的key,在master上通过salt-key -L来显示当前master已知的key信息。

使用命令salt-key -A ,使得master会信任所有的key,也可以使用-a name来信人某一个节点的key。

受信任之后,可以查看当前master信任的key。

做完这一步之后,就可以通过master给minion发送命令了。比如test.ping命令。

出现这个,表示master现在是可以控制minion了。

Salt初识和安装的更多相关文章

  1. MYSQL之数据库初识、安装详解、sql语句基本操作

    目录 MYSQL之数据库初识及安装详解 1.什么是数据库? 1.什么是数据?(data) 2.什么是数据库?(databases,简称DB) 2.为什要用数据库? 3.什么是数据库管理系统?(Data ...

  2. 利用salt stack pillar安装多组keepalived

    利用salt stack pillar安装多组keepalived 环境描述 在生产环境中,需要搭建三套keepalived环境,3个master和3个backup,要安装的软件和配置文件,虽然不是很 ...

  3. salt源码安装软件和yum安装软件

    上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...

  4. salt源码安装

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

  5. [svc]salt源码安装软件和yum安装软件

    上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...

  6. 【MongoDB初识】-安装篇

    1.首先MongoDB官网:http://www.mongodb.org,下载mongoDB 2.解压安装 自己安装在E:\mongdb 3.提示otfix KB2731284 or later up ...

  7. 初识genymotion安装遇上的VirtualBox问题

    想必做过Android开发的都讨厌那慢如蜗牛的 eclipse原生Android模拟器吧! 光是启动这个模拟器都得花上两三分钟,慢慢的用起来手机来调试,但那毕竟不是长久之计,也确实不方便,后来知道了g ...

  8. Hive[1] 初识 及 安装

    本文前提是Hadoop & Java & mysql 数据库,已经安装配置好,并且 环境变量均已经配置到位   声明:本笔记参照 学习<Hive 编程指南>而来,如果有错误 ...

  9. 树莓派学习路程No.1 GPIO功能初识 wiringPi安装

    WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi遵守GUN Lv3.wiringPi使用C或者C++开发并且可以被其他语言包转,例如python.ruby或者PHP等.Wiri ...

随机推荐

  1. maven配置,jdk1.8

    <!-- 局部jdk配置,pom.xml中 --> <build> <plugins> <plugin> <groupId>org.apac ...

  2. 八、.net core 通过数据库配置文件连接操作数据库

    一.创建DotNetCore项目 直接创建core项目并不勾选docker支持  二.nuget进行连接MySQL程序集的下载安装 1.MySql.Data.EntityFrameworkCore方式 ...

  3. ES 6 系列 - Module 的语法

    es 6 大幅度优化了模块化编程的规范. 写在前面:在 es6 之前,说起 js 的模块化,一般都避不开 CommonJs 和 AMD 两种方案.这两种方案,前者应用于服务器,后者应用于浏览器.而 e ...

  4. Error:Failed to resolve: com.android.support:appcompat-v7

    repositories { maven { url "https://maven.google.com" } } implementation 'com.android.supp ...

  5. React 学习(三) ---- state 和 事件处理函数

    在上两节中,我们讲述了props, 组件使用props进行渲染,但是这是一次性的, props渲染完成之后就不做任何事情了,但是现实中却不是这样的,当我们点击购物车上的加减按钮时,数量会自动加1或减1 ...

  6. Nginx stream如何获取ssl信息并反向代理至上游服务器

    L:116

  7. Codeforces Round #545 Div. 1自闭记

    A:求出该行该列各有多少个比其小的取max,该行该列各有多少个比其大的取max,加起来即可. #include<iostream> #include<cstdio> #incl ...

  8. Luogu4726 【模板】多项式指数函数(NTT+多项式求逆)

    https://www.cnblogs.com/HocRiser/p/8207295.html 安利! #include<iostream> #include<cstdio> ...

  9. Longest Ordered Subsequence POJ - 2533 最长上升子序列dp

    题意:最长上升子序列nlogn写法 #include<iostream> #include<cstdio> #include<cstring> #include&l ...

  10. 洛谷P1462通往奥格瑞玛的道路题解

    [题目]: https://www.luogu.org/problemnew/show/P1462 题意 题目是给定了一张双向边,有边权的图,然后让我们求出一个最小值,满足一条路径上的最大的费用小于这 ...