Skip to content

Flatcar OS Discord Slack Twitter Follow Mastodon Follow Bluesky OpenSSF Best Practices

Butane-Init: a Cloud-Init to Butane Config Transpiler

Background

Flatcar uses Butane and Ignition for provisioning. Much of the wider ecosystem still produces cloud-config (cloud-init) YAML, which makes it harder to adopt Flatcar in environments where cloud-config is already the norm.

The Project

A transpiler in Go that converts cloud-config YAML into Butane YAML. The transpiler implements the minimum functionality needed to support ClusterAPI worker node provisioning, and to replace coreos-cloudinit In practice that limits the transpiler to basic Butane features such as users, groups, certificates, files and systemd units.

Goals and Non-Goals

  • A working Go transpiler covering a documented subset of cloud-config.
  • Test coverage for each supported feature, running in CI.
  • End to end integration with Flatcar and ClusterAPI.
  • Documentation covering supported fields and known limitations.

Usage

Build bt, then pass a cloud-config file or pipe one on standard input:

go build -o bt ./cmd/bt
bt cloud-config.yaml > butane.yaml
# or: cat cloud-config.yaml | bt -o butane.yaml

bt currently converts only the Cluster API worker users subset. A config is either converted completely or rejected; unsupported fields are never silently discarded.

cloud-config field Butane field
name name
passwd password_hash
gecos gecos
homedir home_dir
shell shell
ssh_authorized_keys ssh_authorized_keys

Password hashes remain locked, matching cloud-init's default lock_passwd: true. Supplementary and primary groups, sudo configuration, password unlocking, and every non-users stanza are not yet supported. Jinja templates are not evaluated and are rejected; render them before passing the resulting cloud-config to bt.

A Flatcar Container Linux project

Flatcar Container Linux is a fully open source, minimal-footprint, secure by default and always up-to-date Linux distribution for running containers at scale.

This repository is maintained by the Flatcar community and contributors. Development and design decisions are guided by the principles of transparency, modularity, and collaboration.

Please find information on:


Community & Project Documentation

  • Contributing Guidelines — How to contribute, find issues, and submit pull requests
  • Code of Conduct — Standards for respectful and inclusive community participation
  • Security Policy — How to report vulnerabilities and security-related information
  • Maintainers — Current project maintainers and their responsibilities
  • Governance — Project governance model, decision-making process, and roles

About

Cloud-init to Butane transpiler

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages