Author: Brian Tomlinson [email protected]
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.yamlplaybookmake generate-ignition: Execute thegenerate-ign.yamlplaybookmake prepare-sdcard: Execute theprepare-sdcard.yamlplaybookmake clean: Deletes thebuildanddistdirectoriesmake clean-build: Only delete thebuilddirectorymake clean-dist: Only delete thedistdirectorymake distribution: Creates thedistdirectory, copies theetcdirectory tree, and processes the butane configs
main.yamlimports the all playbooks, is the "all in one" entrypointfedora-prereqs.yamlensures package dependencies are presentgenerate-ign.yamlprocesses the templates inplaybooks/templatestobuildand copies theetcdirectory treeprepare-sdcard.yamlattempts 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.