Butane Configuration Transpiler
repository·main·Indexed 43 days ago
https://github.com/coreos/butaneA configuration transpiler that converts human-friendly YAML files into machine-readable Ignition JSON configurations used for provisioning systems. It supports Fedora CoreOS (FCOS) specifications v1.0.0 through v1.3.0, generating Ignition configurations for versions 3.0.0 to 3.2.0. Key configuration areas include storage (files, directories, LUKS encryption), systemd units, passwd (users and groups), and boot device mirroring.
What's inside Butane
- Butane (formerly known as Fedora CoreOS Config Transpiler or FCCT) is a tool that translates human-readable Butane configuration files into machine-readable Ignition configurations. This allows developers to write easier-to-maintain configurations that are then converted into the format required for provisioning systems.
Fedora CoreOS Specification v1.8.0-experimental Overview
mainThe Fedora CoreOS (FCOS) configuration is a YAML document used to define the desired state of a system. This specific version (v1.8.0-experimental) generates Ignition configs with version
3.7.0-experimental.Note: This specification is experimental and subject to change without warning.
Key top-level fields include:
variant: Must befcosfor this specification.version: The semantic version of the spec.ignition: Metadata and configuration options for the configuration process (e.g., merging, timeouts, security, and proxy settings).storage: Defines disks, RAID, filesystems, files, directories, links, and LUKS devices.systemd: Manages systemd units and Podman Quadlets.passwd: Manages users and groups.kernel_arguments: Specifies which kernel arguments should or should not exist.boot_device: Configures boot device encryption (LUKS/Clevis) or mirroring.grub: Configures GRUB superusers.
Flatcar Specification v1.0.0 Overview
mainThe Flatcar configuration is a YAML document used to define the desired state of a Flatcar Linux system. This specification (v1.0.0) generates Ignition configurations with version3.3.0. The document is structured around several top-level sections includingstorage,systemd,passwd, andkernel_arguments.Fedora CoreOS Specification v1.4.0 Overview
mainThe Fedora CoreOS (FCOS) configuration is a YAML document used to define the desired state of a system. This specification (v1.4.0) generates Ignition configs with version
3.3.0.Key top-level fields include:
variant: Must befcos.version: The semantic version of the spec.ignition: Metadata and configuration options (merging, replacement, timeouts, security, and proxy settings).storage: Configuration for disks, RAID, filesystems, files, directories, links, LUKS devices, and directory trees.systemd: Configuration for systemd units and drop-ins.passwd: Configuration for users and groups.kernel_arguments: Desired kernel arguments.boot_device: Configuration for boot device encryption (LUKS/Clevis) or mirroring.
OpenShift Specification v4.17.0 Overview
mainThe OpenShift configuration is a YAML document used to generate Ignition configs or MachineConfig resources. For this specification, the
variantmust be set toopenshift.Key top-level fields include:
variant: Must beopenshift.version: The semantic version of the spec (e.g.,4.17.0).metadata: Metadata for MachineConfig resources (name, labels).storage: Configuration for disks, partitions, RAID, filesystems, files, and LUKS devices.systemd: Configuration for systemd units and drop-ins.passwd: User account management.openshift: OpenShift-specific settings like kernel type and FIPS mode.
Fedora CoreOS Specification v1.6.0 Overview
mainThe Fedora CoreOS configuration is a YAML document. This specification (v1.6.0) generates Ignition configs with version3.5.0. The configuration is used to define the desired state of the system, including storage, files, users, systemd units, and boot parameters.Fedora CoreOS Specification v1.5.0 Overview
mainThe Fedora CoreOS configuration is a YAML document used to define the desired state of a system. This specification (v1.5.0) generates Ignition configs with version3.4.0. The configuration is structured around several top-level functional areas including storage, systemd units, user management, and boot configuration.What is Butane and how does it work
mainButane (formerly Fedora CoreOS Config Transpiler) is a tool that converts Butane Configs (YAML files) into Ignition Configs (JSON documents).
Ignition Configs are used by Fedora CoreOS machines during their first boot to automate system configuration, such as:
- Creating users
- Creating filesystems
- Setting up networking
- Installing systemd units
Users write human-friendly YAML files following the Butane schema, and Butane transpiles them into the machine-readable JSON format required by the Ignition utility inside Fedora CoreOS.
Fedora IoT Configuration Specification v1.0.0
mainThe Fedora IoT configuration is a YAML document used to define the desired state of a system. This specification version 1.0.0 generates Ignition configs with version
3.4.0.Key top-level fields include:
variant(string): Must be%VARIANT%for this specification.version(string): The semantic version of the spec.ignition(object): Metadata and configuration options for the Ignition process, including merging configs, timeouts, security (TLS/Proxy), and storage.
RHEL for Edge Configuration Specification v1.1.0
mainThe RHEL for Edge (R4E) configuration is a YAML document used to generate Ignition configs (version
3.4.0). To be valid for this specification, the document must include the following top-level keys:variant(string): Must ber4e.version(string): The semantic version of the spec (e.g.,1.1.0).ignition(object): Metadata and configuration for the Ignition process, including storage, systemd, and user management.
Fedora CoreOS Configuration Specification v1.7.0
mainThe Fedora CoreOS configuration is a YAML document. This specification (v1.7.0) generates Ignition configurations with version
3.6.0.Key top-level fields include:
variant(string): Must befcos.version(string): The semantic version of the spec (e.g.,1.7.0).ignition(object): Metadata and configuration options for the Ignition process, includingconfig,storage,systemd,passwd,kernel_arguments,boot_device, andgrub.
Configure Ignition file and config merging
mainThe
ignition.config.merge_andignition.config.replace_sections allow you to incorporate external configurations. For bothmerge_andreplace_, you can specify how to retrieve the content using one of the following mutually exclusive methods:source: A URL (supportshttp,https,tftp,s3,arn,gs, anddata).inline: The raw string content of the config.local: A path to a local file, relative to the directory provided via the--files-dirCLI argument.
Additional options for these methods include:
compression:nullorgzip(not supported with S3).http_headers: A list ofname/valuepairs (forhttp/httpsonly).verification: An object containing ahashin the format<type>-<value>(where type issha512orsha256). If compression is used, the hash must describe the decompressed content.