SaltStack

SaltStack

简介

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

核心功能

  • 使管理命令能够并行在远程系统中执行
  • 使用安全和加密的协议
  • 使用尽可能最小和最快的网络负载
  • 提供简单的编程接口

架构

  • Master:主控节点

  • Minion:被管理节点

安装

1
2
3
4
5
# 服务端安装
yum install -y epel-release && yum install -y salt-master salt-minion

# 客户端安装
yum install -y epel-release && yum install -y salt-minion

配置

  • 客户端

Grains

  • Grains是minion端用来设置minion节点信息的组件,saltstack通过grains来获取minion的底层管理信息;

  • SaltStack收集的Grains信息包括: 操作系统版本、域名、IP地址、内核、操作系统类型、内存以及许多其他系统属性。

  • 可以将自定义的grains添加到Salt Minion的/etc/salt/grains文件中,或放置在Grains部分下的Salt Minion配置文件中。

1
2
3
4
5
6
7
8
# 列出 grains item
[salt-master01]$ salt '*' grains.ls
# 
[salt-master01]$ salt '*' grains.items
#
[salt-master01]$ salt '*' grains.item os
# 刷新minion grains
[salt-master01]$ salt '*' saltutils.refresh_grains

Pillar

  • Pillar是master上

  • Salt pillar是这样的一种系统, 它允许您安全的定义一些数据,然后通过目标匹配方式应用到一个或多个minions中去。Salt Pillar数据可以用来存放端口、文件路径、配置参数和密码等值。

默认入口文件:/srv/pillar/top.sls

1
2
# 更新minio
$ salt '*' saltutil.refresh_pillar

Fomulas

用法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ salt -C "G@ipv4:192.168.1.11 or G@host:192.168.1.15" grains.item ipv4

# 列出所有grains items
$ salt bj-db-01  grains.ls
# 查看单个grains item值
$ salt bj-db-01  grains.item ipv4

# 查看运行中的job
$ salt '*' saltutil.running
$ salt-run jobs.lookup_jid <job_id>

# 结束salt job
$ salt '*' saltutil.kill_job <job_id>

# 执行指定的sls: /srv/salt/chubaofs/consul.sls
$ salt '*' state.sls chubaofs.consul

# 命令传入pillar
$ salt -N 'cfs-yz-01' state.sls chubaofs.consul pillar='{"consul_op": "add"}'

# 同步自定义grains脚本
$ salt '*' saltutil.sync_grains

# 滚动依次执行
$ salt -b 1 --batch-wait $((60*2)) -C "G@cluster:${cluster}" test.ping

Salt-SSH

salt-ssh是一个免代理的salt系统,其通过ssh来操作主机。只依赖ssh+python,其他用法和saltstack兼容。

参考

  1. Saltstack 快速入门教程 - 云+社区 - 腾讯云

  2. python调用salt-api - 简书

  3. https://docs.saltproject.io/en/latest/topics/targeting/compound.html

  4. Flask jinja2 内置过滤器 总结与分析 - Diego | BY Blog

  5. 模板设计者文档 — Jinja2 2.7 documentation

  6. SlatStack最佳实践

  7. SaltStack中文用户手册

  8. SALT 十分钟入门 · GitHub

updatedupdated2024-08-252024-08-25