运维自动化之Saltstack使用详解

概要

saltstack是基于Python开发的C/S架构的一款批量管理工具,底层采用动态的连接总线(ZeroMQ消息队列pub/sub方式通信),使用ssl证书签发的方式进行认证管理,使其可以用于编配, 远程执行, 配置管理等等。部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。号称世界上最快的消息队列ZeroMQ使得saltstack非常快速的管理大量服务器,采用RSA Key方式确认身份,传输采用AES加密,安全性也非常有保障。

Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信。

SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。有如下特性:

(1)、部署简单、方便;

(2)、支持大部分UNIX/Linux及Windows环境;

(3)、主从集中化管理;

(4)、配置简单、功能强大、扩展性强;

(5)、主控端(master)和被控端(minion)基于证书认证,安全可靠;

(6)、支持API及自定义模块,可通过Python轻松扩展。

Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口;salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制,如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。

核心功能

1、使命令发送到远程系统是并行的而不是串行的

2、使用安全加密的协议

3、使用最小最快的网络载荷

4、提供简单的编程接口

架构
   saltstack是基于C/S服务模式,在该架构中,服务器端叫做Master,客户端叫做Minion。传统的C/S模式我们这样理解,客户端发送请求给服务器端,服务器端接受到来自客户端的请求并处理完成后再返回客户端。 在saltstack架构中,不仅有传统的C/S服务模式,而且有消息队列中的发布与订阅(pub/sub)服务模式。目前我们一般用其C/S架构做批量管理。

1)  Master:控制中心,salt命令运行和资源状态管理

2)  Minion : 需要管理的客户端机器,会主动去连接Mater端,并从Master端得到资源状态

3)  信息,同步资源管理信息

4)  States:配置管理的指令集

5)  Modules:在命令行中和配置文件中使用的指令模块,可以在命令行中运行

6)  Grains:minion端的变量,静态的

7)  Pillar:minion端的变量,动态的比较私密的变量,可以通过配置文件实现同步minions定义

8)  highstate:为minion端下发永久添加状态,从sls配置文件读取.即同步状态配置

9)  salt_schedule:会自动保持客户端配置

Saltstack安装

安装方式有四种,下面通过一个案例简单介绍在CentOS6.8上进行SaltStack部署。

(1) yum方式安装(采用saltstack源)推荐这种方式,简单粗暴。注意没有配置saltstack源的,请先配置saltstack源。

Version 7:

rpm --importhttps://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub

Version 6:

rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub

Save the following file to /etc/yum.repos.d/saltstack.repo:

Version 7 and 6:

[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

安装好saltstack源后,用yum 命令来检查是否添加到源列表。

yum repolist 
Master端安装:

yum -y install salt-master

Minon端安装:

yum -y install salt-minion

配置并启动Saltstack

  Salt 的配置非常简单。默认的 master 配置就可以在大多数情况下运行。仅仅需要更改的是 minion ,在 minion 配置文件中设置 master 的地址。

The configuration fileswill be installed to /etc/salt and are named after the respective components,/etc/salt/master, and /etc/salt/minion.

MASTER配置

默认Salt master监听所有网卡接口(0.0.0.0)的4505和4506端口. 如果需要指定监听IP, 通过 /etc/salt/master配置文件中的"interface"指令进行如下修改:

- #interface: 0.0.0.0
+ interface: 10.0.0.1 #此处是server端监听的地址。
auto_accept: True #此处是自动接受客户端发送过来的key,如果服务器很多的话,需要开启该功能。

MINION配置

尽管Salt Minion有许多配置选项,但配置Minion还是非常简单的. 默认的配置Minion会尝试连接DNS名为"salt"的master,如果minion解析到的地址正确,就无需再做配置.

如果DNS名为"salt"并不能解析到本地正确的Master地址,需要通过如下方法修改 /etc/salt/minion 配置文件中的"master"指令:

- #master: salt
+ master: 10.0.0.1 #这里改成你的master服务器地址
id: web01 #建议这里修改成主机名,便于master端分辨
  #在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt ‘*‘state.highstate
schedule:
  highstate:
    function: state.highstate
    minutes: 5

更新完配置后,需要重启Salt minion以使配置生效.

运行Saltstack

1. 前台启动master(如果要以daemon方式启动,请指定 -d参数<salt-master -d>):
salt-master
2. 前台启动minion(如果要以daemon方式启动,请指定 -d参数<salt-minion -d>):
salt-minion

运行有问题?

排除 Salt 故障最简单的方法是在前台运行 master 和 minion,同时把 log level 设为``debug``

salt-master --log-level=debug

以普通(root)用户运行:

想要使用其他用户身份运行Salt,参见:conf_master:`user`参数在master配置文件中。

Additionally, ownership, and permissions need to be set suchthat the desired user can read from and write to the following directories (andtheir subdirectories, where applicable):

  • /etc/salt
  • /var/cache/salt
  • /var/log/salt
  • /var/run/salt

更多关于如何使用非特权用户运行salt的信息可以在 这里 找到。

salt-key证书管理:

master端证书存放路径:/etc/salt/pki/master/minions

   注意:如果细心的话,你会发现小写字母针对的单一对象,大写都是针对全体。比如 -l显示单一key,-L显示所有key;-a 接受指定key,而-A 就是接受所有key。

saltstack认证原理

1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。

2)、master在接收到minion的publickey后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。


