【01】Saltstack:从零开始 Saltstack
写在前面的话
最近一直都在整理以前的乱七八糟的笔记,所以会有很多老旧的东西都会被拉出来重新遛遛。算是再度系统的进行学习。
关于 Saltstack 的一些概念
Saltstack 是基于 Python 开发的,和其类似的东西还有 Puppet(基于 rubby,更早),Ansible(基于 Python)。
Saltstack 主要包含 3 大功能:远程执行 / 配置管理(状态管理) / 云管理。
Saltstack 的四种运行方式:Local,C/S(Master / Minion),Syndic,SSH。
一般我们用的最多的就是 C/S 的方式。
我们会在很多资料上面看到这样一个说法:Saltstack 就是简化版的 Puppet + 强化版的 Func。
至于为啥叫 Saltstack,据说 Salt 来源于作者所在的城市是美国的盐湖城,而 Stack 来源则是因为所有 Stack 的都火了,如 OpenStack。
最后,Saltstack 消息发布系统监听端口为 4505,客户端与服务端通信端口为 。
安装 Saltstack
我们这里实现准备了 3 台 CentOS 7 的虚拟机,信息如下:
IP地址 | 主机名 | 说明 |
---|---|---|
192.168.100.111 | demo-node1 | Master 节点,CentOS Linux release 7.5 |
192.168.100.112 | demo-node2 | Minion 节点,CentOS Linux release 7.5 |
192.168.100.113 | demo-node3 | Minion 节点,CentOS Linux release 7.5 |
Saltstack 本身在 epel 源中就存在,但我们这里还是使用官方给我们提供的源安装:
我们可以从官方的源找到对应的系统,我这里采用的都是 CentOS7。
1. 在三个节点都安装源:
yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
完成以后在 /etc/yum.repos.d/ 目录会生成一个 salt-latest.repo 的源文件。我们这里建议 Saltstack 采用 yum 安装的方式而非源码安装,后者容易出现各种问题。
2. 在主节点安装 Salt master 和 minion:
yum -y install salt-master salt-minion
3. 在其他节点上只需要按照 Salt minion:
yum -y install salt-minion
从按照过程我们可以看到会安装很多 Python 依赖包,这就是不推荐源码安装的主要原因:
至此,Saltstack 安装完成!
配置 Saltstack
安装完成后不代表我们就能使用了,还需要对服务进行配置,具体方法如下:
1. 主节点启动 Master:
systemctl start salt-master
2. 所有节点配置 Minion:配置文件为 /etc/salt/minion
# 第 16 行,一般写 Master 的域名最好,没用域名写 IP
master: 192.168.100.111 # 第 112 行,配置每台主机的 id,要求唯一且具有意义,用于区分主机
id: saltstack-node-01
3. 所有节点启动 Minion:
systemctl start salt-minion
4. 此时查看目录变化(这里我们做个拓展,帮助我们更好的了解 saltsatck):
tree /etc/salt/
如果没有 tree 命令 yum 安装一个即可,查看当前的目录结构变化:
Master 节点:
Minion 节点:
可以看到,在 Master 和 Minion 节点的 pki/minion 目录下都生成了公钥私钥文件。同时,Minion 都会把自己的公钥文件发给 Master 节点。并更名为我们设置的 id 名字。我们可以通过 MD5 查看两个文件是否为同一个。
在 Master 节点查看 node3 的公钥:
在 node3 查看 pub 文件:
可以看到两个 MD5 值是相同的,所以这其实是同一个文件。
注意:在其他资料上可能见到生成 minion_id 文件,原因是没配置 minion 配置中的 id ,如果有配置是不会生成的。
5. 在 Master 上面查看 Key:
启动了 Minion 并不就能代表着能够连入 Master,这还牵扯到授权,我们可以查看目前授权的主机状态:
salt-key
如下图:
6. 允许授权:
salt-key -a saltstack-node-01
如下图:
这里可以使用通配符,如:
salt-key -a saltstack-node-*
那么剩下的都会被添加授信:
此时再度查看 Master 节点的目录结构:
可以发现,被授权的 Key 都从 minions_pre 下移动到了 minions 目录,同时在 minion 目录下新增了 minion_master.pub 文件,这样就实现了互相通信。
同时这也意味着我们之前配置 id 的重要性,因为你修改 id,意味着这个公钥就失效了。
同时在 id 设计的时候,我们应该让他具有意义,比如我们现在有两个项目,一个叫 erp,一个叫 mall,那么针对 erp 的主机群的 id 设计就应该是 erp-xxxx,mall 的 id 就应该是是 mall-xxxx,这样我们就能使用通配符对主机群组进行批量管理。
当然还有一下常见的参数,通过 salt-key -h 查看,如:
salt-key 参数 | 说明 |
---|---|
-L | 显示所有 |
-A | 接受所有授权 |
-d | 删除某个 Key |
-D | 删除所有 |
7. 测试节点通信:
salt '*' test.ping
使用单引号的目的是转义,我们向所有授权的发起状态检测,结果如图:
8. 远程执行命令:
salt 'saltstack-node-03' cmd.run 'ip a'
执行效果如图:
其它示例:
1. 通配符使用的时候,如选择 node1,node2,可以写成 node[12]
2. 选择多台的时候可以使用逗号隔开,但是需要 -L 参数,如:salt -L 'node1,node2' test.ping
3. 相同前缀也可以使用竖线分割,但是必须要 -E 参数,如:salt -E 'node(1|2)' test.ping
小结
至此,我们算是简单得了解了安装 Saltstack 之后一些简单的配置,接下来我们将慢慢的正式开始谈及 Saltstack 的一些更高级的用法。
【01】Saltstack:从零开始 Saltstack的更多相关文章
- 【Saltstack】Saltstack简单说明
[Saltstack] Saltstack是一个服务器集中管理中心平台,可以帮助管理员轻松的对若干台服务器进行统一操作.类似的工具还有Ansible,Puppet,func等等.相比于这些工具,sal ...
- 【saltstack】saltstack执行结果和事件存储到mysql
前言 项目中使用saltstack有一段时间了,之前都是在控制台操作,后来感觉越来越不方便,每次操作需要登陆服务器,还需要记一堆命令.最重要的是,公司进新人之后,新人由于不熟悉saltstack,容易 ...
- 【SaltStack】SaltStack研究心得
基础篇 ------------------------------------------------------------------------------------------------ ...
- saltstack(六) saltstack Job管理
一,简介 Jid: job id 格式为%Y%m%d%H%M%S%f master在下发指令消息时,会附带上产生的jid,minion在接收到指令开始执行时,会在本地的cachedir(默认是/var ...
- saltstack(五) saltstack的state状态管理
一,YAML语法 首先先了解一下YAML,默认的SLS文件的renderer是YAML renderer.YAML是一个有很多强大特性的标记性语言.Salt使用了一个YAML的小型子集,映射非常常用的 ...
- saltstack(四) saltstack的targeting、分组
targeting支持如下matcher: Globing : '*', 正则: 指定-E参数,正则表达式匹配多个 List: 指定-L参数,salt -E 'web1-(prod|devel)' t ...
- SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流
SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltSta ...
- 01 . SaltStack部署配置及简单应用
SaltStack简介 SaltStack saltstack是一个新的基础平台管理工具,只需要花费数分钟即可运行起来,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递. saltstack是使 ...
- 快速入门SaltStack
导读 SaltStack是基于Python开发的一套C/S架构配置管理工具(功能不仅仅是配置管理,如使用salt-cloud配置AWS EC2实例),它的底层使用ZeroMQ消息队列pub/sub方式 ...
随机推荐
- 浅谈 Flask 框架
一.框架对比 Django —— 教科书式框架 优势:组件全,功能全,教科书 劣势:占用资源,创建复杂度高 Flask —— 以简单为基准开发,一切从简,能省则省 优势:轻,块 劣势:先天不足,第三方 ...
- maven 学习---使用Maven清理项目
在基于Maven的项目中,很多缓存输出在“target”文件夹中.如果想建立项目部署,必须确保清理所有缓存的输出,从面能够随时获得最新的部署. 要清理项目缓存的输出,发出以下命令: mvn clean ...
- iOS开发 简单实现视频音频的边下边播 (转)
1.ios视频音频边缓存边播放,缓存时可以在已下载的部分拖拽进度条. 3.无论是下载到一半退出还是下载完退出,已缓存的数据都存到自己指定的一个路径.如果已下载完,下次播放时可以不再走网络,直接播放 ...
- VUE-父组件和子组件
1.父组件 const cnp2 = Vue.extend({ template: ` <div> <h2>我是构造器2</h2> <cpn1>< ...
- [b0018] python 归纳 (四)_运算符重载
# -*- coding: UTF-8 -*- """ 测试运算符重载 加法 总结: python 运算符表达式其实都是调用 类中方法 __xxx__ + <--- ...
- JS高阶---执行上下文栈
大纲: 主体: 注意:*******函数调用时才会产生上下文栈,声明时不会产生********** 顺序: 概念图: 执行上下文栈的顺序---→后进先出 其他概念图: 当前执行的上下文总是在顶部 全局 ...
- 解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”
centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装 ...
- windows自动化测试环境搭建文档
步骤如下: 1.搭建安卓环境,需要设置系统变量“ANDROID_HOME”. 2.安装Node.js http://www.nodejs.org/download/ 下载相关操作系统的版本 3.安装A ...
- 201871010109-胡欢欢《面向对象程序设计(java)》第6-7周学习总结
实验六 继承定义与使用 实验时间 2019-9-29 第一部分:理论部分. 1.继承:已有类来构建新类的一种机制.档定义了一个新类继承另一个类时,这个新类就继承了这个类的方法和域,同时在新类中添加新的 ...
- 201871010121-王方-《面向对象程序开发设计java》第十四周实验总结
4 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/ ...