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

如何使用Salt批量将Linux Mint 21.1升级至21.3版本?

如何使用Salt批量将Linux Mint 21.1升级至21.3版本?

Note: 我最初在StackOverflow上发布了这个问题,但因被判定为偏离主题而被删除。我在这里再次尝试。需要说明的是,当时有一个给出的答案,我已经将其复制粘贴在问题之后。我附上这个答案是因为我想在测试后报告其结果。如果这样做不合适,请告诉我,我会删除它。

我的问题

我使用Salt管理30台笔记本电脑已经有一年了,它运行得很好,一旦所有设置都正确完成,就不需要任何重大维护。这些笔记本电脑运行Linux Mint 21.1,我想把它们升级到21.3。有一些手动升级的方法,需要登录到每台笔记本电脑并执行一系列命令。但是,为30台笔记本电脑这样做将是一项重大任务。我想知道是否有办法使用Salt在每台笔记本电脑上升级操作系统(即从21.1到21.3)?如果有人能给我指明方向,我将不胜感激。

我还没有尝试任何方法,因为我不知道从哪里开始...


可行的解决方案

作为经常用Salt批量管理Linux机器的人,我给你分享两种靠谱的实现方式,亲测有效:

方式一:编写Salt状态文件(推荐,可重复使用)

把升级流程封装成Salt状态文件,这样不仅能批量执行,还能随时复用,步骤如下:

  1. 修改软件源配置
    Linux Mint 21.1的代号是vera,21.3是virginia,我们需要把源文件里的版本代号替换掉:
# mint_upgrade.sls
update_mint_sources:
  file.replace:
    - name: /etc/apt/sources.list.d/official-package-repositories.list
    - pattern: 'vera'
    - repl: 'virginia'
    - backup: minion  # 自动备份原文件,方便回滚
  1. 全量更新系统包
    执行apt dist-upgrade来完成系统的发行版升级,加上非交互式参数避免卡在确认环节:
full_system_upgrade:
  pkg.uptodate:
    - refresh: True  # 先更新包索引
    - dist_upgrade: True
    - options:
      - '-y'
      - '--allow-downgrades'
      - '--allow-remove-essential'
      - '--allow-change-held-packages'
  1. 收尾版本切换(可选)
    如果系统安装了mintupgrade工具,可以用它完成最终的版本配置:
finish_mint_upgrade:
  cmd.run:
    - name: mintupgrade upgrade -y
    - onlyif: test -x /usr/bin/mintupgrade  # 只在有该工具的机器上执行

保存好这个mint_upgrade.sls后,在Salt master上执行下面的命令就能批量升级所有机器:

salt '*' state.apply mint_upgrade

方式二:直接通过Salt远程执行命令(快速临时方案)

如果不想写状态文件,也可以分步骤用cmd.run直接执行命令:

  1. 替换源文件中的版本代号:
salt '*' cmd.run "sed -i 's/vera/virginia/g' /etc/apt/sources.list.d/official-package-repositories.list"
  1. 更新包索引:
salt '*' cmd.run "apt update -y"
  1. 执行发行版升级:
salt '*' cmd.run "apt dist-upgrade -y --allow-downgrades --allow-remove-essential --allow-change-held-packages"
  1. (可选)运行mintupgrade工具收尾:
salt '*' cmd.run "mintupgrade upgrade -y"

关键注意事项

  • 先测试再批量:一定要先在一台测试笔记本上执行升级流程,确认没有问题后再推送到所有机器;
  • 备份重要数据:升级前建议给每台机器做系统快照或者备份关键数据,防止意外;
  • 自定义源同步修改:如果你的机器有第三方软件源,也要记得把里面的vera替换成virginia;
  • 升级后重启:升级完成后可以用salt '*' system.reboot批量重启所有机器,让新系统生效。

备注:内容来源于stack exchange,提问作者dnessett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:24:37