You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Git仓库与GitLab Runner实现SaltStack状态管理及持续部署咨询

无Salt Master的GitLab CI + SaltStack部署方案指引

一、仓库结构设计

  • 根目录创建states/文件夹,存放所有Salt状态文件(如nginx.sls、app-deploy.sls等)
  • 可选创建pillar/文件夹,存储自定义pillar配置数据(用于动态参数传递)
  • CI流水线中可动态生成top.sls(无需提前写入固定Minion列表)

二、Minion端预配置

  • 安装Python 3(salt-ssh运行依赖)
  • 安装salt-minion包(无需启动服务,仅用于本地执行状态,比无客户端模式更稳定)
  • 将GitLab Runner的SSH公钥添加到Minion的~/.ssh/authorized_keys
  • 确保Minion的SSH服务允许密钥登录,防火墙开放22端口

三、GitLab Runner配置

  1. 选择执行器:推荐用shell或docker(docker可直接使用含salt-ssh的镜像)
  2. 在项目Settings > CI/CD > Variables中添加以下变量:
    • SSH_PRIVATE_KEY:Runner连接Minion的私钥,设置为「Protected」和「Masked」
    • TARGET_MINIONS:目标Minion的主机名/IP列表,用逗号分隔(如minion01,192.168.1.10)
  3. 若用shell执行器,在Runner主机安装依赖:
    # Debian/Ubuntu
    apt install salt-ssh salt-lint
    # 或用pip安装
    pip install salt-ssh salt-lint
    

四、CI流水线配置(.gitlab-ci.yml)

stages:
  - lint
  - deploy

# 语法检查阶段:提前发现状态文件错误
salt-lint:
  stage: lint
  image: python:3.10-slim
  before_script:
    - pip install salt-lint
  script:
    - salt-lint states/

# 部署阶段:仅master分支提交后触发
deploy-states:
  stage: deploy
  only:
    - master
  before_script:
    # 安装依赖+配置SSH
    - apt update && apt install -y salt-ssh openssh-client
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh && chmod 700 ~/.ssh
    - ssh-keyscan -H $TARGET_MINIONS >> ~/.ssh/known_hosts && chmod 644 ~/.ssh/known_hosts
    # 动态生成top.sls:指定所有目标Minion应用states下的状态
    - echo "base:" > top.sls
    - for minion in $(echo $TARGET_MINIONS | tr ',' ' '); do
        echo "  $minion:" >> top.sls;
        echo "    - states" >> top.sls;
      done
  script:
    # 通过salt-ssh直接推送并应用状态
    - salt-ssh $TARGET_MINIONS state.apply --file-root=. --pillar-root=pillar/

五、测试与验证

  1. 提交测试状态文件到master分支,观察GitLab CI流水线运行状态
  2. 登录目标Minion,检查状态是否正确应用(如查看服务状态、文件是否生成)
  3. 若出现SSH连接失败:检查私钥格式、Minion的authorized_keys权限、防火墙规则

内容的提问来源于stack exchange,提问作者Mehran Mahmoudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:58:37