跳转到主要内容

Barn 1.2.0 · 稳定版 · Apache-2.0

多节点 Linux 实验环境 与原生 macOS 虚拟机

用一份 Ansible 清单定义固定 IP 节点,在 macOS 或 Linux 上拉起;也能在 Apple Silicon 上运行相互隔离的 macOS 27 虚拟机。

Bootstrap And Run Nodes · QEMU(HVF / KVM)· Apple Virtualization

了解 1.2.0 的新变化

快速上手

一条命令,四台虚拟机

在 Mac 上装好 Barn,选择 Pigsty 的 full 模板,再运行 barn up。 同一份 pigsty.yml 就能拉起四节点 Linux 实验环境。

节点
4 台虚拟机 · 10.10.10.10–13
镜像
Ubuntu 24.04 · u24:stable
单机
1 个 vCPU · 2 GiB 内存
磁盘
64 GiB 根盘 · 128 GiB /data
Barn 1.1.0 · macOS → Pigsty full

录像录于 11 月 9 日,使用 Barn 1.1.0。1.2.0 的操作命令相同,默认规格改为 1 vCPU / 2 GiB,状态表改用 SPEC / ROOT 列。

macOS · Homebrew
# 安装 CLI、Barn.app 与 QEMU
brew install pgsty/infra/barn
cd pigsty  # 已有的 Pigsty 源码目录
./configure -c full
barn up
barn status
Linux · 单节点快速上手
# 安装到 ~/.local/bin,无需 sudo
curl -fLO https://github.com/pgsty/barn/releases/latest/download/install.sh
bash install.sh && export PATH="$HOME/.local/bin:$PATH"
barn up
barn ssh

核心能力

两套工作流,一个 CLI。

声明式 Linux 实验环境与原生 macOS 虚拟机,装一次即可使用。

Linux 实验环境

声明式 Linux 实验环境

◇ 一份 YAML 清单,拉起固定 IP 节点

  • 在 barn.yml 中声明节点、CPU、内存与磁盘
  • 固定私网 IP 与 SSH 密钥;用 barn hosts install 发布宿主名称
  • 重跑 barn up 即可收敛,删除始终显式执行

同一份文件可以直接交给 Pigsty 或 ansible-playbook -i。

barn.yml · barn up
# 最简四节点清单
all:
  vars: { admin_ip: 10.10.10.10 }
  children:
    nodes:
      hosts:
        10.10.10.10: { nodename: meta }
        10.10.10.11: { nodename: node-1 }
        10.10.10.12: { nodename: node-2 }
        10.10.10.13: { nodename: node-3 }
$ barn up
$ barn ssh meta

macOS 客机

原生 macOS 虚拟机

◇ 基于 Apple Virtualization 的隔离 Apple Silicon 客机

  • Homebrew 与 arm64 发行包已内置签名的 Barn.app
  • 从 Apple 安装一份 macOS 27 母盘,新机器秒级克隆
  • 桌面窗口、ssh、共享目录与剪贴板

每台机器都有独立的磁盘、密钥与私有子网。

barn mac · Apple Virtualization
$ barn mac up dev --cpu 8 --memory 16G --share ~/src
$ barn mac open dev
$ barn mac ssh dev -- sw_vers -productVersion
27.0

客机镜像

经过校验的客机镜像

◇ 签名目录 2026110502 · 9 个发行版本 · 17 个镜像制品

  • Ubuntu、Debian 与 Rocky Linux,覆盖 amd64 和 arm64
  • 启动前校验签名元数据、SHA-256 与 qcow2 结构
  • 在 ~/.barn 中只缓存一份,每个节点使用独立写时复制层

也可以用 barn image import 导入自己的 qcow2 镜像。

设计随笔

可预期,来自设计

每条规则都链接到一篇说明其取舍的设计随笔。

固定 IP 走第二张网卡

管理出网走第一张网卡,宿主、节点与 Pigsty 使用的固定地址走第二张。

固定 IP 走第二张网卡

每个用户一套部署

每个用户只有一套实验环境,保存在 ~/.barn,切换目录不会分出第二套。

每个用户一套部署

先确认身份,再看 PID

QMP 身份与操作日志一致时,Barn 才会向虚拟机进程发信号或删除文件。

先确认身份,再看 PID

镜像以签名为证

repo.yaml 表达意图,签名的 catalog.json 证明镜像字节。

镜像以签名为证

原生或模拟客机

同架构客机使用 HVF 或 KVM,跨架构客机由 QEMU TCG 运行。

原生或模拟客机

开始之前

常见问题

Barn 支持哪些宿主平台?

Linux 实验环境可运行在 macOS(Apple Silicon 或 Intel,QEMU 搭配 HVF)与 Linux(amd64 或 arm64,QEMU 搭配 KVM)上。macOS 客机需要运行 macOS 27 或更高版本的 Apple Silicon Mac,签名的 Barn.app 随 Homebrew 配方与 Darwin arm64 归档一起提供。详见平台与限制。

Barn 会改动宿主上的哪些东西?

首次运行 barn up 时,Barn 会列出需要安装的 QEMU 软件包、UEFI 固件与私有宿主网络,确认一次后才会执行;只有需要管理员权限的步骤才会触发 sudo。可以先用 barn setup --dry-run 预览计划,撤销方法见卸载与清理。

Barn 与 Pigsty、Ansible 是什么关系?

barn.yml 就是标准的 Ansible YAML 主机清单(all.vars、 all.children.<group>.hosts),同一份文件可以直接用于 ansible-playbook -i barn.yml 和 Pigsty 剧本。Barn 负责准备机器与 SSH 访问, Pigsty 负责安装服务;Barn 也可以单独使用。

Barn 把镜像与虚拟机磁盘存放在哪里?

部署状态、SSH 密钥、基础镜像缓存与虚拟机磁盘都保存在 $BARN_HOME 下(默认 ~/.barn)。除非设置了不同的 BARN_HOME,切换工作目录不会新建另一套部署。

如何升级 Barn?

先停止正在运行的 macOS 虚拟机,再执行 brew upgrade pgsty/infra/barn 或重新运行 install.sh。 ~/.barn 下的虚拟机磁盘、密钥和状态都会保留。详见升级 Barn。

准备好搭建本地实验环境了吗?从安装到清理,跟着 Linux 教程走一遍;也可以启动 macOS 虚拟机,或直接查阅命令。