SaltStack Salt 核心模块速查指南
前言
SaltStack(简称Salt)是一款强大的基础设施自动化管理工具,采用Python编写,支持配置管理、远程执行等功能。本文将详细介绍Salt中最常用的核心模块及其使用方法,帮助初学者快速掌握Salt的核心功能。
1. top.sls 文件解析
top.sls是Salt状态系统的核心配置文件,用于定义哪些SLS模块将被加载到哪些minion上。
基本配置
默认情况下,top.sls文件位于master配置文件中file_roots指定的路径下:
file_roots:
base:
- /srv/salt
示例配置
apache:
pkg:
- installed
- version: 2.2.23
service:
- running
- enable: True
/var/www/index.html:
file:
- managed
- source: salt://webserver/index.html
- user: root
- group: root
- mode: 644
- require:
- pkg: apache
这个示例展示了如何:
- 安装特定版本的Apache软件包
- 确保Apache服务正在运行并开机自启
- 管理网站首页文件
- 设置文件依赖关系(require)
2. 文件管理模块
file模块是Salt中最常用的模块之一,用于管理文件和目录。
核心功能
| 功能 | 描述 |
|---|---|
absent | 确保文件/目录不存在 |
directory | 确保目录存在 |
managed | 从master管理文件(支持模板) |
symlink | 创建符号链接 |
touch | 创建空文件或更新时间戳 |
典型用法
/etc/http/conf/http.conf:
file.managed:
- source: salt://apache/http.conf
- user: root
- group: root
- mode: 644
- template: jinja
- context:
custom_var: "override"
此配置会:
- 从master获取http.conf文件
- 设置文件权限为644
- 使用Jinja2模板引擎处理文件
- 传入自定义变量
3. 软件包管理
pkg模块用于管理软件包,支持多种包管理系统(yum, apt等)。
核心功能
| 功能 | 描述 |
|---|---|
installed | 确保软件包已安装 |
latest | 确保软件包是最新版本 |
removed | 确保软件包已移除 |
示例配置
httpd:
pkg:
- installed
- repo: mycustomrepo
- version: 2.0.6~ubuntu3
4. 服务管理
service模块用于管理系统服务。
核心功能
| 功能 | 描述 |
|---|---|
running | 确保服务正在运行 |
enabled | 确保服务开机自启 |
dead | 确保服务已停止 |
示例配置
apache:
service:
- running
- name: httpd
- enable: True
5. 命令执行
cmd模块用于执行任意命令。
核心功能
| 功能 | 描述 |
|---|---|
run | 执行命令 |
script | 执行脚本 |
wait | 等待命令执行 |
示例
date > /tmp/salt-run:
cmd:
- run
6. 定时任务管理
cron模块用于管理cron定时任务。
示例配置
date > /tmp/crontest:
cron.present:
- user: root
- minute: 7
- hour: 2
7. 用户和组管理
用户管理示例
fred:
user.present:
- fullname: Fred Jones
- shell: /bin/zsh
- uid: 4000
- groups:
- wheel
- games
组管理示例
cheese:
group.present:
- gid: 7648
- system: True
8. 其他实用模块
Git仓库管理
https://github.com/saltstack/salt.git:
git.latest:
- rev: develop
- target: /tmp/salt
主机名管理
salt-master:
host.present:
- ip: 192.168.0.42
内核模块管理
kvm_amd:
kmod.present
pcspkr:
kmod.absent
文件系统挂载
/mnt/sdb:
mount.mounted:
- device: /dev/sdb1
- fstype: ext4
- opts:
- defaults
内核参数调整
vm.swappiness:
sysctl.present:
- value: 20
总结
本文介绍了SaltStack中最常用的核心模块及其典型用法。掌握这些模块后,您已经能够完成大多数基础设施自动化管理任务。Salt的强大之处在于其模块化设计,通过组合这些基础模块,可以实现复杂的自动化管理场景。
建议初学者从file、pkg和service这三个最常用的模块开始实践,逐步掌握其他模块的使用方法。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



