summaryrefslogtreecommitdiff
path: root/playbook.yaml
AgeCommit message (Collapse)Author
2025-08-11Set domain_with_ds to "" if no parent domainMatthew Fennell
domain_with_ds is checked against the empty string when checking whether we should define ds_subname. When no parent_domain was found, we setting domain_with_ds to None, which in Ansible 10 was (correctly) failing the domain_with_ds != "" check. However, in Ansible 12, it now fails that check, meaning that Ansible tried to evaluate ds_subname even when domain_with_ds was None, resulting in a type conversion failure. Therefore, make sure that domain_with_ds is always a string, even if parent_domain is undefined, and use the empty string to represent this, as expected in the playbook itself.
2025-08-10Set hostname in playbookMatthew Fennell
Some services, such as munin, read the hostname from the system, and don't allow "virtual host" configuration like prosody. For such services, we want to make sure the hostname is set correctly.
2025-08-10Disable cloud-initMatthew Fennell
I want ansible to take full control of managing /etc/hosts, hostname etc. I think it is most convenient to disable cloud-init entirely, to prevent contention between ansible and cloud-init.
2025-08-10Replace deprecated postgres parametersMatthew Fennell
db and database have been deprecated, and replaced with login_db.
2025-08-10Set pipefail when retrieving DANE hashMatthew Fennell
This is now enforced by ansible-lint.
2025-07-06Remove anonymous login supportMatthew Fennell
This was originally intended for motoristic, but is no longer needed by any domain.
2025-07-06Remove roster group supportMatthew Fennell
This was only ever enabled for testing purposes, and is no longer needed.
2025-07-06Share turnserver between vhosts on same machineMatthew Fennell
I made a mistake in the original configuration - I tried to give each virtual host a separate turnserver on its own subdomain. However, since koyo.haus and fennell.dev (and likewise in nonprod) share a virtual machine, they can only have one turnserver between them (in the turnserver.conf, there can only be a single realm). Therefore, always point to koyo.haus for the turnserver in each environment.
2025-07-05Manage certificates on localhostMatthew Fennell
I used to have a dedicated server for cert renewals; now I just run it from my laptop, with an increased cron frequency. This is simpler, especially when there is a powercut, and I'll certainly use my laptop every 30 days.
2025-07-05Do not register users on runMatthew Fennell
These steps where not idempotent, because there was no way to check if the password was correct. So, they would again each time. The playbook gets run infrequently enough, and it is simple enough, to add users manually.
2025-07-05Remove borgmaticMatthew Fennell
Backups are now handled outside of the playbook.
2024-09-05Install custom unattended-upgrades configMatthew Fennell
The main way the config varies from Debian's default, is that we make sure to reboot after each upgrade.
2024-08-19Enable roster groupsMatthew Fennell
This is useful for two reasons: * To test clients that render roster groups provided by the server * To evaluate whether it is worth enabling this flag in production
2024-08-19Ensure systmed-timesyncd is installedMatthew Fennell
This is not always installed by default on all hosts. We encountered an issue where this package was not installed, and it was causing the system time to gradually drift.
2024-07-27Do not manage CAA records in the playbookMatthew Fennell
These vary significantly from deployment to deployment, and running this playbook previously caused issues on fennell.dev deployments, where I need to be able to deploy certificates by other means.
2024-05-23Add anonymous subdomain when requestedMatthew Fennell
This will primiarly be used for motoristic.
2024-05-15Delegate certificate management to acme projectMatthew Fennell
Although this playbook originally installed certificates to the server, this turned out to be a bad idea, because the playbook could in some circumstances (if the acme project had already renewed the certs) have installed a different certificate to the remote server. By delgating responsibility to the acme server fully, this should prevent any such issues, as well as potential DANE misconfigurations.
2024-04-04Bring repo up-to-date with current prod configMatthew Fennell
2024-03-03Do not create AAAA record during the playbookMatthew Fennell
The AAAA record should be created by the libcloud bootstrap process instead, so that the playbook can ssh using the hostname as normal.
2024-03-03Do not delete public keys from root accountMatthew Fennell
The playbook initially deleted the public keys from root's authorized_keys after copying them to admin, but this prevents the playbook from running the "Ensure admin account is created" commands in subsequent runs. Therefore, we shouldn't delete them. In the long term, I would like to find a way to only attempt to run the root commands if it's not possible to ssh as admin. This is as I don't like the idea of root having direct ssh access.
2024-03-03Ensure non-root admin account is createdMatthew Fennell
Initially, I used AWS Lightsail for deployment. However, I am now using Vultr via libcloud, which does not create a user named "admin" by default. Therefore, this commit aims to ensure that such an account is created, even on providers that don't create it by default.
2024-02-28Register DNS records via deSECMatthew Fennell
I have moved DNS configuration for all of my servers to deSEC, thanks to its easy-to-use REST interface. This allows me to configure DNS records as part of the playbook, instead of having to add them manually for each new server I'd like to create. The consequence of this is that the playbook now has a hard dependency on deSEC.
2024-02-28Add whitespace between playbook tasksMatthew Fennell
This makes it easier to navigate through the playbook, and jump to the part that you're interested in editing, using the { and } keys in vim.
2024-02-28Remove certificate renewal steps from playbookMatthew Fennell
I would like certificate renewal to be handled centrally across all of my deployed services. Therefore, responsibility for certificate renewal no longer belongs in this playbook.
2024-02-08Use apt module instead of packageMatthew Fennell
I tried to create a fresh nonprod deployment today on continuous.staging.nonprod.chat.fennell.dev. However, the first step failed because the apt command could not find borgmatic. The solution was to run apt update before running apt install. Unfortunately, ansible's package module does not have an option for this. Therefore, although I would have liked to stick with "package" (to keep it general and away from the specific of using "apt" as a package manager), I have switched back to using the apt module so that the step can succeed without any manual intervention on fresh install.
2024-02-05Bulk update with all changes currently in prodMatthew Fennell
2024-01-26Add support for file uploadMatthew Fennell
This commit adds support for XEPS 0065 and 0365 - i.e. sending files from one account to another.
2024-01-08Enable XEP-0065Matthew Fennell
This commit enabled SOCKS5 Bytestreams, allowing users to send and receive files.
2024-01-08Become root during package installationMatthew Fennell
Previously, the playbook would fail if it needed to install packages, as this (in the case of apt) requires sudo.
2024-01-08Ensure borgmatic config directory existsMatthew Fennell
This directory is created by a user command, not as part of the package installation process. Therefore, it may not exist if the user has not yet configured borgmatic on the host.
2024-01-08Simplify validation of borgmatic fileMatthew Fennell
This commit uses the simpler, more standard validate feature of template instead of triggering a handler. The feature is there - may as well use it!
2024-01-08Install borgmatic in the playbookMatthew Fennell
This commit adds borgmatic, to provide automated backups.
2024-01-07Assign prosody config files to prosody groupMatthew Fennell
The playbook previosuly assigned the prosody config files to the root group. With root as the owner, and permissions as 0640, this meant that prosody was not able to read the files. This commit fixes this.
2024-01-07Ensure certificates are installedMatthew Fennell
This commit ensures certificates are installed, via Lets Encrypt.
2024-01-07Only reload prosody if its configuration changesMatthew Fennell
There is no sense reloading prosody if none of its configuration files have changed. Therefore, this commit moves the reload to a handler that only gets triggered in this situation.
2024-01-07Add virtual host specific configMatthew Fennell
This commit uses the new per-host virtual_host variable to create the necessary prosody host-specific cfg files.
2024-01-07Install prosody config fileMatthew Fennell
This commit adds a prosody configuration file that can be installed on the remote hosts. This lets me make the configuration locally, deploy it to staging environments, and then to prod, without having to directly login to the hosts.
2024-01-07Open ports for OpenSSH, WWW and XMPPMatthew Fennell
This commit enables the necessary ports for XMPP, web hosting (to allow certbot to renew automatically) and SSH.
2024-01-07Add initial playbookMatthew Fennell
At present, the playbook simply ensures that all required packages are installed.