在 SaltStack(Salt) 中,配置文件管理主要通过 State(状态)系统 来完成,核心思想是:
用声明式 SLS 文件描述“目标状态”,Salt 负责把实际配置变成期望状态。
下面从 原理 → 常用模块 → 示例 → 实践建议 系统说明。
Salt 使用 States(状态) 来描述配置,底层通常依赖以下机制:
典型流程:
Minion 拉取 SLS → 解析状态 → 调用模块 → 修改配置文件 → 返回结果
file.managed这是 配置文件管理最核心的模块。
/etc/nginx/nginx.conf:
file.managed:
- source: salt://nginx/nginx.conf
- user: root
- group: root
- mode: 644
含义:
/etc/nginx/nginx.conf/srv/salt/nginx/nginx.conf/etc/nginx/nginx.conf:
file.managed:
- source: salt://nginx/nginx.conf.j2
- template: jinja
- user: root
- group: root
- mode: 644
- context:
worker_processes: 4
模板示例(nginx.conf.j2):
worker_processes {{ worker_processes }};
✅ 好处:
/etc/myapp/config.yaml:
file.managed:
- source: salt://myapp/config.yaml.j2
- template: jinja
模板中:
db_host: {{ pillar['db_host'] }}
db_port: {{ pillar['db_port'] }}
Pillar 示例:
db_host: 192.168.1.10
db_port: 3306
✅ Pillar 常用于 敏感配置 / 环境差异配置
{% if grains['os'] == 'CentOS' %}
conf_path: /etc/centos.conf
{% else %}
conf_path: /etc/default.conf
{% endif %}
{% for server in pillar['servers'] %}
server {{ server }}
{% endfor %}
/etc/nginx/nginx.conf:
file.managed:
- source: salt://nginx/nginx.conf
- watch_in:
- service: nginx
nginx:
service.running:
- enable: true
- reload: true
或:
- watch:
- file: /etc/nginx/nginx.conf
✅ 实现 配置变更 → 自动 reload/restart
/etc/hosts:
file.managed:
- source: salt://common/hosts
server_id: {{ grains['id'] }}
ip: {{ grains['ipv4'][0] }}
或根据 Pillar:
env: {{ pillar.get('env', 'dev') }}
/etc/myapp/conf.d:
file.directory:
- user: root
- group: root
- mode: 755
/etc/myapp:
file.recurse:
- source: salt://myapp/conf
- include_empty: true
/etc/sysctl.conf:
file.append:
- text: |
net.ipv4.ip_forward = 1
/etc/ssh/sshd_config:
file.replace:
- pattern: '^#?PermitRootLogin.*'
- repl: 'PermitRootLogin no'
- append_if_not_found: true
file.managed + Jinja + Pillarsourcewatch 服务/srv/salt/
├── nginx/
│ ├── init.sls
│ ├── nginx.conf.j2
├── myapp/
│ ├── init.sls
│ ├── config.yaml.j2
└── top.sls
# top.sls
base:
'*':
- nginx
- myapp
SaltStack 通过
file.managed+ Jinja 模板 + Pillar,实现从“静态配置下发”到“动态、环境感知的配置文件管理”,并可与服务状态联动,保证配置始终处于期望状态。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。