saltstack (1) 简介

基本原理:

SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key -L命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信。master可以发送任何指令让minion执行了,salt有很多可执行模块,比如说cmd模块,在安装minion的时候已经自带了,它们通常位于你的python库中,locate salt | grep /usr/  可以看到salt自带的所有相关模块。这些模块是python写成的文件,里面会有好多函数,如cmd.run,当我们执行salt ‘*‘ cmd.run ‘uptime‘的时候,master下发任务匹配到的minion上去,minion执行模块函数,并返回结果。master监听4505和4506端口,4505对应的是ZMQ的PUB system,用来发送消息,4506对应的是REP system是来接受消息的。

具体步骤如下

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执行结果,将结果输出到终端


安装 saltstack

[[email protected] ~]#  wget https://repo.saltstack.com/yum/amazon/salt-amzn-repo-2016.11-1.amzn1.noarch.rpm

[[email protected] ~]# rpm -ivh salt-amzn-repo-2016.11-1.amzn1.noarch.rpm

Preparing...                          ################################# [100%]

Updating / installing...

1:salt-amzn-repo-2016.11-1.amzn1   ################################# [100%]

[[email protected] ~]# yum install salt-master -y #服务端

[[email protected] ~]# yum install salt-minion -y #客户端

[[email protected] ~]# yum install salt-ssh

[[email protected] ~]# yum install salt-syndic

[[email protected] ~]# yum install salt-cloud

[[email protected] ~]# vim /etc/salt/master

[[email protected] ~]# sed -n ‘15p‘ /etc/salt/master

interface: 0.0.0.0

[[email protected] ~]# service salt-master start

Starting salt-master daemon:                               [  OK  ]

[[email protected] ~]# lsof -i:4505

COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

salt-mast 60444 root   12u  IPv4 145608      0t0  TCP *:4505 (LISTEN)

[[email protected] ~]# lsof -i:4506

COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

salt-mast 60464 root   20u  IPv4 145637      0t0  TCP *:4506 (LISTEN)

[[email protected] ~]#

[[email protected] ~]# vim /etc/salt/minion

[[email protected] ~]# sed -n ‘17p;79p‘ /etc/salt/minion

master: redis01-jp

id: redis02-jp

[[email protected] ~]# service salt-minion start

Starting salt-minion daemon:                               [  OK  ]

[[email protected] ~]#

[[email protected] ~]# salt-key -L

Accepted Keys:

Denied Keys:

Unaccepted Keys:

redis02-jp

Rejected Keys:

[[email protected] ~]# salt-key -a redis02-jp      添加指定ID的key

The following keys are going to be accepted:

Unaccepted Keys:

redis02-jp

Proceed? [n/Y] y

Key for minion redis02-jp accepted.

[[email protected] ~]# salt-key -L

Accepted Keys:

redis02-jp

Denied Keys:

Unaccepted Keys:

Rejected Keys:

[[email protected] ~]#

关于master的认证:

salt-key  的基本命令:

salt-key -L #检测当前server端所有minion端key的情况,三种:接收、等待接收和拒绝

salt-key -a minion_id    #指定接收某台minion的key

salt-key -A    #接收Unaccepted Keys下所有的minion

salt-key -d  minion_id   #删除已经接收的机器中指定机器minion key (Accepted Keys:)

salt-key -D   #删除已经接收的所有机器(Accepted Keys:)

salt-key -y

自动认证

[[email protected]redis01-jp ~]# sed -n ‘215p‘ /etc/salt/master

auto_accept: True

[[email protected]redis01-jp ~]# service salt-master restart

Stopping salt-master daemon:                               [  OK  ]

Starting salt-master daemon:                               [  OK  ]

[[email protected]redis01-jp ~]#

用法与帮助

salt [options] ‘<target>‘ <function> [arguments]

-E   可以用正则表达式来匹配对象

-L   以列表的形式来指定对象

-G  根据默认的grain的结果 执行模块

-N  匹配指定的组

salt ‘‘ sys.doc           #查看所有执行模块的doc

salt  ‘‘ sys.doc test   #查看test模块的帮助

salt ‘*‘ sys.doc test.ping   #查看test.ping函数的帮助

salt ‘*‘ sys.list_functions grains  #列出模块的相关函数

时间: 2024-12-24 10:09:41

saltstack (1) 简介的相关文章

saltstack管理一之saltstack的简介

saltstack的简介

saltstack简介和安装

系统环境:CentOS6.5 准备yum源: epel源(包含了saltstack的包).阿里源(CentOS-Base.repo) Host解析文件: # cat /etc/hosts 192.168.1.65 super65.cn192.168.1.66 super66.cn saltstack简介: saltstack是一款有python编写的自动化执行配置管理工具.C/S模式 底层通过ZeroMQ通讯,使用ssl证书签发的方式进行认证管理. 依赖包: Python版本大于2.6或版本小于

saltstack简介

一.简介 Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具.由Master和Minion构成,通过ZeroMQ进行通信 Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口 salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制 如果连接断开,sever端将无法对客户端进行控制:客户端若检查到断开

saltstack之基础入门系列文章简介

使用saltstack已有一段时间,最近由于各种原因,特来整理了saltstack基础入门系列文章,已备后续不断查阅(俗话说好记性不如烂笔头),也算是使用此工具的一个总结.saltstack的前六篇文章主要讲述了saltstack的安装.远程执行.配置管理.数据系统以及jinjia模板等知识点,从第七篇往后的文章是一些使用saltstack的案例,包括系统初始化,rpm包以及源码安装等. 博客中saltstack系列的文章,适合初学者从零开始学习直到逐渐熟练使用.文章具有一定的连贯性,如果没有任

saltstack中grains简介

1.什么是grains:(静态数据,minion启动时采集) Grains Static bits of information that a minioncollects about the system when the minion first starts. The grains interface is made available toSalt modules and components so that the right salt minion commands areautom

&nbsp; Saltstack实战

一:saltstack简介 部署的工作,不能只用手来做了,我们需要用工具来完成,工具化和标准化是相辅相成的,工具化让线上运行的东西更标准 Saltstack是比较新的自动化工具,是python开发的,也提供了api,saltstack有三大功能,远程执行,配置管理和云管理,配置管理也可以叫做状态管理,运维三板斧,监控,执行,配置 Saltstack对不,Puppet是ruby写的不支持远程执行  ansible 也是python写的.Saltstack的官方网站就是saltstack.com 运

SaltStack部署

一.基础介绍 1.简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq.PyCrypto.Pyjinjia2.python-msgpack和PyYAML等)构建. 通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理.分发文件.

SaltStack(五) SaltStack与ZeroMQ

一.ZeroMQ描述 我们进行自动化运维大多数情况下,是我们的服务器数量已经远远超过人工SSH维护的范围,SaltStack可以支数以千计,甚至更多的服务器,这些性能的提供主要来自于ZeroMQ,因为SaltStack地城是基于ZeroMQ进行高效的网络通信,ZMQ用于node与node间的通信,node可以是主机也可以可以是进程. 二.ZeroMQ简介 ZeroMQ(我们通常还会OMQ,Zmq等来表示)是一个简单好用的传输层,像框架一样的一个套接字库,他使用的socket编程更加简单.简洁和性

浅谈saltstack

saltstack简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能.SaltStack基于Python语 言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq.PyCrypto.Pyjinjia2.python-msgpack和 PyYAML等)构建. saltstack特性 (1).部署简单.方便: (2).支持大部分UNIX/Linux及Windows环境: (3).主从集中化管理: (4).配置简单.功能强大.扩展性强