Butane Configuration Transpiler

repository·main·Indexed 43 days ago

https://github.com/coreos/butane

A 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.

Tokens
37.7K
Snippets
62
Records
172
Agent score
50%

What's inside Butane

  1. What is Butane?

    main
    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.
  2. Fedora CoreOS Specification v1.8.0-experimental Overview

    main

    The 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 be fcos for 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.
  3. Flatcar Specification v1.0.0 Overview

    main
    The 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 version 3.3.0. The document is structured around several top-level sections including storage, systemd, passwd, and kernel_arguments.
  4. Fedora CoreOS Specification v1.4.0 Overview

    main

    The 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 be fcos.
    • 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.
  5. OpenShift Specification v4.17.0 Overview

    main

    The OpenShift configuration is a YAML document used to generate Ignition configs or MachineConfig resources. For this specification, the variant must be set to openshift.

    Key top-level fields include:

    • variant: Must be openshift.
    • 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.
  6. Fedora CoreOS Specification v1.6.0 Overview

    main
    The Fedora CoreOS configuration is a YAML document. This specification (v1.6.0) generates Ignition configs with version 3.5.0. The configuration is used to define the desired state of the system, including storage, files, users, systemd units, and boot parameters.
  7. Fedora CoreOS Specification v1.5.0 Overview

    main
    The 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 version 3.4.0. The configuration is structured around several top-level functional areas including storage, systemd units, user management, and boot configuration.
  8. What is Butane and how does it work

    main

    Butane (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.

  9. Fedora IoT Configuration Specification v1.0.0

    main

    The 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.
  10. RHEL for Edge Configuration Specification v1.1.0

    main

    The 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 be r4e.
    • 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.
  11. Fedora CoreOS Configuration Specification v1.7.0

    main

    The 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 be fcos.
    • version (string): The semantic version of the spec (e.g., 1.7.0).
    • ignition (object): Metadata and configuration options for the Ignition process, including config, storage, systemd, passwd, kernel_arguments, boot_device, and grub.
  12. Configure Ignition file and config merging

    main

    The ignition.config.merge_ and ignition.config.replace_ sections allow you to incorporate external configurations. For both merge_ and replace_, you can specify how to retrieve the content using one of the following mutually exclusive methods:

    • source: A URL (supports http, https, tftp, s3, arn, gs, and data).
    • inline: The raw string content of the config.
    • local: A path to a local file, relative to the directory provided via the --files-dir CLI argument.

    Additional options for these methods include:

    • compression: null or gzip (not supported with S3).
    • http_headers: A list of name/value pairs (for http/https only).
    • verification: An object containing a hash in the format <type>-<value> (where type is sha512 or sha256). If compression is used, the hash must describe the decompressed content.