Salt是一个使用Python开发的,非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信。
- 使管理命令能够并行在远程系统中执行
- 使用安全和加密的协议
- 使用尽可能最小和最快的网络负载
- 提供简单的编程接口
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是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
|
默认入口文件:/srv/pillar/top.sls
1
2
| # 更新minio
$ salt '*' saltutil.refresh_pillar
|
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来操作主机。只依赖ssh+python,其他用法和saltstack兼容。
Saltstack 快速入门教程 - 云+社区 - 腾讯云
python调用salt-api - 简书
https://docs.saltproject.io/en/latest/topics/targeting/compound.html
Flask jinja2 内置过滤器 总结与分析 - Diego | BY Blog
模板设计者文档 — Jinja2 2.7 documentation
SlatStack最佳实践
SaltStack中文用户手册
SALT 十分钟入门 · GitHub