I wrote a script to automate a FreeBSD installation such that I can have my systems up and running quickly and easily. All I need to do is to run the script with a few parameters, reboot, and done.
Well that is great for me, I'd like it to be great for others too.
This script while opinionated and requires some options to be set takes a github repository as a configuration source and builds a system from that supporting the following types of 'patches':
opinionated bits:
'Systems' are configured in git repositories:
Additionally, each 'patch' is defined by a directory ending with '.patch' containing modules such as packages, files, services, etc.
The script is modular and additional modules could be added. My 'opinions' could be abstracted out instead of being baked in such as requiring ZFS on top of GELI for the root FS. This script is installed onto the existing FreeBSD install image and run after logging into the system as root. I would be happy to see it included in the FreeBSD install image - if that happens, then I could write documentation and provide a sample github repo on how to use and configure systems.
Well that is great for me, I'd like it to be great for others too.
This script while opinionated and requires some options to be set takes a github repository as a configuration source and builds a system from that supporting the following types of 'patches':
opinionated bits:
- geli
- hostname convention
- microcode updates
- freebsd updates (automatically applied on creation)
- custom kernel conf / modules
- install packages
- installation of files
- enablement of services
- sysctl configuration
- installation of 'apps' - my proprietary shell script apps
- installation of go, rust, npm, pypi commands
- run scripts (in different phases)
- provision users and groups
- update permissions (chmod and chown)
- configure the boot loader conf
- setup crontab
- update fstab entries
- create symlinks
- install periodic jobs
- build pf anchor and table crontab jobs
- setup zfs datasets (from source)
'Systems' are configured in git repositories:
system-name
/patches/any -> patches in this directory are applied to both jails and physical systems
/patches/physical -> patches are only applied to physical systems, not in a jail
/patches/jail -> patch is only applied to jailed systems
Additionally, each 'patch' is defined by a directory ending with '.patch' containing modules such as packages, files, services, etc.
The script is modular and additional modules could be added. My 'opinions' could be abstracted out instead of being baked in such as requiring ZFS on top of GELI for the root FS. This script is installed onto the existing FreeBSD install image and run after logging into the system as root. I would be happy to see it included in the FreeBSD install image - if that happens, then I could write documentation and provide a sample github repo on how to use and configure systems.