Author: Brian Tomlinson btomlins@redhat.com
Ignition configs for my Fedora CoreOS based projects.
IMPORTANT! - Once the prepare-sdcard.yaml
playbook exits you will need to expand the root partition of the sdcard
to take all avaialble space. Fedora CoreOS will not boot with the ~1GB root partition, it's there to keep the download
size small.
- Fedora 35+ (versions prior to 35 are untested)
- Ansible v2.9+
- make
The repo is currently structured for creating configurations necessary for deploying to and preparing the Raspberry Pi 400 for Microshift.
To generate the ignition configs simply clone the repo and execute make ansible
.
The make ansible
command will execute ansible-playbook -i inventory/hosts.ini main.yaml -K
by default. This will
prompt you for your sudo
password before ensuring running the playbooks/fedora-prereqs.yaml
playbook to install
package dependencies and then immediately generate dist/master.ign
and dist/worker.ign
via the
playbooks/generate-ign.yaml
playbook.
Once the command exits, check dist/
and you will find the etc
directory tree populated with configurations included
in the ignition configs, as well as the ignition files.
make all
: All-in-one automation via Ansiblemake fedora-prereqs
: Install dependencies to Fedora control node viafedora-prereqs.yaml
playbookmake generate-ignition
: Execute thegenerate-ign.yaml
playbookmake prepare-sdcard
: Execute theprepare-sdcard.yaml
playbookmake clean
: Deletes thebuild
anddist
directoriesmake clean-build
: Only delete thebuild
directorymake clean-dist
: Only delete thedist
directorymake distribution
: Creates thedist
directory, copies theetc
directory tree, and processes the butane configs
main.yaml
imports the all playbooks, is the "all in one" entrypointfedora-prereqs.yaml
ensures package dependencies are presentgenerate-ign.yaml
processes the templates inplaybooks/templates
tobuild
and copies theetc
directory treeprepare-sdcard.yaml
attempts to write a bootable Fedora CoreOS configured with the supplied ignition config to the sdcard
This is a non-exhaustive list, see the inventory/group_vars/all.yaml
file for more options.
state: defaults to 'present', 'absent' is also valid and will remove elements similar to 'make clean'
ssh_user: defaults to the current $USER, used for finding the public SSH key of the user
ssh_pub_key: the public SSH key of the user, used to enable SSH for the 'core' user in the resulting image
prereq_pkgs: list of package dependencies necessary for generating and consuming ignition configs
worker_hostname: the desired hostname of the worker node(s)
worker_ip: defaults to 'false', if declared will add the ip to the microshift config.yaml
master_hostname: the desired hostname of the master node(s)
master_ip: defaults to 'false', if declared will add the ip to the microshift config.yaml
MIT, see LICENSE file.