设计随笔
这里记录 Barn 的状态模型、客机收敛、镜像信任、宿主网络、CLI 契约与原生 Mac 生命周期,也收录 Pigsty/Vagrant 开发循环、Windows 宿主和未来客机架构的设计提案。每份提案分别说明实现进度与验证状态。
Apple Silicon 原生 macOS 虚拟化子系统(barn mac)从 Barn 0.9.0 引入,签名 App 从 0.9.2 起随 Apple Silicon 归档交付。请参阅原生 macOS 虚拟机、barn mac 命令参考与 Mac 发布手册。
Barn 1.2.0 发布准备与最终验收
Barn 1.2.0 的发布门禁、升级兼容性、打包与真机验收。
根盘原地扩容:恢复协议与真机验收
resize -D 的只增不减契约、停机与客机扩展流程、失败恢复,以及 ext4/XFS 真机验收。
VM 规格参数统一设计:命令、短参数、环境变量与根盘
统一镜像、架构、CPU、内存、缩放和根盘的 CLI、环境变量、清单优先级、命令范围与持久化契约。
Pigsty 宿主初始化:固定域名与 CA 信任
用一个显式的 macOS / Linux 初始化操作,配置固定 Pigsty 入口域名并信任实验环境的根 CA。
Main 与命令参考核对记录
2026-11-11 Barn 审查的 Git 状态、版本边界、命令覆盖与验证依据。
Pigsty 使用 Barn 时的宿主 DNS / 域名解析方案
以显式 hosts 同步为起点,明确 Pigsty 域名语义、来源替换保护,以及 macOS 与 Linux 的可选按域转发升级路径。
Pigsty 用 Barn 替换 Vagrant:资源、域名与迁移清单
梳理 Pigsty Vagrant 脚本的设计,定义 vm_scale 与本机域名发布,并记录 54 份配置的离线审计和迁移顺序。
超越 amd64 与 arm64
客机架构如何决定 Barn 使用的模拟器、机器类型、固件、设备与验收测试。
从 Windows 使用 Barn
为什么仍需 Linux 宿主、WSL2 需要验证什么,以及原生 Windows 后端涉及哪些工作。
Barn 可以向 Vagrant 学什么
面向 Pigsty 实验环境的可重复配置、环境记录、文件传输与恢复方案。
从上游镜像到签名目录
Barn 如何区分上游版本元数据、目录事实、运行时支持与正式发布验收。
保留契约,演进 CLI
拆分 Barn 命令树、应用编排与输出处理时,哪些行为必须保留。
一台原生 Mac 虚拟机的生命周期
Barn 为什么采用具名 Mac 虚拟机、随进程存续的网络、细分锁与明确的恢复证据。
repo.yaml 是意图,catalog.json 是证据
为什么 Barn 把人工维护的镜像策略与必须匹配实际 qcow2 工件的生成元数据分离。
PID 不是虚拟机身份
为什么 Barn 在发送信号或删除任何东西前,必须让 QMP 身份、进程证据、类型化启动参数与操作日志相互吻合。
声明式不等于破坏式
Barn 如何用逐节点哈希与显式操作保证配置缺席永远不能授权删除。
为什么每个 Barn 节点都有两张网卡
为什么 Barn 把管理出网与宿主、节点、Ansible 和 Pigsty 使用的固定地址网络分离。
为什么 Barn 没有项目
为什么 Barn 用一份 Pigsty 主机清单驱动一个用户范围内的部署,取代按目录组织的项目状态。
Barn 1.2.0 发布准备与最终验收
Barn 1.2.0 的发布门禁、升级兼容性、打包与真机验收。
根盘原地扩容:恢复协议与真机验收
resize -D 的只增不减契约、停机与客机扩展流程、失败恢复,以及 ext4/XFS 真机验收。
VM 规格参数统一设计:命令、短参数、环境变量与根盘
统一镜像、架构、CPU、内存、缩放和根盘的 CLI、环境变量、清单优先级、命令范围与持久化契约。
Pigsty 宿主初始化:固定域名与 CA 信任
用一个显式的 macOS / Linux 初始化操作,配置固定 Pigsty 入口域名并信任实验环境的根 CA。
Main 与命令参考核对记录
2026-11-11 Barn 审查的 Git 状态、版本边界、命令覆盖与验证依据。
Pigsty 使用 Barn 时的宿主 DNS / 域名解析方案
以显式 hosts 同步为起点,明确 Pigsty 域名语义、来源替换保护,以及 macOS 与 Linux 的可选按域转发升级路径。
Pigsty 用 Barn 替换 Vagrant:资源、域名与迁移清单
梳理 Pigsty Vagrant 脚本的设计,定义 vm_scale 与本机域名发布,并记录 54 份配置的离线审计和迁移顺序。
超越 amd64 与 arm64
客机架构如何决定 Barn 使用的模拟器、机器类型、固件、设备与验收测试。
从 Windows 使用 Barn
为什么仍需 Linux 宿主、WSL2 需要验证什么,以及原生 Windows 后端涉及哪些工作。
Barn 可以向 Vagrant 学什么
面向 Pigsty 实验环境的可重复配置、环境记录、文件传输与恢复方案。
从上游镜像到签名目录
Barn 如何区分上游版本元数据、目录事实、运行时支持与正式发布验收。
保留契约,演进 CLI
拆分 Barn 命令树、应用编排与输出处理时,哪些行为必须保留。
一台原生 Mac 虚拟机的生命周期
Barn 为什么采用具名 Mac 虚拟机、随进程存续的网络、细分锁与明确的恢复证据。
repo.yaml 是意图,catalog.json 是证据
为什么 Barn 把人工维护的镜像策略与必须匹配实际 qcow2 工件的生成元数据分离。
PID 不是虚拟机身份
为什么 Barn 在发送信号或删除任何东西前,必须让 QMP 身份、进程证据、类型化启动参数与操作日志相互吻合。
声明式不等于破坏式
Barn 如何用逐节点哈希与显式操作保证配置缺席永远不能授权删除。
为什么每个 Barn 节点都有两张网卡
为什么 Barn 把管理出网与宿主、节点、Ansible 和 Pigsty 使用的固定地址网络分离。
为什么 Barn 没有项目
为什么 Barn 用一份 Pigsty 主机清单驱动一个用户范围内的部署,取代按目录组织的项目状态。
-
Barn 1.2.0 发布准备与最终验收
状态,2026-11-12:Barn 1.2.0 已作为 stable/latest 发布。下方记录最终验收结果,候选版本章节保留早期审查及其原始范围。 最终发布 标签 v1.2.0 指向 90f615804b823b4eb491101e642073dcd37a9700。源码/Mac CI与完整打包 CI在打标签前通过同一提交。437 个已审查构建输入均与候选摘要清单一致;正式打包前再次通过签名镜像目录门禁。 GitHub 签名 secrets 仍未配置,本次采用文档中的本机签名流程。Apple …
状态,2026-11-12:Barn 1.2.0 已作为 stable/latest 发布。下方记录最终验收结果,候选版本章节保留早期审查及其原始范围。 最终发布 标签 v1.2.0 指向 90f615804b823b4eb491101e642073dcd37a9700。源码/Mac CI与完整打包 CI在打标签前通过同一提交。437 个已审查构建输入均与候选摘要清单一致;正式打包前再次通过签名镜像目录门禁。 GitHub 签名 secrets 仍未配置,本次采用文档中的本机签名流程。Apple …
-
根盘原地扩容:恢复协议与真机验收
状态(2026-11-11):未发布开发版本已实现 barn resize -D,并在 macOS/arm64 的 QEMU/HVF 客机上完成 ext4 与 XFS 验收。已发布 1.1.0 的 resize 仍只修改 CPU/内存。参数优先级见 VM 规格设计,命令契约见 根盘扩容。 使用范围 barn resize -D 128GiB meta BARN_DISK=128GiB barn resize meta 目标是根盘的绝对容量,支持扩容,不支持缩盘。已完成的同目标操作不修改镜像,也不 …
状态(2026-11-11):未发布开发版本已实现 barn resize -D,并在 macOS/arm64 的 QEMU/HVF 客机上完成 ext4 与 XFS 验收。已发布 1.1.0 的 resize 仍只修改 CPU/内存。参数优先级见 VM 规格设计,命令契约见 根盘扩容。 使用范围 barn resize -D 128GiB meta BARN_DISK=128GiB barn resize meta 目标是根盘的绝对容量,支持扩容,不支持缩盘。已完成的同目标操作不修改镜像,也不 …
-
VM 规格参数统一设计:命令、短参数、环境变量与根盘
镜像、架构、CPU、内存、倍数和根盘组成同一组 VM 规格输入,统一名称、取值规则与来源追踪。命令声明自己接收哪些规格,以及允许应用哪些变更;解析过程只实现一份。 状态(2026-11-11):本方案已确认,六项 CLI/环境输入、命令接入、清单生成、来源追踪、SPEC 显示和根盘原地扩容均已实现,尚未发布。工作区清单默认 1 核 / 2 GiB,已发布 Barn 1.1.0 仍默认 2 核 / 4 GiB。 六个参数,一套命名 含义 清单字段 长参数 短参数 环境变量 候选版默认值 镜像 …
镜像、架构、CPU、内存、倍数和根盘组成同一组 VM 规格输入,统一名称、取值规则与来源追踪。命令声明自己接收哪些规格,以及允许应用哪些变更;解析过程只实现一份。 状态(2026-11-11):本方案已确认,六项 CLI/环境输入、命令接入、清单生成、来源追踪、SPEC 显示和根盘原地扩容均已实现,尚未发布。工作区清单默认 1 核 / 2 GiB,已发布 Barn 1.1.0 仍默认 2 核 / 4 GiB。 六个参数,一套命名 含义 清单字段 长参数 短参数 环境变量 候选版默认值 镜像 …
-
Pigsty 宿主初始化:固定域名与 CA 信任
建议提供一个可选的宿主初始化操作:安装固定 Pigsty 域名,并信任实验环境的公共根 CA 证书。 入口地址只有一个,默认 10.10.10.10;普通实验环境重建继续使用同一 CA。名称、地址和 CA 信任状态不变时,重复 setup 直接返回,无需提权。常见情况下,宿主集成只需初始化一次。 状态——2026-11-11:设计提案,尚未实现。 相比此前的 完整宿主 DNS 方案,本方案收敛了首期交付范围。通用清单提取、动态节点/PG/VIP 名称发布、按域转发和常驻 DNS 服务保留为后续选 …
建议提供一个可选的宿主初始化操作:安装固定 Pigsty 域名,并信任实验环境的公共根 CA 证书。 入口地址只有一个,默认 10.10.10.10;普通实验环境重建继续使用同一 CA。名称、地址和 CA 信任状态不变时,重复 setup 直接返回,无需提权。常见情况下,宿主集成只需初始化一次。 状态——2026-11-11:设计提案,尚未实现。 相比此前的 完整宿主 DNS 方案,本方案收敛了首期交付范围。通用清单提取、动态节点/PG/VIP 名称发布、按域转发和常驻 DNS 服务保留为后续选 …
-
Main 与命令参考核对记录
核对日期:2026-11-11。 两个仓库都在 main,但工作区均不干净,也未与拉取后的远端分支一致。源码检查在本次工作区上通过;文档已补齐完整命令参考,逐项区分稳定版、本地 main 和未提交功能。 Git 与发布状态 仓库 本地 main 拉取后的 origin/main 审查开始时的状态 pgsty/barn 6ab0cd5 b2cc8da(v1.1.0) 领先 3 个提交;11 个已跟踪路径有变更,另有未跟踪的 …
核对日期:2026-11-11。 两个仓库都在 main,但工作区均不干净,也未与拉取后的远端分支一致。源码检查在本次工作区上通过;文档已补齐完整命令参考,逐项区分稳定版、本地 main 和未提交功能。 Git 与发布状态 仓库 本地 main 拉取后的 origin/main 审查开始时的状态 pgsty/barn 6ab0cd5 b2cc8da(v1.1.0) 领先 3 个提交;11 个已跟踪路径有变更,另有未跟踪的 …
-
Pigsty 使用 Barn 时的宿主 DNS / 域名解析方案
说明 2026-11-11 范围收敛:首期交付改为 固定核心域名与 Pigsty CA 信任。本页保留更广的导出器和解析器研究;通用清单与 split DNS 属于可选扩展,不作为固定配置的实现前提。 当前推荐先做显式启用的 hosts 管理。 Pigsty 计算名称和服务目标,Barn 通过现有 helper 预览并安装一份中性的地址/名称快照。对于地址固定的 Linux 实验环境,这项功能值得做:宿主可以直接打开 portal,通过节点名连接机器,通过集群名或 VIP 名访问数据库。静态地 …
说明 2026-11-11 范围收敛:首期交付改为 固定核心域名与 Pigsty CA 信任。本页保留更广的导出器和解析器研究;通用清单与 split DNS 属于可选扩展,不作为固定配置的实现前提。 当前推荐先做显式启用的 hosts 管理。 Pigsty 计算名称和服务目标,Barn 通过现有 helper 预览并安装一份中性的地址/名称快照。对于地址固定的 Linux 实验环境,这项功能值得做:宿主可以直接打开 portal,通过节点名连接机器,通过集群名或 VIP 名访问数据库。静态地 …
-
Pigsty 用 Barn 替换 Vagrant:资源、域名与迁移清单
Pigsty 可以用同一份主机清单驱动 Barn 与 Ansible。迁移时需要保留拓扑选择、镜像矩阵、资源缩放、固定地址和 SSH 工作流,并清理旧脚本隐含的地址、节点名及销毁行为。 状态(2026-11-10):vm_scale、1 核 / 2 GiB 默认规格、vm_hosts、barn hosts install -f 及 Pigsty 的 bin/sandbox-dns 已在本地工作区实现并完成下述离线验证,尚未发布。Pigsty 的 Makefile 仍使用 Vagrant;本文后半 …
Pigsty 可以用同一份主机清单驱动 Barn 与 Ansible。迁移时需要保留拓扑选择、镜像矩阵、资源缩放、固定地址和 SSH 工作流,并清理旧脚本隐含的地址、节点名及销毁行为。 状态(2026-11-10):vm_scale、1 核 / 2 GiB 默认规格、vm_hosts、barn hosts install -f 及 Pigsty 的 bin/sandbox-dns 已在本地工作区实现并完成下述离线验证,尚未发布。Pigsty 的 Makefile 仍使用 Vagrant;本文后半 …
-
超越 amd64 与 arm64
Barn 当前支持 amd64 与 arm64 Linux 客机。QEMU 可以模拟更多架构,但每个新增 Barn 目标都需要镜像和完整的启动、操作契约。本设计评估复核于 2026-11-08,区分已有运行时策略与未来候选架构。 硬件加速跟随宿主指令集 对于 Barn 当前的 64 位客机,原生虚拟化使用宿主指令集:macOS 使用 HVF,Linux 使用 KVM;跨架构客机由 QEMU TCG 翻译指令。Rosetta 可以在 Arm Linux VM 内翻译 Intel Linux 应用, …
Barn 当前支持 amd64 与 arm64 Linux 客机。QEMU 可以模拟更多架构,但每个新增 Barn 目标都需要镜像和完整的启动、操作契约。本设计评估复核于 2026-11-08,区分已有运行时策略与未来候选架构。 硬件加速跟随宿主指令集 对于 Barn 当前的 64 位客机,原生虚拟化使用宿主指令集:macOS 使用 HVF,Linux 使用 KVM;跨架构客机由 QEMU TCG 翻译指令。Rosetta 可以在 Arm Linux VM 内翻译 Intel Linux 应用, …
-
从 Windows 使用 Barn
Barn 当前的宿主配置与发布二进制覆盖 macOS、Linux 上的 amd64 和 arm64,没有原生 Windows 发行版。Windows 用户可以通过 Linux 宿主操作 Barn;WSL2 和嵌套 Linux VM 是把这层宿主放到 Windows 本机上的候选方式。 本评估复核于 2026-11-08。下述 WSL2 与 Hyper-V 路径仍需完成 Barn 全生命周期实测,才能成为受支持的安装指南。当前平台契约见平台与限制和 internal/platform。 选择 …
Barn 当前的宿主配置与发布二进制覆盖 macOS、Linux 上的 amd64 和 arm64,没有原生 Windows 发行版。Windows 用户可以通过 Linux 宿主操作 Barn;WSL2 和嵌套 Linux VM 是把这层宿主放到 Windows 本机上的候选方式。 本评估复核于 2026-11-08。下述 WSL2 与 Hyper-V 路径仍需完成 Barn 全生命周期实测,才能成为受支持的安装指南。当前平台契约见平台与限制和 internal/platform。 选择 …
-
Barn 可以向 Vagrant 学什么
Barn 已经能从兼容 Pigsty 的主机清单创建多节点 Linux 实验环境,管理生命周期,并提供 SSH 与结构化输出。Vagrant 值得借鉴的是从“建好虚拟机”到“重复一次实验”之间的工作:执行配置步骤、搬运源码与构建产物、记录环境,以及回到已知状态。 本文是基于 2026-11-08 Barn 源码核查形成的设计提案。以下优先级是待实现候选,没有指定发布版本或交付日期。当前可用命令见 CLI 参考。 已有能力与实际缺口 工作流 Barn 当前能力 可改进的方向 定义实验环境 静态清单 …
Barn 已经能从兼容 Pigsty 的主机清单创建多节点 Linux 实验环境,管理生命周期,并提供 SSH 与结构化输出。Vagrant 值得借鉴的是从“建好虚拟机”到“重复一次实验”之间的工作:执行配置步骤、搬运源码与构建产物、记录环境,以及回到已知状态。 本文是基于 2026-11-08 Barn 源码核查形成的设计提案。以下优先级是待实现候选,没有指定发布版本或交付日期。当前可用命令见 CLI 参考。 已有能力与实际缺口 工作流 Barn 当前能力 可改进的方向 定义实验环境 静态清单 …
-
从上游镜像到签名目录
镜像核查回答的问题比镜像发布更窄:它可以找到上游更新文件,但 Barn 只有在制品、运行时配置和启动路径都通过验证后,才能把文件加入签名目录。镜像参考说明用户可见的目录契约;本文记录如何让目录更新可复现。 “更新”有四种含义 如果把四种独立的版本值混为一谈,镜像更新就容易出错: 数值 描述的对象 所需证据 能否单独更新目录 操作系统版本 发行版的版本或点版本,例如 Ubuntu 24.04 LTS 发布元数据与软件包或构建记录 不能 云镜像构建号 某次带日期的上游磁盘构建,例如 YYYYMMDD …
镜像核查回答的问题比镜像发布更窄:它可以找到上游更新文件,但 Barn 只有在制品、运行时配置和启动路径都通过验证后,才能把文件加入签名目录。镜像参考说明用户可见的目录契约;本文记录如何让目录更新可复现。 “更新”有四种含义 如果把四种独立的版本值混为一谈,镜像更新就容易出错: 数值 描述的对象 所需证据 能否单独更新目录 操作系统版本 发行版的版本或点版本,例如 Ubuntu 24.04 LTS 发布元数据与软件包或构建记录 不能 云镜像构建号 某次带日期的上游磁盘构建,例如 YYYYMMDD …
-
保留契约,演进 CLI
Barn 已经使用 Cobra。2026-11-04 CLI 提案最值得保留的部分,是对命令语法、应用编排与外部行为的拆分。本文结合 2026-11-09 发布的 v1.1.0 源码整理这些设计;包结构拆分与较大范围的命令重组仍是提案,当前用法见 CLI 参考。 保留已有边界 cmd/barn/command_*.go 定义各命令族。每次执行都会新建 Cobra 命令树,避免参数值在多次调用间泄漏。处理函数收集 commandOutcome,由统一出口渲染文本或结构化结果;类型化错误保留退出码、 …
Barn 已经使用 Cobra。2026-11-04 CLI 提案最值得保留的部分,是对命令语法、应用编排与外部行为的拆分。本文结合 2026-11-09 发布的 v1.1.0 源码整理这些设计;包结构拆分与较大范围的命令重组仍是提案,当前用法见 CLI 参考。 保留已有边界 cmd/barn/command_*.go 定义各命令族。每次执行都会新建 Cobra 命令树,避免参数值在多次调用间泄漏。处理函数收集 commandOutcome,由统一出口渲染文本或结构化结果;类型化错误保留退出码、 …
-
一台原生 Mac 虚拟机的生命周期
barn mac 通过 Apple Virtualization.framework 管理具名 macOS 虚拟机,独立于 Linux 主机清单。这项功能从 0.9.0 引入,使用 macOS 宿主上的原生应用包 Barn.app,从 0.9.2 起随 Apple Silicon 发行归档交付。本文提炼具名机器实现记录及早期 Mac 复核结论,于 2026-11-08 对照当前实现核验;带日期的证据汇总在验证历史,命令与默认值见 Mac 参考。 网络归机器所有 早期设计使用两个固定槽位与特权网络 …
barn mac 通过 Apple Virtualization.framework 管理具名 macOS 虚拟机,独立于 Linux 主机清单。这项功能从 0.9.0 引入,使用 macOS 宿主上的原生应用包 Barn.app,从 0.9.2 起随 Apple Silicon 发行归档交付。本文提炼具名机器实现记录及早期 Mac 复核结论,于 2026-11-08 对照当前实现核验;带日期的证据汇总在验证历史,命令与默认值见 Mac 参考。 网络归机器所有 早期设计使用两个固定槽位与特权网络 …
-
repo.yaml 是意图,catalog.json 是证据
本文阐述 Barn 1.1.0 的 Linux 静态镜像仓库契约(Mac 虚拟机的 .ipsw 恢复镜像与 APFS 基础镜像由 barn mac 独立管理)。 一个静态虚拟机镜像仓库包含两类截然不同的元数据:一类是维护者的 策略意图(哪个版本对应 :stable、哪些旧版本标为 deprecated、每个发行版系列支持哪些短别名),另一类是镜像文件的 物理事实(精确字节数、SHA-256 摘要、qcow2 虚拟容量)。如果把这两类信息混在同一份手写 JSON 文件里,不仅手动复制哈希和字节数极 …
本文阐述 Barn 1.1.0 的 Linux 静态镜像仓库契约(Mac 虚拟机的 .ipsw 恢复镜像与 APFS 基础镜像由 barn mac 独立管理)。 一个静态虚拟机镜像仓库包含两类截然不同的元数据:一类是维护者的 策略意图(哪个版本对应 :stable、哪些旧版本标为 deprecated、每个发行版系列支持哪些短别名),另一类是镜像文件的 物理事实(精确字节数、SHA-256 摘要、qcow2 虚拟容量)。如果把这两类信息混在同一份手写 JSON 文件里,不仅手动复制哈希和字节数极 …
-
PID 不是虚拟机身份
本文阐述 Barn 1.1.0 的 Linux 运行时进程身份与崩溃恢复机制。原生 Mac 生命周期独立使用逐实例操作锁与 runner 协议 2。 pidfile 只能记录写入瞬间的进程号(PID)。几分钟甚至几天之后——尤其在经历过进程崩溃或宿主重启后——单凭这一个整数,既无法确认原先的 QEMU 进程是否还活着,也无法排除操作系统内核已经把同一个 PID 分配给了另一个毫不相干的进程,更无法证明它归属哪一个虚拟机节点。 如果仅凭 pidfile 就直接发送 SIGKILL 或删除磁盘,一旦 …
本文阐述 Barn 1.1.0 的 Linux 运行时进程身份与崩溃恢复机制。原生 Mac 生命周期独立使用逐实例操作锁与 runner 协议 2。 pidfile 只能记录写入瞬间的进程号(PID)。几分钟甚至几天之后——尤其在经历过进程崩溃或宿主重启后——单凭这一个整数,既无法确认原先的 QEMU 进程是否还活着,也无法排除操作系统内核已经把同一个 PID 分配给了另一个毫不相干的进程,更无法证明它归属哪一个虚拟机节点。 如果仅凭 pidfile 就直接发送 SIGKILL 或删除磁盘,一旦 …
-
声明式不等于破坏式
本文阐述 Barn 1.1.0 的 Linux 虚拟机收敛模型(Mac 虚拟机独立管理)。 声明式工具通过对比实际状态与配置文件来驱动变更——但在日常开发中,配置文件可能为了调试被临时删减、切换到另一个 Git 分支,或在解决合并冲突时漏掉某个 YAML 主机组。如果本地虚拟机管理工具把“配置中少写了某个节点”直接当成“允许销毁该虚拟机”,一次普通的编辑失误就可能把正在测试的数据库节点连根抹掉。 因此,Barn 在“创建”与“销毁”之间划定了严格的不对称原则: 期望状态可以授权创建节点,也可以描 …
本文阐述 Barn 1.1.0 的 Linux 虚拟机收敛模型(Mac 虚拟机独立管理)。 声明式工具通过对比实际状态与配置文件来驱动变更——但在日常开发中,配置文件可能为了调试被临时删减、切换到另一个 Git 分支,或在解决合并冲突时漏掉某个 YAML 主机组。如果本地虚拟机管理工具把“配置中少写了某个节点”直接当成“允许销毁该虚拟机”,一次普通的编辑失误就可能把正在测试的数据库节点连根抹掉。 因此,Barn 在“创建”与“销毁”之间划定了严格的不对称原则: 期望状态可以授权创建节点,也可以描 …
-
为什么每个 Barn 节点都有两张网卡
本文阐述 Barn 1.1.0 的 Linux 实验环境网络设计(Mac 虚拟机使用每台虚拟机独立的 vmnet NAT 子网)。 Pigsty 主机清单依靠固定 IPv4 地址标识每个数据库节点:PostgreSQL 流复制、Patroni/etcd 共识、HAProxy 后端、keepalived 二层 VIP、Prometheus 采集目标与 Ansible 剧本,都要求 10.10.10.11 始终指向同一个节点。宿主回环端口转发虽然能把 SSH 或 5432 端口暴露给宿主机,却无法让 …
本文阐述 Barn 1.1.0 的 Linux 实验环境网络设计(Mac 虚拟机使用每台虚拟机独立的 vmnet NAT 子网)。 Pigsty 主机清单依靠固定 IPv4 地址标识每个数据库节点:PostgreSQL 流复制、Patroni/etcd 共识、HAProxy 后端、keepalived 二层 VIP、Prometheus 采集目标与 Ansible 剧本,都要求 10.10.10.11 始终指向同一个节点。宿主回环端口转发虽然能把 SSH 或 5432 端口暴露给宿主机,却无法让 …
-
为什么 Barn 没有项目
本文阐述 Barn 1.1.0 的 Linux 实验环境部署模型(Mac 虚拟机作为独立的具名虚拟机管理)。 Barn 的早期原型曾将每个工作目录视为一个独立“项目”:用隐藏目录标记项目身份,用全局注册表记录项目路径,再用宿主级租约表协调私有网段冲突。这套机制虽然能管理多组互不相关的虚拟机,但与 Barn 的核心场景格格不入——在本地拉起一套具有固定 IP 的 Pigsty 数据库实验集群。 由于 Pigsty 主机清单本身已经完整定义了所有节点的 IP 与角色,在它之上再叠一层“按目录划分的虚 …
本文阐述 Barn 1.1.0 的 Linux 实验环境部署模型(Mac 虚拟机作为独立的具名虚拟机管理)。 Barn 的早期原型曾将每个工作目录视为一个独立“项目”:用隐藏目录标记项目身份,用全局注册表记录项目路径,再用宿主级租约表协调私有网段冲突。这套机制虽然能管理多组互不相关的虚拟机,但与 Barn 的核心场景格格不入——在本地拉起一套具有固定 IP 的 Pigsty 数据库实验集群。 由于 Pigsty 主机清单本身已经完整定义了所有节点的 IP 与角色,在它之上再叠一层“按目录划分的虚 …