salt-key  -L            #查询所有接收到的证书

salt-key  -a <证书名>   #接收单个证书

salt-key  -A            #接受所有证书

salt-key  -d <证书名>   #删除单个证书

salt-key  -D            #删除所有证书

Salt在Master和Minion之间的通讯采用AES加密. 这就确保了发送给minions的命令不会被篡改, Master和Minion之间的通讯认证通过信任的已接受的key进行管理.

在发送给Minion之前,需要确保minion的key已经被Master所接受. 运行 ``salt-key``命令将列出Salt Master已知的所有keys.

[[email protected] ~]# salt-key -L
Unaccepted Keys:
alpha
bravo
charlie
delta
Accepted Keys:
[[email protected] ~]# salt-key –A -y
[[email protected] ~]# salt-key -L
Unaccepted Keys:
Accepted Keys:
alpha
bravo
charlie
delta

发送test.ping指令

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

限于篇幅太长,请大家移步这里进行下载查看,谢谢!

下载地址:http://down.51cto.com/data/2306388

时间: 2024-10-14 01:22:46

运维自动化之Saltstack使用详解的相关文章

运维自动化之Cobbler系统安装详解

原文链接 参考文档 参考文档SA们现在都知道运维自动化的重要性,尤其是对于在服务器数量按几百台.几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,根本是不可想象的. 运维自动化安装方面,早期一般使用人工配置pxe+dhcp+tftp配合kickstart,现在开源工具就多了,如cobbler,OpenQRM和Spacewalk.本文重点介绍Cobbler. Cobbler介绍 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用p

Linux运维--企业sudo权限规划详解 (实测一个堆命令搞定)

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造

学习python自动化运维之模块域名解析方法详解

1.MX #!/usr/bin/env python import dns.resolver domain = raw_input('please input an domain: ') MX = dns.resolver.query(domain, 'MX') for i in MX: print 'MX preference =', i.preference, 'mail exchanger =', i.exchange 2.NS #/usr/bin/env python import dn

运维自动化之Saltstack(五)配置管理

配置管理--终于到重点了 说到配置管理,不得不说一下下面谈到的几个概念,理解他们很重要. Salt是通过一个文件top.sls管理minion端的状态的. 这个文件top.sls在这里叫做入口文件,此文件里记录了一个或者几个环境,在某一个环境下需要管理的minion端ID. 以及记录了受管理的minion端需要去匹配的状态:状态一般会有多个状态. 说一下我理解的状态,状态就是一组配置,配置里包含了minion端需要安装的软件名和设置好的配置文件,salt是通过配置文件去声明的.这个配置文件名必须

运维监控平台之zabbix详解1

本来是想一篇文章介绍完的,写着写着发现篇幅太长,所以决定还是分两篇来介绍,本次软件所用的版本信息如下(基于LNMP环境),操作系统centos6.7 nginx-1.6.3.tar.gz php-5.6.24.tar.gz mysql-5.5.49-linux2.6-x86_64.tar.gz zabbix-3.0.4.tar.gz (zabbix-3以上版本之支持php5.4以上环境) LNMP环境搭建不再这里说明了,如果不懂的看本人之前写的nginx+php,这里简单介绍下php编译 [[e

运维监控平台之zabbix详解2

1.Zabbix架构 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. Zabbix的运行架构如下图所示: 2.组件 zabbix由以下几个组件部分构成: 1).Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行: 2).Database Storage:专用于存储所有

运维自动化之Saltstack(四)Returners(返回)

Returners: 默认是标准输出到屏幕 当然可以输出到其他目标,如: mysql redis 这里说一下将Returners写入到Mysql 方法一: 在每个minion端安装软件包MySQL-python ,让每个minion主机自己把其返回的信息写入数据库 在每个minion端的主机主配置文件中添加如下内容: tail    /etc/salt/minion mysql.host: '192.168.124.1'   # Myslq Server 的IP地址 mysql.user: 's

web运维第一篇:nginx配置文件详解笔记

#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; #进程文件 pid /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值

运维自动化之使用Cobbler自动化部署Linux操作系统

1.Cobbler是什么? Cobbler是一个Linux安装服务器,能够快速设置好网络安装环境.它实现了许多与Linux相关的任务的自动化和组合,因此你在部署新的(操作)系统或更改已经存在的操作系统时不需要在繁多的命令和应用程序之间来回切换.Cobbler能帮助(用户.管理者)置备和管理DNS.DHCP.软件包更新.电源管理.配置管理以及更多. "Cobbler is a Linux installation server that allows for rapid setup of netw