Release notes
Upcoming Butane 0.26.0 (unreleased)
Features
Bug fixes
Misc. changes
Docs changes
Butane 0.25.1 (2025-09-24)
Docs changes
- Update docs around the use of setuid/gid from Ignition bug’
Misc. changes
- Update vendor’d Ignition dependency to point to latest v2.23.0
Butane 0.25.0 (2025-09-08)
Features
- Stabilize OpenShift spec 4.20.0, targeting Ignition spec 3.5.0
- Add OpenShift spec 4.21.0-experimental, targeting Ignition spec 3.6.0-experimental
Bug fixes
- Stop overriding default LUKS cipher algorithm in FIPS mode (openshift 4.20.0)
Docs changes
- Add missing examples in upgrading-openshift (openshift 4.14)
Butane 0.24.0 (2025-05-27)
Features
- Validate merged/replaced Ignition configs if they are local/inline (all base specifications)
- Stabilize OpenShift spec 4.19.0, targeting Ignition spec 3.5.0
- Add OpenShift spec 4.20.0-experimental, targeting Ignition spec 3.6.0-experimental
- Add TMT test support with initial smoke test
Bug fixes
- Fail if LUKS method is not specified while
boot_device.luks.deviceis set (fcos 1.7.0-exp) - Validate kernel arguments when CEX support is enabled on s390x (4.19.0 and 4.20.0)
Misc. changes
- Roll back to Ignition spec 3.5.0 (openshift 4.19.0)
Butane 0.23.0 (2024-12-03)
Starting with this release, Butane binaries are signed with the Fedora 41 key.
Features
- Add OpenShift spec 4.19.0-experimental, targeting Ignition spec 3.6.0-experimental
- Stabilize OpenShift spec 4.18.0, targeting Ignition spec 3.4.0
- Stabilize Fcos spec 1.6.0, targeting Ignition spec 3.5.0
- Add Fcos spec 1.7.0-experimental, targeting Ignition spec 3.6.0-experimental
- Update Fiot spec 1.1.0-experimental to target Ignition spec 3.6.0-experimental
- Update Flatcar spec 1.2.0-experimental to target Ignition spec 3.6.0-experimental
- Update OpenShift spec 4.18.0-experimental, targeting Ignition spec 3.6.0-experimental
- Update R4e spec 1.2.0-experimental to target Ignition spec 3.6.0-experimental
- Support LUKS encryption using IBM CEX secure keys on s390x (fcos 1.6) (openshift 4.18.0-exp)
Docs changes
- Re-vendor latest ignition release; 3.5.0-experimental becomes 3.5.0
Butane 0.22.0 (2024-09-20)
Features
- Stabilize OpenShift spec 4.17.0, targeting Ignition spec 3.4.0
- Add OpenShift spec 4.18.0-experimental, targeting Ignition spec 3.5.0-experimental
- Support and documentation for
grubsection moved to OpenShift 4.18.0-experimental spec.
Misc. changes
- Roll back to Ignition spec 3.4.0 (openshift 4.17.0)
Butane 0.21.0 (2024-06-06)
Starting with this release, Butane binaries are signed with the Fedora 40 key.
Features
- Support
storage.luks.clevis(flatcar 1.2.0-exp) - Stabilize OpenShift spec 4.16.0, targeting Ignition spec 3.4.0
- Add OpenShift spec 4.17.0-experimental, targeting Ignition spec 3.5.0-experimental
Butane 0.20.0 (2024-02-19)
Starting with this release, Butane binaries are signed with the Fedora 39 key.
Features
- Support s390x layouts in
boot_devicesection (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
Misc. changes
- Require Go 1.20+
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
Unvalidatedfunctions can now includejsonpaths (Go API)
Features
- Add
-c/--checkoption 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.pathto start with/etcor/varifwith_mount_unitis 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
fiotfor fedora-iot
Bug fixes
- Fix line/column reporting for
http_headerserrors - 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.maskto false - Document
grubsection (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_filecompressionfield (openshift 4.8.0 - 4.9.0) - Document support for special mode bits and
arnURLs (r4e 1.1.0+) - Improve rendering of spec docs on docs site
Butane 0.18.0 (2023-03-24)
Breaking changes
- Remove deprecated
rhcosvariant
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.localto the--files-dirdirectory
Misc. changes
- Roll back to Ignition spec 3.2.0 (openshift 4.13.0)
- Drop
extensionssection (fcos 1.5.0+, openshift 4.13.0+) - Drop
LuksOptionandRaidOptiontypes (Go API for fcos 1.5.0+, flatcar 1.1.0+, openshift 4.14.0-experimental) - Require Go 1.18+
Docs changes
- Document that
hashfields describe decompressed data - Clarify spec docs for
files/lukshashfields - 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_existandpasswd.groups.should_existfields (fcos 1.2.0+, flatcar, rhcos) - Clarify spec docs for
files/directories/linksgroupfields - Document that
user/groupfields 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
compressionfield value fromMakeDataURL()(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
TranslationSetAddFromCommonObject()andMap()methods (Go API)
Bug fixes
- Set
compressionfield for uncompressedinline/localresources, fixing provisioning failure when merged with a compressed parent resource - Fix local file inclusion on Windows
- Fix
buildscript 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
arnURL 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
gsURLs (openshift 4.8.0+) - Document support for
compressionfield (openshift 4.8.0 - 4.9.0) - Correctly document supported URL schemes (openshift 4.10.0)
- examples: Use containerized
mkpasswd - Convert
NEWSto 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.Strictfield; 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.sourceURLs to usedatascheme (openshift) - Re-enable automatic and manual resource compression (openshift 4.10.0+)
- Add
extensionssection (fcos 1.5.0-exp, openshift 4.11.0-exp)
Bug fixes
- Correctly fail on validation warnings if
--strictis specified - Statically link official Linux binaries
Misc. changes
- Roll back to Ignition spec 3.2.0 (openshift 4.10.0)
- Add deprecation warning for
rhcosvariant - Add reserved partitions to
aarch64/ppc64leboot_device.mirrorlayouts (fcos, openshift)
Docs changes
- Improve getting-started instructions for running in container
- Document availability of
gsURL scheme - Correctly document availability of
compressionfields - Correctly document
ignitionsection as optional - Add
with_mount_unitswapsupport 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
--helpoutput to stdout - Drop support for Go 1.13 and 1.14
Docs changes
- Correctly snake-case
ignition.proxyfields
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
nonefilesystem format (fcos 1.4.0+)
Bug fixes
- Correctly track input line/column in
kernel_argumentssection
Misc. changes
- Deprecate
rhcos0.1.0 spec in favor ofopenshiftvariant - Disable
kernel_argumentssection in favor ofopenshift.kernel_arguments(openshift 4.9.0+) - Convert
ClevisCustom.Config,ClevisCustom.Pin,Link.Target, andRaid.LevelGo 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_argumentssection (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
btrfsfilesystem 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 oftranslate.MergeP()(Go API)
Features
- Add OpenShift spec 4.8.0, targeting Ignition spec 3.2.0
- Output MachineConfig unless
-r/--rawspecified (openshift 4.8.0) - Error on Ignition fields discouraged by OpenShift (openshift 4.8.0)
- Add
metadatasection for MachineConfig metadata (openshift 4.8.0) - Add
openshiftsection for MachineConfig configuration (openshift 4.8.0) - Set appropriate LUKS cipher if
openshift.fipsenabled (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/--debugoption 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
swapunit whenwith_mount_unitis enabled on swap area (fcos 1.4.0-exp, rhcos 0.2.0-exp)
Bug fixes
- Drop erroneous EFI partition in
boot_device.mirrorppc64lelayout - Fix panic translating
boot_devicewhen 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.pathas optional - Fix nesting of
storage.luksandstorage.treessections - 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_devicesection for configuring boot device LUKS and mirroring (fcos 1.3.0, rhcos 0.1.0)
Bug fixes
- Fix
systemd-fsck@.servicedependencies 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
customand LUKSwipe_volumefields - 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.lukssection for creating LUKS2 encrypted volumes (1.2.0) - Add
resizefield for modifying partition size (1.2.0) - Add
should_existfield for deleting users & groups (1.2.0) - Add
NoResourceAutoCompressiontranslate 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
inlinefield to TLS certificate authorities and config merge and replace (1.1.0) - Add
localfield for embedding contents from local file (1.1.0) - Add
storage.treessection for embedding local directory trees (1.1.0) - Auto-select smallest encoding for
inlineorlocalcontents (1.1.0) - Add
http_headersfield 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
sha256resource verification (1.1.0) - Clarify semantics of
overwriteandmodefields
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
--inputand hide it from--help - Document
files[].append[].inlineproperty - Update docs for switch to Fedora signing keys
FCCT 0.4.0 (2020-01-24)
Features
- Add
mount_optionsfield to filesystem entry
Misc. changes
- Add
releasetag to container of latest release - Vendor dependencies
FCCT 0.3.0 (2020-01-23)
Features
- Add v1.1.0-experimental spec
- Add
with_mount_unitfield 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
--versionflag - Add Dockerfile and build containers automatically on quay.io
Bug fixes
- Fix validation of paths for files and directories
- Fix
--outputflag 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.