一、概述
salt是一个异构平台基础设置管理工具,使用轻量级的通讯器ZMQ,用Python写成的批量管理工具,完全开源,遵守Apache2协议,与Puppet,Chef功能类似,有一个强大的远程执行命令引擎,也有一个强大的配置管理系统,通常叫做Salt State System。
二、基本原理
采用C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。minion上线后先与master端联系,把自己的pub key发过去,接受该minion-key后,也就是master与minion已经互信master可以发送任何指令让minion执行了。同时SaltStack也支持SSH的方式无需安装Agent,通过SSH实现管理。
实现步骤:
1.Salt stack的Master与Minion之间通过ZeroMq进行消息传递,使用了ZeroMq的发布-订阅模式,连接方式包括tcp,ipc
2.salt命令,将cmd.run ls命令从salt.client.LocalClient.cmd_cli发布到master,获取一个Jodid,根据jobid获取命令执行结果。
3.master接收到命令后,将要执行的命令发送给客户端minion。
4.minion从消息总线上接收到要处理的命令,交给minion._handle_aes处理
5.minion._handle_aes发起一个本地线程调用cmdmod执行ls命令。线程执行完ls后,调用minion._return_pub方法,将执行结果通过消息总线返回给master
6.master接收到客户端返回的结果,调用master._handle_aes方法,将结果写的文件中
7.salt.client.LocalClient.cmd_cli通过轮询获取Job执行结果,将结果输出到终端。
参考链接:
官方站点:http://www.saltstack.com/
官方文档:http://docs.saltstack.com/
中文站点:http://www.saltstack.cn/
中文手册:http://docs.saltstack.cn/
三、安装部署
环境准备:
操作系统:centos 7.2
配置EPEL源:# rpm -Uvh http://mirrors.zju.edu.cn/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
Master端:192.168.2.5
Minion端:192.168.2.71
Master端安装# yum install salt-master -y
Minion端安装# yum install salt-minion -y
注:安装完之后,Master配置文件在/etc/salt/master,minion配置文件在/etc/salt/minion,默认初始安装配置文件都是被注释,可自定义。
SaltStack常用的目录结构:
/var/cache/salt/master/minions/ #存放minions的缓存数据
/srv/salt #存放salt的sls文件,默认没有,需新建
/srv/pillar #存放pillar配置文件,默认没有,需新建
/etc/salt #存放salt的自身配置文件
/var/log/salt #存放salt的日志目录
四、配置Minion端与Master通信,并简单测试。
1.打开Master端的自动签发证书,默认是关闭的,如果不打开minion启动时会报如下错误:
1
2
3
|
3月 08 14:47:46 node02 salt-minion[2736]: [WARNING ] ** Restarting minion **
3月 08 14:54:56 node02 salt-minion[2736]: [ERROR ] Attempt to authenticate with the salt master failed
3月 08 14:59:07 node02 salt-minion[2736]: [ERROR ] The Salt Master has cached the public key for thi...cate
|
修改Master端配置文件如下:/etc/salt/master
修改:#auto_accept: False
为:auto_accept: True
# systemctl restart salt-master.service #重启Master端
2.修改Minion端配置文件如下:/etc/salt/minion
修改:#master: salt
master: 192.168.2.5 #指向主Master端
修改:#id: salt
id: minion01 #本端Minion id号
# systemctl restart salt-minion.service #重启Minion端
这时Master查看salt-key,minion01客户端自动添加到签发列表中
1
2
3
|
[root@node03 ~]
Accepted Keys:
minion01
|
注:salt-key常用命令
-a #添加指定id
-A #添加全部
-R #拒绝全部
-d #删除指定id
-D #删除全部
测试:
1
2
3
|
[root@node03 ~]
minion01:
3.10.0-327.el7.x86_64
|
###################Master端和Minion端常用配置参数说明#####################
Master端常用的配置参数说明:
interface:指定bind的地址,默认为0.0.0.0
publish_port:指定发布端口,默认为4505
ret_port:指定结果返回端口,与minion配置文件中的master_port对应,默认为4506
uesr:指定master进程的运行用户,如果调整,则需要调整部分目录的权限,默认权限为root
timeout:指定timeout时间,如果minion规模庞大或络状况不好,建议增该值,默认5s
keep_jobs:默认情况下,minion会执行结果会返回master,master会缓存到本地的cachedir目录,该参数指定缓存多长时间,以供查看之前的执行结果,会占用磁盘空间,默认为24h
job_cache:master是否缓存执行结构,如果规模庞大(超过5000台),建议使用其他方式来存储jobs,关闭本选项,默认为True
file_recv:是否允许minion传送文件到master上,默认是Flase
file_roots:指定file server目录,默认为:
file_roots:
base:
- /srv/salt
pillar_roots:指定pillar目录,默认为:
pillar_roots:
base:
- /srv/pillar
log_level:执行日志级别,支持的日志级别由'garbage', 'trace', 'debug', info', 'warning', 'error', ‘critical ’ ,默认为’warning’
Minion端常用的配置参数说明:
master:指定master主机,默认为salt
mastar_port:指定认证和执行结果发送到master的哪个端口,与master配置文件中的ret_port对应,默认为4506
id:指定minion的标识,Salt内部使用id作为标识,唯一标识符,默认为主机名
user:指定运行minion的用户,由于安装包,启动服务等操作需要特殊用户,推荐使用root,默认为root
cache_jobs:minion是否缓存执行结果,默认为False
backuo_mode:在文件操作(file.managed或file.recurse)时,如果文件发送更改,指定备份目录,当前有效的值为minion,备份在cachedir/file_backups目录下,以原始文件名称加时间戳来命名,默认为Disabled
providers:指定模块对应的providers,如果RHRL系列中,pkg对应的providers是yumpkg5
renderer:指定配置管理系统中的渲染器,默认值为:yaml_jinja
file_client:指定file client默认去哪里(remotr或local)寻找文件,默认值为remote
loglevel:指定日志级别,默认为warnning
tcp_keepalive:minion是否与master保持keepalive检查,zeromq3一下版本存在keepalive bug,会导致某些情况下链接异常后minion无法重连master,建议有条件的话吧zeromq3以上版本,默认为True
相关推荐
SaltStack 是一种自动化运维工具,可以有效地实现服务器之间的配置管理、批量部署、远程执行等功能。 SaltStack 的二次开发和自动化运维平台的建设可以提高服务器的运维效率和质量,满足当前大数据市场的相关需求。
【自动化运维工具SaltStack的研究与自动化运维平台建设方法分析】 自动化运维工具SaltStack是现代IT环境中用于高效管理大规模服务器集群的重要工具。随着云计算和虚拟化技术的发展,传统的手动运维方式已经无法满足...
【自动化运维工具SaltStack在云计算环境中的实践】 随着云计算技术的快速发展,企业的IT环境变得日益复杂,传统的运维方式已无法适应大规模、高效率的需求。此时,自动化运维工具的重要性凸显出来,其中SaltStack...
自动化运维工具 SaltStack 在云计算环境中的实践随着云计算技术的快速普及与发展,越来越多的企业开始学习和搭建自己的云平台代替传统的 IT 交付模式,企业的 IT 环境也随之越来越复杂,常规的运维方法与技术已经...
为了实现HA,通常会部署一个ETCD集群,保证数据的冗余和一致性。在配置过程中,需要考虑ETCD的选举机制、数据备份和恢复策略。 在Kubernetes中,Kube-Proxy是负责网络代理和负载均衡的组件,它工作在每个Node上,...
总的来说,Python 自动化运维系统(saltstack+django+bootstrap)的组合提供了从后台管理到前端展示的全面解决方案,是现代 IT 基础设施自动化管理的一个有力工具。通过深入理解和实践,你可以构建出更加高效、便捷...
SaltStack 是一款强大的开源自动化运维工具,它以其高效、灵活和可扩展的特性在IT行业中备受推崇。SaltStack 提供了一种现代化的基础设施管理方法,让运维人员能够轻松部署和管理大规模服务器集群,无论是几台还是...
在具体实践中,以SaltStack为例,介绍自动化运维工具的部署及过程中的注意事项、故障诊断等内容。 - **部署准备**: - 安装Salt Master服务器作为控制中心。 - 在各目标服务器上安装Salt Minion,作为被管理端。 ...
标题中的“Linux SaltStack通过kubeadm自动化部署Kubernetes”揭示了本次讨论的核心:如何利用开源自动化配置管理工具SaltStack来简化Kubernetes集群的部署,特别是借助kubeadm这个官方提供的轻量级工具。...
### Ansible、Puppet、SaltStack三款自动化运维工具的对比 #### 一、基础介绍 在DevOps领域,自动化运维工具是实现高效部署、管理大规模服务器集群的关键。Ansible、Puppet 和 SaltStack 是目前业界较为知名的三款...
**三、SaltStack部署Kubernetes流程** 1. **环境准备**:首先,确保所有参与部署的节点都安装了SaltStack,并配置好Master和Minion的关系。 2. **配置SaltStack**:编写Salt States(SLS文件),定义Kubernetes...
SaltStack 是基于 Python 开发的 C/S 架构的一款批量管理工具,具有轻松部署、快速管理、安全可靠等特点。下面是 SaltStack 的详细知识点: 架构模式 SaltStack 采用 C/S 架构模式,Master 端作为控制中心,...
SaltStack 自动化运维工作原理及安装配置手册是介绍 SaltStack 自动化运维工具的工作原理和架构,并通过实例详述了如何使用 SaltStack 对云环境中的服务器进行命令的远程执行及配置管理,确保操作的安全性及高效性。...
SaltStack 是一种高效的基础设施管理工具,它提供了一个集中的平台来管理大量的服务器集群。SaltStack 的核心优势在于其快速响应时间、良好的可扩展性以及对大规模系统的高效管理能力。它结合了配置管理、远程执行和...
而Saltstack则是一款开源的自动化配置管理工具,用于远程执行命令、系统配置和软件部署,特别适合大规模集群的运维管理。 1. **Go语言(Golang)的应用** - **并发编程**:Go语言内置的goroutine和channel提供了轻...
Puppet是一种开源的自动化配置管理工具,主要用于简化IT基础设施的部署、管理和维护过程。它的目标是通过标准化的方式来管理服务器配置,确保系统的稳定性和一致性。Puppet支持多种操作系统,包括Linux、Unix和...
SaltStack 是一款强大的自动化运维工具,它采用客户端/服务器(C/S)架构,允许管理员对大规模的服务器集群进行配置管理、远程执行任务和状态检查。本文将深入探讨 SaltStack 的核心概念、工作原理以及如何使用提供...
SaltStack 是一种开源的自动化运维工具,可以帮助企业实现服务器的命令远程执行和配置管理,以确保操作的安全性和高效性。下面是 SaltStack 的工作原理和安装配置实例详解。 SaltStack 工作原理 ----------------...