Release notes

Upcoming Butane 0.21.0 (unreleased)

Breaking changes

Features

  • Support storage.luks.clevis (flatcar 1.2.0-exp)

Bug fixes

Misc. changes

Docs changes

Butane 0.20.0 (2024-02-19)

Starting with this release, Butane binaries are signed with the Fedora 39 key.

Breaking changes

Features

  • Support s390x layouts in boot_device section (fcos 1.6.0-exp, openshift 4.16.0-exp)
  • Stabilize OpenShift spec 4.15.0, targeting Ignition spec 3.4.0
  • Add OpenShift spec 4.16.0-experimental, targeting Ignition spec 3.5.0-experimental

Bug fixes

Misc. changes

  • Require Go 1.20+

Docs changes

Butane 0.19.0 (2023-10-03)

Starting with this release, Butane binaries are signed with the Fedora 38 key.

Breaking changes

  • Spec implementations require a FieldFilters() method (Go API)
  • Reports from Unvalidated functions can now include json paths (Go API)

Features

  • Add -c/--check option to check config without producing output
  • Warn if config attempts to reuse partition by label (fcos 1.6.0-exp, openshift 4.14.0)
  • Require storage.filesystems.path to start with /etc or /var if with_mount_unit is true (fcos 1.6.0-exp, openshift 4.14.0)
  • Stabilize OpenShift spec 4.14.0, targeting Ignition spec 3.4.0
  • Add OpenShift spec 4.15.0-experimental, targeting Ignition spec 3.5.0-experimental
  • Add new variant fiot for fedora-iot

Bug fixes

  • Fix line/column reporting for http_headers errors
  • Fix line/column reporting for unsupported field errors (r4e)

Misc. changes

  • Add error structs for YAML unmarshal errors, unknown config versions (Go API)
  • Roll back to Ignition spec 3.4.0 (openshift 4.14.0)

Docs changes

  • Document consequence of setting systemd.units.mask to false
  • Document grub section (openshift 4.15.0-exp)
  • Document /dev/disk/by-id/coreos-boot-disk (fcos, openshift 4.11.0+)
  • Don’t claim to support generating swap units (openshift 4.8.0 - 4.13.0)
  • Document key_file compression field (openshift 4.8.0 - 4.9.0)
  • Document support for special mode bits and arn URLs (r4e 1.1.0+)
  • Improve rendering of spec docs on docs site

Butane 0.18.0 (2023-03-24)

Breaking changes

  • Remove deprecated rhcos variant

Features

  • Support offline Tang provisioning via pre-shared advertisement (fcos 1.5.0+, openshift 4.14.0-exp)
  • Support local file embedding for SSH keys and systemd units (fcos 1.5.0+, flatcar 1.1.0+, openshift 4.14.0-exp, r4e 1.1.0+)
  • Allow enabling discard passthrough on LUKS devices (fcos 1.5.0+, flatcar 1.1.0+, openshift 4.14.0-exp)
  • Allow specifying arbitrary LUKS open options (fcos 1.5.0+, flatcar 1.1.0+, openshift 4.14.0-exp)
  • Allow specifying user password hash (openshift 4.13.0+)
  • Stabilize Fedora CoreOS spec 1.5.0, targeting Ignition spec 3.4.0
  • Stabilize Flatcar spec 1.1.0, targeting Ignition spec 3.4.0
  • Stabilize OpenShift spec 4.13.0, targeting Ignition spec 3.2.0
  • Stabilize RHEL for Edge spec 1.1.0, targeting Ignition spec 3.4.0
  • Add Fedora CoreOS spec 1.6.0-experimental, targeting Ignition spec 3.5.0-experimental
  • Add Flatcar spec 1.2.0-experimental, targeting Ignition spec 3.5.0-experimental
  • Add OpenShift spec 4.14.0-experimental, targeting Ignition spec 3.5.0-experimental
  • Add RHEL for Edge spec 1.2.0-experimental, targeting Ignition spec 3.5.0-experimental

Bug fixes

  • Use systemd default dependencies in mount units for Tang-backed LUKS volumes
  • Allow setting storage.trees.local to the --files-dir directory

Misc. changes

  • Roll back to Ignition spec 3.2.0 (openshift 4.13.0)
  • Drop extensions section (fcos 1.5.0+, openshift 4.13.0+)
  • Drop LuksOption and RaidOption types (Go API for fcos 1.5.0+, flatcar 1.1.0+, openshift 4.14.0-experimental)
  • Require Go 1.18+

