阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

快速入门SaltStack

296次阅读
没有评论

共计 5447 个字符,预计需要花费 14 分钟才能阅读完成。

导读 SaltStack 是基于 Python 开发的一套 C / S 架构配置管理工具(功能不仅仅是配置管理,如使用 salt-cloud 配置 AWS EC2 实例),它的底层使用 ZeroMQ 消息队列 pub/sub 方式通信,使用 SSL 证书签发的方式进行认证管理。号称世界上最快的消息队列 ZeroMQ 使得 SaltStack 能快速在成千上万台机器上进行各种操作。
快速入门 SaltStack

而且采用 RSA Key 方式确认身份,传输采用 AES 加密,这使得它的安全性得到了保障。SaltStack 经常被描述为 Func 加强版 +Puppet 精简版。

为什么选择 SaltStack?

目前市场上主流的开源自动化配置管理工具有 puppet、chef、ansible、saltstack 等等。到底选择那个比较好?可以从以下几方面考虑:

语言的选择(puppet/chef vs ansible/saltstack)

Puppet、Chef 基于 Ruby 开发,ansible、saltstack 基于 python 开发的

运维开发语言热衷于 python(后期可做二次开发),排除 Puppet、Chef

速度的选择 (ansible vs saltstack)

ansible 基于 ssh 协议传输数据,SaltStack 使用消息队列 zeroMQ 传输数据。从网上数据来看,SaltStack 比 ansible 快大约 40 倍。

对比 ansible,Saltstack 缺点是需要安装客户端。为了速度建议选择 SaltStack

SaltStack github 地址:https://github.com/saltstack/salt

SaltStack 官网文档地址:https://docs.saltstack.com

SaltStack 架构

在 SaltsStack 架构中服务端叫作 Master,客户端叫作 Minion,都是以守护进程的模式运行,一直监听配置文件中定义的 ret_port(saltstack 客户端与服务端通信的端口,负责接收客户端发送过来的结果,默认 4506 端口)和 publish_port(saltstack 的消息发布系统,默认 4505 端口)的端口。当 Minion 运行时会自动连接到配置文件中定义的 Master 地址 ret_port 端口进行连接认证。

快速入门 SaltStack
  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 为例,采用 yum 安装,还有其它安装方式,如 pip、源码、salt-bootstrap

EPEL 源配置
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-6.noarch.rpm
安装、配置管理端(master)
yum -y install salt-master
service salt-master start

注:需要 iptables 开启 master 端 4505、4506 端口

安装被管理端
yum -y install salt-minion
sed -i 's@#manster:.*@manster: master_ipaddress@' /etc/salt/minion  #master_ipaddress 为管理端 IP
echo 10.252.137.141 > /etc/salt/minion_id # 个人习惯使用 IP,默认主机名
service salt-minion start
Master 与 Minion 认证

minion 在第一次启动时,会在 /etc/salt/pki/minion/(该路径在 /etc/salt/minion 里面设置)下自动生成 minion.pem(private key)和 minion.pub(public key),然后将 minion.pub 发送给 master。master 在接收到 minion 的 public key 后,通过 salt-key 命令 accept minion public key,这样在 master 的 /etc/salt/pki/master/minions 下的将会存放以 minion id 命名的 public key,然后 master 就能对 minion 发送指令了。
认证命令如下:

[root@10.252.137.14 ~]# salt-key -L    #查看当前证书签证情况
Accepted Keys:
Unaccepted Keys:
10.252.137.141
Rejected Keys:
[root@10.252.137.14 ~]# salt-key -A -y   #同意签证所有没有接受的签证情况
The following keys are going to be accepted:
Unaccepted Keys:
10.252.137.141
Key for minion 10.252.137.141 accepted.
[root@10.252.137.14 ~]# salt-key -L
Accepted Keys:
10.252.137.141
Unaccepted Keys:
Rejected Keys:
SaltStack 远程执行
[root@10.252.137.14 ~]# salt '*' test.ping
10.252.137.141:
True
[root@10.252.137.14 ~]# salt '*' cmd.run 'ls -al'
10.252.137.141:
total 40
drwx------  4 root root 4096 Sep  7 15:01 .
drwxr-xr-x 22 root root 4096 Sep  3 22:10 ..
-rw-------  1 root root  501 Sep  7 14:49 .bash_history
-rw-r--r--  1 root root 3106 Feb 20  2014 .bashrc
drwx------  2 root root 4096 Jan 30  2015 .cache
drwxr-xr-x  2 root root 4096 Apr 22 13:57 .pip
-rw-r--r--  1 root root  140 Feb 20  2014 .profile
-rw-r--r--  1 root root   64 Apr 22 13:57 .pydistutils.cfg
-rw-------  1 root root 4256 Sep  7 15:01 .viminfo

salt 执行命令的格式如下:

salt ''  [arguments]

target:执行 salt 命令的目标,可以使用正则表达式

