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. LODOOP中的各种边距 打印项、整体偏移、可打区域、内部边距

    Lodop中的打印项内容位置定位,除了打印项本身的top,left值,也会受其他设定或打印机的影响.打印开发,先用虚拟打印机测试出正确结果,然后客户端用打印维护微调常见问题:1.设置打印项相对于纸张居 ...

  2. 51-node-1649齐头并进(最短路)

    题意:中文题,没啥坑点: 解题思路:这道题一开始以为要跑两个最短路,后来发现不用,因为如果给定了铁路的线路,那么,公路一定是n个节点无向图的补图,所以,铁路和公路之间一定有一个是可以直接从1到n的,我 ...

  3. redis知识汇总

    redis是一个内存数据库,使用key-value形式在内存中管理数据. 一.redis使用场景 1.热数据存储.对于需要频繁读写的数据,可以放到redis中,不用频繁的请求数据库.再设置策略持久化到 ...

  4. 基本排序算法[python实现]

    冒泡排序 原理 冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换, ...

  5. BZOJ4482[Jsoi2015]套娃——贪心+set

    题目描述 [故事背景] 刚从俄罗斯旅游回来的JYY买了很多很多好看的套娃作为纪念品!比如右 图就是一套他最喜欢的套娃J.JYY由于太过激动,把所有的套娃全 部都打开了.而由于很多套娃长得过于相像,JY ...

  6. 「2017 Multi-University Training Contest 2」2017多校训练2

    1001 Is Derek lying 题目链接 HDU6045 Is Derek lying? 给出两个人选择题的回答,问得分分别为x和y是否可能.(\(1\le N \le 80000,0\le ...

  7. 【QML与C++混合编程】用QVariantList传递数组类型成员

    2017.5.8 更新:Record类要用指针,QObject 不能有拷贝函数. 我有一个C++中自定义的ReaderModel,继承自QAbstractListModel类,传递给了QML. 它的m ...

  8. 自学Zabbix4.0之路

    自学Zabbix4.0之路 01 Centos7安装Zabbix4.0步骤 02 Centos7下Zabbix3.4至Zabbix4.0的升级步骤 03 Zabbix4.0添加cisco交换机基本监控 ...

  9. 让自己的网站实现在线编辑office文档

    我们可以通过Office Web Apps(OWA)来实现在线编辑word,excel,power point, one note,并集成到自己的网站里去.   1 准备工作 1.1 操作系统 安装了 ...

  10. 20165223 实验一 Java开发环境的熟悉

    目录 一.实验报告封面 二.实验内容 (一)命令行下的JAVA程序开发 (二)IDEA中的JAVA程序开发 (三)自主练习 三.实验总结 四.PSP时间 一.实验报告封面 北京电子科技学院(BESTI ...