Docs changes

  • Document that hash fields describe decompressed data
  • Clarify spec docs for files/luks hash fields
  • Document SSH key file path used by OpenShift 4.13+ (openshift)
  • Document command to generate GRUB password hashes

Butane 0.17.0 (2023-01-04)

Starting with this release, Butane binaries are signed with the Fedora 37 key.

Features

  • Add RHEL for Edge (r4e) spec 1.0.0 and 1.1.0-experimental, targeting Ignition spec 3.3.0 and 3.4.0-experimental respectively

Bug fixes

  • Fix version string in release container

Butane 0.16.0 (2022-10-14)

Features

  • Stabilize OpenShift spec 4.12.0, targeting Ignition spec 3.2.0
  • Add OpenShift spec 4.13.0-experimental, targeting Ignition spec 3.4.0-experimental
  • Ship aarch64 macOS binary in GitHub release artifacts

Misc. changes

  • Roll back to Ignition spec 3.2.0 (openshift 4.12.0)
  • Require Go 1.17+
  • test: Check docs on macOS and Windows if dependencies are available

Docs changes

  • Document passwd.users.should_exist and passwd.groups.should_exist fields (fcos 1.2.0+, flatcar, rhcos)
  • Clarify spec docs for files/directories/links group fields
  • Document that user/group fields aren’t applied to hard links

Butane 0.15.0 (2022-06-23)

Starting with this release, Butane binaries are signed with the Fedora 36 key.

Breaking changes

  • Return selected compression field value from MakeDataURL() (Go API)

Features

  • Add Flatcar spec 1.0.0 and 1.1.0-experimental, targeting Ignition spec 3.3.0 and 3.4.0-experimental respectively
  • Stabilize OpenShift spec 4.11.0, targeting Ignition spec 3.2.0
  • Add OpenShift spec 4.12.0-experimental, targeting Ignition spec 3.4.0-experimental
  • Add arm64 support to container
  • Add GRUB password support (fcos 1.5.0-exp, openshift 4.12.0-exp)
  • Add TranslationSet AddFromCommonObject() and Map() methods (Go API)

Bug fixes

  • Set compression field for uncompressed inline/local resources, fixing provisioning failure when merged with a compressed parent resource
  • Fix local file inclusion on Windows
  • Fix build script on Windows

Misc. changes

  • Derive container from Fedora image to support use in multi-stage builds
  • Fail if setuid/setgid/sticky mode bits specified (openshift 4.10.0+)
  • Update to Ignition 2.14.0
  • Roll back to Ignition spec 3.2.0 (openshift 4.11.0)

Docs changes

  • Support arn URL scheme (fcos 1.5.0-exp, openshift 4.12.0-exp)
  • Document support status of setuid/setgid/sticky mode bits in each spec
  • Document support for gs URLs (openshift 4.8.0+)
  • Document support for compression field (openshift 4.8.0 - 4.9.0)
  • Correctly document supported URL schemes (openshift 4.10.0)
  • examples: Use containerized mkpasswd
  • Convert NEWS to Markdown and move to docs site

Butane 0.14.0 (2022-01-27)

Starting with this release, Butane binaries are signed with the Fedora 35 key.

Breaking changes

  • Drop TranslateBytesOptions.Strict field; callers should fail on non-empty reports instead (Go API)

Features

  • Stabilize OpenShift spec 4.10.0, targeting Ignition spec 3.2.0
  • Add OpenShift spec 4.11.0-experimental, targeting Ignition spec 3.4.0-experimental
  • Warn on incorrect partition numbers for reserved labels (fcos, openshift)
  • Require storage.files.contents.source URLs to use data scheme (openshift)
  • Re-enable automatic and manual resource compression (openshift 4.10.0+)
  • Add extensions section (fcos 1.5.0-exp, openshift 4.11.0-exp)

Bug fixes

  • Correctly fail on validation warnings if --strict is specified
  • Statically link official Linux binaries

Misc. changes

  • Roll back to Ignition spec 3.2.0 (openshift 4.10.0)
  • Add deprecation warning for rhcos variant
  • Add reserved partitions to aarch64/ppc64le boot_device.mirror layouts (fcos, openshift)

