Infrastructure as Code.
This project installs and configures Arch Linux or Debian operating systems fully automated.
⚠ This project is in beta state and all scripts referencing hard coded to the
dev
branch.
Features:
- 💿 Build the installer ISO image in a Docker environment
- 💡 Read hostname and OS type from UEFI variables
- 🔨 Install a minimal Arch Linux OS or Debian OS
- ❓ Decide target disk for installation, etc by hostname
- 🔐 Setup root password, SSH keys and user accounts
- 🚀 Autostart OS configuration at first boot
- 💻 Autostart Desktop configuration at first Desktop logon
Archiso is used as a base. archiso/ contains a Dockerfile and some scripts to build a custom Arch Linux installer iso with additional scripts.
./archiso/build.sh
builds the container image./archiso/pack.sh
runs the container image to build the Arch Linux ISO image
The perrys-bootstrapper.sh
script is using UEFI variables to fetch the hostname from the system and use the
correct ansible inventory variables.
Set hostname in UEFI variable:
echo -n myhostname > efi-hostname
efivar --name ed38a5bf-1135-4b0f-aa72-49d30b05dfd4-PerryHostname -w -f efi-hostname
Get the hostname from UEFI variable:
cat /sys/firmware/efi/efivars/PerryHostname-ed38a5bf-1135-4b0f-aa72-49d30b05dfd4
In addition the variable PerryFlavor-ed38a5bf-1135-4b0f-aa72-49d30b05dfd4
can be used to
set the flavor (debian
or archlinux
).
- Build the Arch Linux ISO image
- Boot ISO in a virtual machine or on a physical system
- Ensure that the
diskdev
andbootmode
are correct in the inventoy - Run installer
- Debian:
perrys-bootstrapper.sh --flavor debian
- Arch Linux:
perrys-bootstrapper.sh --flavor archlinux
- Debian:
- Reboot into the new OS
Run perrys-ansible-apply.sh
as root.
It pulls automatically the correct playbook from this repo by the hostname of the operating system.
- Bluetooth
- NetworkManager
- NFTables
- Pulseaudio
- Swap File
- Unix Account
- X11
- XFCE
- SSH Daemon config
- Disk Encryption