不断升级某些 Debian 发行版中的所有内容(包括发行版)?

Arc*_*ing -1 debian stability upgrade vps

如何以安全的方式持续升级发行版中的所有内容(包括某些 Debian 发行版)?

为什么我问这个问题

我问这个问题是因为当我的Nginx环境安装脚本越来越大,并且需要越来越多的时间来维护时,我觉得我做错了什么。

维护脚本是我可以并且喜欢处理的事情,因为学习、练习和公共共享,即使我必须尽快作为一名员工出去工作,而且维护这些的时间会更少。鉴于这些情况,我总是有这样的恐惧:

-- 如果我当前的发行版 LTS 不再受支持怎么办。

-- 即使它是 Debian 稳定版而不是其他东西,我也可能因为几个月前的旧发行版而出现安全漏洞,但仅此而已。

-- 如果unattended-upgrades由于发行版变旧等原因,配置良好的配置不足以让我保持安全,该怎么办。

至于现在,我在 DigitalOcean 中为一个 Droplet 支付了 5 美元,但我真的不知道拥有具有以下特征的 LEMP 堆栈的最佳解决方案是什么:

  • 可自由访问的 Bash。
  • 无人值守升级。
  • CSF-LFD 和 Maldet。
  • Certbot 处理的 webapp confs。
  • 我在 cron 中创建的即时和自动 cron 备份(在我的脚本中可用)。
  • 自动发行版升级(比如从 Ubuntu 16.04 到 18.04 以及当时从 18.04 到 20.04 等等),即使使用rsync.
  • WordPress 网站
  • 命令行工具
  • VPS 的总价不超过 10 美元。

我不确定 Ansible 或 Salt 是答案(Ansible 对我来说似乎不是很容易学习,即使它在市场上销售和传闻很容易学习,我恐怕没有时间研究它在接下来的 3 个月内深入)。

我不确定 Azure 是答案(仅因为价格,我了解像我希望的环境在 Azure 中至少要花费 15 美元)。

也许我需要一个在每个基本方面都有持续交付的发行版(假设有一个)。

故事基本上就是这样。

Oli*_*Oli 5

好的 CI(持续集成)至少依赖于三件事:

  1. 脚本化部署
  2. 带外测试环境
  3. 自动化测试以覆盖整个表面。

您目前只有#1。另一个 VPS 可以作为 #2,但您没有任何(明显的)测试。


但在我们进一步讨论之前,请快速说明一下支持基于节奏的版本。

Ubuntu LTS 版本在发布后的五年内获得更新。不是每个包,而是 LEMP 所需的一切。这些更新从未来版本向后移植安全修复程序,因此您可以使用现代修复程序获得旧的主要版本(如果可能)。这意味着事情继续有效。

滚动发布随时更新所有内容。您不知道什么时候会发生配置破坏性更改(例如 systemd),或者需要多少工作来修复。如果您正在自动安装更新,这也意味着没有可预测的时间需求间隔。

使用 Ubuntu LTS,您知道每 4-5 年一次,您需要在服务器上花费一两个小时来指导它进行升级。在下一个 LTS 发布后的 3 年内,您可以选择何时执行此操作。这是一个主要功能,而不是缺陷。


对于你的作战计划,我会——也许有争议——完全禁用自动更新并用一个相对简单的脚本替换它们:

  • 启动第二个 VPS(使用供应商的 API,因此您只需在操作时付费)。基于相同操作系统版本的模板(例如 Ubuntu 16.04,如果您的主 VPS 在该版本上)。
  • 更新到最新版本的软件,部署您的东西并恢复数据库
  • 运行您的测试套件并报告所有服务的正面或负面
  • 失败apt dist-upgrade时向您发送电子邮件,成功时在主 VPS 上运行。

如果您没有收到更新,那么获得响亮的反馈是关键。是的,您也需要对此进行测试。

您可以转向 Ansible(等),但这不是您的主要问题。编写测试是。

这是很多工作,但这些东西也能让你很好地扩展和扩展。如果您已经拥有一个负载平衡集群,您可以在将其重新引入集群之前将其分离、更新和测试。