Docs changes

  • Improve getting-started instructions for running in container
  • Document availability of gs URL scheme
  • Correctly document availability of compression fields
  • Correctly document ignition section as optional
  • Add with_mount_unit swap support to migration guide (fcos 1.4.0)
  • Document build process and contribution flow for release binaries

Butane 0.13.1 (2021-08-04)

Misc. changes

  • Roll back to Ignition spec 3.2.0, since 3.3.0 support didn’t make it into OpenShift 4.9. No 3.3.0 features were permitted in this config version, so this shouldn’t break configs. (openshift 4.9.0)
  • Send --help output to stdout
  • Drop support for Go 1.13 and 1.14

Docs changes

  • Correctly snake-case ignition.proxy fields

Butane 0.13.0 (2021-07-13)

Features

  • Stabilize Fedora CoreOS spec 1.4.0, targeting Ignition spec 3.3.0
  • Add Fedora CoreOS spec 1.5.0-experimental, targeting Ignition spec 3.4.0-experimental
  • Stabilize OpenShift spec 4.9.0, targeting Ignition spec 3.3.0
  • Add OpenShift spec 4.10.0-experimental, targeting Ignition spec 3.4.0-experimental
  • Support none filesystem format (fcos 1.4.0+)

Bug fixes

  • Correctly track input line/column in kernel_arguments section

Misc. changes

  • Deprecate rhcos 0.1.0 spec in favor of openshift variant
  • Disable kernel_arguments section in favor of openshift.kernel_arguments (openshift 4.9.0+)
  • Convert ClevisCustom.Config, ClevisCustom.Pin, Link.Target, and Raid.Level Go fields to pointers (fcos 1.4.0+, openshift 4.9.0+)

Docs changes

  • Document default value for Clevis threshold

Butane 0.12.1 (2021-06-10)

Bug fixes

  • Disable automatic resource compression (openshift 4.8.0, openshift 4.9.0-exp)

Misc. changes

  • Fail if file compression specified (openshift 4.8.0, openshift 4.9.0-exp)

Butane 0.12.0 (2021-06-08)

Starting with this release, Butane binaries are signed with the Fedora 34 key.

Features

  • Add kernel_arguments section (fcos 1.4.0-exp, openshift 4.9.0-exp)

Bug fixes

  • Fix incorrect config paths in validation reports on 386 architecture

Misc. changes

  • Fail on btrfs filesystem format (openshift 4.8.0, openshift 4.9.0-exp)
  • Add comment to MachineConfig output noting that the config is machine-generated

Butane 0.11.0 (2021-04-05)

Breaking changes

  • Rename project to Butane and binary to butane
  • Change package path to github.com/coreos/butane (Go API)
  • Remove translate.AddIdentity() in favor of translate.MergeP() (Go API)

Features

  • Add OpenShift spec 4.8.0, targeting Ignition spec 3.2.0
  • Output MachineConfig unless -r/--raw specified (openshift 4.8.0)
  • Error on Ignition fields discouraged by OpenShift (openshift 4.8.0)
  • Add metadata section for MachineConfig metadata (openshift 4.8.0)
  • Add openshift section for MachineConfig configuration (openshift 4.8.0)
  • Set appropriate LUKS cipher if openshift.fips enabled (openshift 4.8.0)
  • Add OpenShift spec 4.9.0-experimental, targeting Ignition spec 3.3.0-experimental

Misc. changes

  • Remove RHEL CoreOS spec 0.2.0-experimental
  • Refactor translation tracking for report entries
  • Add undocumented -D/--debug option to report translation map

Docs changes

  • Provide separate config upgrade guide for each variant
  • Document storage.filesystems.resize
  • Fix filesystem resize example in upgrade docs
  • Document default for storage.filesystems.wipe_filesystem

FCCT 0.10.0 (2021-02-01)

Features

  • Create systemd swap unit when with_mount_unit is enabled on swap area (fcos 1.4.0-exp, rhcos 0.2.0-exp)

Bug fixes

  • Drop erroneous EFI partition in boot_device.mirror ppc64le layout
  • Fix panic translating boot_device when config is invalid

FCCT 0.9.0 (2021-01-05)

Bug fixes

  • Avoid ESP RAID desynchronization by creating independent ESP filesystems

Docs changes

  • Clarify semantics of systemd.units.name
  • Correctly document storage.filesystems.path as optional
  • Fix nesting of storage.luks and storage.trees sections
  • Move codebase layout info from README to developer docs
  • Recommend container image or distro package over standalone binary

FCCT 0.8.0 (2020-12-04)

Starting with this release, Butane binaries are signed with the Fedora 33 key.

Breaking changes

  • Restructure Go API

Features

  • Stabilize Fedora CoreOS spec 1.3.0, targeting Ignition spec 3.2.0
  • Add Fedora CoreOS spec 1.4.0-experimental, targeting Ignition spec 3.3.0-experimental
  • Add RHEL CoreOS spec 0.1.0, targeting Ignition spec 3.2.0
  • Add RHEL CoreOS spec 0.2.0-experimental, targeting Ignition spec 3.3.0-experimental
  • Add boot_device section for configuring boot device LUKS and mirroring (fcos 1.3.0, rhcos 0.1.0)

Bug fixes

  • Fix systemd-fsck@.service dependencies in generated mount units

Misc. changes

  • Warn if file/dir modes appear to have been specified in decimal
  • Validate input in translation functions taking Go structs (Go API)
  • Allow registering external translators (Go API)
  • Allow specs to derive from other specs (Go API)

Docs changes

  • Document Clevis custom and LUKS wipe_volume fields
  • Add LUKS and mirroring examples
  • Add password authentication example

FCCT 0.7.0 (2020-10-23)

Features

  • Stabilize FCC spec 1.2.0, targeting Ignition spec 3.2.0
  • Add FCC spec 1.3.0-experimental, targeting Ignition spec 3.3.0-experimental
  • Add storage.luks section for creating LUKS2 encrypted volumes (1.2.0)
  • Add resize field for modifying partition size (1.2.0)
  • Add should_exist field for deleting users & groups (1.2.0)
  • Add NoResourceAutoCompression translate option to skip automatic compression (Go API)

Docs changes

  • Switch to GitHub Pages

FCCT 0.6.0 (2020-05-28)

Starting with this release, Butane binaries are signed with the Fedora 32 key.

Features

  • Stabilize FCC spec 1.1.0, targeting Ignition spec 3.1.0
  • Add FCC spec 1.2.0-experimental, targeting Ignition spec 3.2.0-experimental
  • Add inline field to TLS certificate authorities and config merge and replace (1.1.0)
  • Add local field for embedding contents from local file (1.1.0)
  • Add storage.trees section for embedding local directory trees (1.1.0)
  • Auto-select smallest encoding for inline or local contents (1.1.0)
  • Add http_headers field for specifying HTTP headers on fetch (1.1.0)

Bug fixes

  • Include mount options in generated mount units (1.1.0)
  • Validate uniqueness constraints within FCC sections
  • Omit empty values from output JSON
  • Append newline to output

Docs changes

  • Document support for CA bundles in Ignition >= 2.3.0
  • Document support for sha256 resource verification (1.1.0)
  • Clarify semantics of overwrite and mode fields

FCCT 0.5.0 (2020-03-23)

Breaking changes

  • Previously, command-line options could be preceded by a single dash (-strict) or double dash (--strict). Accept only the double-dash form.

Features

  • Accept input filename directly on command line, without --input
  • Add short equivalents of command-line options

Bug fixes

  • Fail if unexpected non-option arguments are specified

Misc. changes

  • Deprecate --input and hide it from --help
  • Document files[].append[].inline property
  • Update docs for switch to Fedora signing keys

FCCT 0.4.0 (2020-01-24)

Features

  • Add mount_options field to filesystem entry

Misc. changes

  • Add release tag to container of latest release
  • Vendor dependencies

FCCT 0.3.0 (2020-01-23)

Features

  • Add v1.1.0-experimental spec
  • Add with_mount_unit field to generate mount unit from filesystem entry

Bug fixes

  • Report warnings and errors to stderr, not stdout
  • Truncate output file before writing
  • Fix line and column reporting

Misc. changes

  • Document syntax of inline file contents
  • Document usage of published container image

FCCT 0.2.0 (2019-07-24)

Features

  • Add --version flag
  • Add Dockerfile and build containers automatically on quay.io

Bug fixes

  • Fix validation of paths for files and directories
  • Fix --output flag handling

Misc. changes

  • Add tests for the examples in the docs
  • Add travis integration

FCCT 0.1.0 (2019-07-10)

Initial Release of FCCT. While the golang API is not stable, the Fedora CoreOS Configuration language is. Configs written with version 1.0.0 will continue to work with future releases of FCCT.