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.
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.
- 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.
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.yamlbt 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.
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:
- Contribution Guide – how to get involved and submit patches.
- Repository Codeowners – who's assigned for contribution reviews in this repository.
- Repository Maintainers – who’s responsible for what in this repository.
- Flatcar Project Maintainers – who’s responsible for what at Flatcar.
- Governance – how decisions are made and who the stakeholders are.
- Code of Conduct – our commitment to a welcoming and inclusive community.
- LICENSE - License under which the software is released.
- 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