Directory structure:
base
: Ansible playbooks to provisio and upkeep the server.services
: Ansible playbooks to run services with podman.containers
: Custom container build files.docs
: General documentation in markdown files.secrets
: Passphrases, certificates and keys not kept in version control. Synced seperately with Syncthing.backups
: Deployment and scripts for automated backups.
These can also have subdirectories, for example for common reusable groups of tasks.
Before running any automated installation steps, the Arch system has to be installed to a state where it is started with a SSH server running and Python installed.
- Install Arch.
pacman -S openssh less vim python
- Start SSH server:
systemctl enable --now sshd
- Copy authorized_keys to the root user of the server.
- Add the server to the local SSH config with the hostname matching the inventory and the correct IP address.
Ansible inventory file is in the repository. The hostnames in it should be configured in the local machines SSH client's settings.
Example command at the repository root:
ansible-playbook --vault-password-file=secrets/ansible_vault_passphrase -i inventory base/01-packages.yml