function:方法,由 module 提供

arguments:function 的参数

target 可以是以下内容:

1. 正则表达式

salt -E 'Minion*' test.ping  #主机名以 Minion 开通

2. 列表匹配

salt -L Minion,Minion1 test.ping

3. Grians 匹配

salt -G 'os:CentOS' test.ping

os:CentOS(默认存在)是 Grains 的键值对,数据以 yaml 保存在 minion 上,可在 minion 端直接编辑 /etc/salt/grains,yaml 格式。或者在 master 端执行 salt ‘*’ grains.setval key “{‘sub-key’: ‘val’, ‘sub-key2’: ‘val2’}” , 具体文档(命令 salt * sys.doc grains 查看文档)

4. 组匹配

salt -N groups test.ping

如,在 master 新建 /etc/salt/master.d/nodegroups.conf,yaml 格式

5. 复合匹配

salt -C 'G@os:CentOS or L@Minion' test.ping

6. Pillar 值匹配

salt -I 'key:value' test.ping

/etc/salt/master 设置 pillar_roots, 数据以 yaml 保存在 Master 上

7. CIDR 匹配

salt -S '10.252.137.0/24' test.ping

10.252.137.0/24 是一个指定的 CIDR 网段

function 是 module 提供的方法

通过下面命令可以查看所有的 function:
salt ‘10.252.137.141’ sys.doc cmd

function 可以接受参数:

salt '10.252.137.141' cmd.run 'uname -a'

并且支持关键字参数:

在所有 minion 上切换到 / 目录以 salt 用户运行 uname - a 命令。salt '10.252.137.141' cmd.run 'uname -a' cwd=/ user=salt
SaltStack 配置管理
states 文件

salt states 的核心是 sls 文件,该文件使用 YAML 语法定义了一些 k / v 的数据。

sls 文件存放根路径在 master 配置文件中定义,默认为 /srv/salt, 该目录在操作系统上不存在,需要手动创建。

在 salt 中可以通过 salt:// 代替根路径,例如你可以通过 salt://top.sls 访问 /srv/salt/top.sls。

在 states 中 top 文件也由 master 配置文件定义,默认为 top.sls,该文件为 states 的入口文件。

一个简单的 sls 文件如下:

apache:
 pkg.installed
 service.running
   - require:
     - pkg: apache

说明:此 SLS 数据确保叫做 ”apache” 的软件包 (package) 已经安装, 并且 ”apache” 服务 (service) 正在运行中。

  • 第一行,被称为 ID 说明(ID Declaration)。ID 说明表明可以操控的名字。
  • 第二行和第四行是 State 说明(State Declaration),它们分别使用了 pkg 和 service states。pkg state 通过系统的包管理其管理关键包,service state 管理系统服务(daemon)。在 pkg 及 service 列下边是运行的方法。方法定义包和服务应该怎么做。此处是软件包应该被安装,服务应该处于运行中。
  • 第六行使用 require。本方法称为”必须指令”(Requisite Statement),表明只有当 apache 软件包安装成功时,apache 服务才启动起来。

state 和方法可以通过点连起来,上面 sls 文件和下面文件意思相同。

apache:
 pkg.installed
 service.running
   - require:
     - pkg: apache

将上面 sls 保存为 init.sls 并放置在 sal://apache 目录下,结果如下:

/srv/salt
├── apache
│   └── init.sls
└── top.sls

top.sls 如何定义呢?

master 配置文件中定义了三种环境,每种环境都可以定义多个目录,但是要避免冲突,分别如下:

# file_roots:
#   base:
#     - /srv/salt/
#   dev:
#     - /srv/salt/dev/services
#     - /srv/salt/dev/states
#   prod:
#     - /srv/salt/prod/services
#     - /srv/salt/prod/states

top.sls 可以这样定义:

base:
  '*':
   - apache

说明:

第一行,声明使用 base 环境

第二行,定义 target,这里是匹配所有

第三行,声明使用哪些 states 目录,salt 会寻找每个目录下的 init.sls 文件。

运行 states

一旦创建完 states 并修改完 top.sls 之后,你可以在 master 上执行下面命令:

[root@10.252.137.14 ~]# salt '*' state.highstate
sk2:
----------
State: - pkg
Name:      httpd
Function:  installed
Result:    True
Comment:   The following packages were installed/updated: httpd.
Changes:
----------
httpd:
----------
new:
2.2.15-29.el6.centos
old:
----------
State: - service
Name:      httpd
Function:  running
Result:    True
Comment:   Service httpd has been enabled, and is running
Changes:
----------
httpd:
True
Summary
------------
Succeeded: 2
Failed:    0
------------
Total:     2

上面命令会触发所有 minion 从 master 下载 top.sls 文件以及其中定一个的 states,然后编译、执行。执行完之后,minion 会将执行结果的摘要信息汇报给 master。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计5447字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994587
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...