SaltStack自动化部署实战指南
一 架构与原理
二 快速搭建与连通性验证
yum -y install salt-master;systemctl enable --now salt-master。yum -y install salt-minion;master: <Master_IP>,可自定义 id: <minion-id>;systemctl enable --now salt-minion。salt-key -L;接受全部:salt-key -A(生产建议逐台核验指纹);salt '*' test.ping(返回 True 表示连通)。三 目录结构与核心配置
interface: <Master_IP>;file_roots: { base: [/srv/salt] };pillar_roots: { base: [/srv/pillar] };nodegroups: 便于按业务分组编排;auto_accept: True(生产不建议)。mkdir -p /srv/salt /srv/pillar;修改后重启 salt-master 使配置生效。四 实战示例 用 State 部署 Nginx
base:
'*':
- nginx
nginx:
worker_processes: {{ grains['num_cpus'] }}
server_name: {{ grains['fqdn'] }}
worker_processes {{ pillar['nginx']['worker_processes'] }};
events { worker_connections 4096; }
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name {{ pillar['nginx']['server_name'] }};
location / { root /usr/share/nginx/html; index index.html; }
}
}
nginx_pkg:
pkg.installed:
- name: nginx
nginx_conf:
file.managed:
- name: /etc/nginx/nginx.conf
- source: salt://nginx/files/nginx.conf.jinja
- template: jinja
- user: root
- group: root
- mode: 644
nginx_service:
service.running:
- name: nginx
- enable: True
- watch:
- file: nginx_conf
salt '*' state.show_sls nginx;salt '*' state.apply nginx test=True;salt '*' state.apply nginx;salt '*' cmd.run 'curl -I http://127.0.0.1'。五 规模化与发布策略建议
os, role, datacenter)或 nodegroups 精准圈定目标,减少误伤。batch 控制并发(如 batch: 5),实现滚动升级与金丝雀发布,降低风险。salt/minion/*/start、job/ret/* 等事件,实现自动注册、失败自愈、告警联动。state.show_sls、state.apply test=True;state.apply -l debug、--state-output=profile;salt-run jobs.list_jobs、salt-run jobs.lookup_jid <JID>。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。