Skip to content

Barn 1.2.0

Latest

Choose a tag to compare

@Vonng Vonng released this 12 Nov 00:05

Released on 2026-11-12.
This minor update adds VM resource overrides, recoverable root-disk growth,
configurable Linux lifecycle concurrency, and inventory-based host names.
It also refreshes the build toolchain.

Upgrade from 1.1.0

Omitted Linux CPU/memory values now resolve to 1 vCPU / 2 GiB instead of
2 vCPUs / 4 GiB. Existing inventories that omit these fields use the new
defaults when read by 1.2.0. To retain the earlier defaults, add
vm_cpu: 2 and vm_mem: 4GiB under all.vars, preserving any per-host
overrides, and inspect barn plan before applying changes. Existing applied
VMs retain their resources until a resource-changing operation is requested.
Root and data-disk defaults remain 64 GiB and 128 GiB respectively.

VM resources and concurrency

  • Use --cpu/-C, --mem/-M, --scale/-S, and --disk/-D for resource
    overrides, alongside the image and architecture selectors. The corresponding
    BARN_* environment variables provide defaults; command-line values take
    precedence. Generated inventories save the base settings.
  • Grow an existing root disk with resize --disk/-D. Barn stops QEMU before
    enlarging the disk, verifies the guest partition and ext4/XFS filesystem,
    and records progress so an interrupted resize can resume. Shrinking and
    unsupported root layouts are rejected.
  • Read effective resources in SPEC labels such as 2c4g; structured output
    includes numeric resources, their bases, multiplier, and input sources.
  • Set Linux lifecycle concurrency with --parallel/-p. The default is the
    logical CPU count minus two, with a minimum of one. Zero runs all selected
    nodes concurrently; a positive value sets the maximum.

Inventory host names

Declare extra service names in all.vars.vm_hosts, then preview the combined
node and service mappings with barn hosts install -f pigsty.yml --json.
Apply the reviewed plan with barn hosts install -f pigsty.yml --yes.
The inventory path works before VM creation; omitting -f continues to use
applied node names. Duplicate mappings merge case-insensitively, conflicting
addresses fail, and these host-side mappings leave VM identity and guest
configuration unchanged.

Dependencies and packaging

Source builds, CI, and release artifacts require Go 1.27.4. The module refresh
updates golang.org/x/sys to 0.50.0, golang.org/x/term to 0.48.0,
golang.org/x/text to 0.44.0, and github.com/klauspost/compress to 1.20.4.
All other requirements listed in go.mod already use their latest stable
versions as checked on 2026-11-11.

Packaging uses GoReleaser 2.20.1 with bundled nFPM 2.48.0, and Syft 1.57.1.
Download checksums and dependency licenses match those versions. Existing
quality-tool versions and GitHub Actions commit pins are current.
RPM payload verification now requires SOURCE_DATE_EPOCH timestamps,
matching nFPM 2.48's archive output.

The signed image catalog remains revision 2026110502, with 17 stable
architecture-specific artifacts. Both official repositories match the embedded
catalog; the default is Ubuntu 24.04 on the host's native architecture.

Upgrade and downloads

Stop running macOS guests before replacing Barn.app, then upgrade:

brew update
brew upgrade pgsty/infra/barn

Or use the versioned installer:

curl -fLO https://github.com/pgsty/barn/releases/download/v1.2.0/install.sh
BARN_VERSION=1.2.0 bash install.sh
barn version

The installer verifies the archive against checksums.txt. The Darwin arm64
archive includes the Developer ID signed and notarized CLI, hosts helper,
and Barn.app; other archives and Linux DEB/RPM packages include the CLI
and matching helper. VM disks, keys, and state remain under BARN_HOME.

See the command reference,
full changelog, and
changes since 1.1.0.