OFFSET偏移
← 文章目录OFFSET / FIELD NOTESNO. 085

Colmena:多节点构建、传输与激活

用 hive 组织节点配置,明确本地构建与远程应用的边界。

所在专题NixOS 节点部署与 ARM 设备 ↗
约 4 分钟阅读开始阅读

️ 为什么需要远程部署?#

当你有多个 NixOS 节点(比如主力机、服务器、树莓派)时,如果你在每个节点上都跑一遍 nixos-rebuild switch,非常麻烦且容易版本不同步。 Colmena 允许你从主力机统一推送配置到所有节点。

️ 第一阶段:配置 Colmena#

下面是传统 hive.nix 示例,使用本机选定的 Nixpkgs;正式项目应固定 Nixpkgs 修订。使用 Flake 时,应按所用 Colmena 版本导出 colmena / colmenaHive,不要把未绑定的 inputs 直接放进独立文件。

{
  meta = {
    nixpkgs = import <nixpkgs> {
      system = "x86_64-linux";
    };
  };

  server = { name, nodes, ... }: {
    deployment.targetHost = "server.example.com";
    deployment.targetUser = "root";

    imports = [ ./hosts/server/configuration.nix ];
    # 由节点硬件配置决定引导器和磁盘,不套用 /dev/sda
  };
}

第二阶段:部署命令#

  1. 检查配置:colmena build
  2. 预览差异:colmena apply dry-activate --on server
  3. 正式推送并激活:colmena apply switch --on server(省略节点筛选可能部署多个节点)

远程部署的好处#

  1. 本地构建,远程安装:构建完成后可以复制系统闭包;x86_64 构建 ARM 系统需要正确的交叉编译、仿真或远程构建器,不能只靠把二进制复制过去。也可使用 deployment.buildOnTarget 在目标节点构建。
  2. 并行部署:可以同时给 10 台服务器升级,版本完全一致。
  3. 容错性:NixOS 旧世代提供恢复路径,但 Colmena 不保证自动恢复网络或自动回滚每次失败;部署前准备 SSH 连通性检查、控制台通道与人工恢复步骤。

给 Arch 用户的建议#

如果你之前习惯了用 Ansible 管理多台 Arch 机器,可以把 Colmena 理解为在 NixOS 声明式系统配置之上组织构建、复制与激活的工具;对可变应用状态仍需单独管理。

总结#

  • Hive:配置的集合。
  • Apply:部署并激活。
  • Build:只编译不安装。

构建、预览和激活的边界

build 通常仅构建;启用 buildOnTarget 时结果会存在目标机上。dry-activate 可能先构建、传输闭包并运行目标的预览脚本,并非纯本地只读检查。test 即时激活但不设为启动默认,boot 修改启动默认但不即时激活,switch 两者都做。示例主机域名是占位;只有确认目标、授权账户与硬件配置后才执行部署。

参考与延伸

  1. Colmena 引言 ↗
  2. Colmena 部署选项 ↗
  3. Colmena 部署目标源码 ↗

根据技术笔记重新整理,示例使用通用名称。

沿专题继续阅读

NixOS 节点部署与 ARM 设备

  1. 01Colmena:多节点构建、传输与激活
  2. 02树莓派上的 NixOS:镜像、硬件与服务
CONTINUE READING / 下一篇树莓派上的 NixOS:镜像、硬件与服务

从 SD 镜像和首次启动延伸到板卡接口、常用服务以及小内存设备维护。