<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xmpp-prosody-ansible-deploy, branch master</title>
<subtitle>Ansible playbook that deploys prosody to a server.
</subtitle>
<id>https://git.fennell.dev/xmpp-prosody-ansible-deploy/atom?h=master</id>
<link rel='self' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/'/>
<updated>2026-09-09T21:57:57Z</updated>
<entry>
<title>Include prosody in munin-node's extra_profiles</title>
<updated>2026-09-09T21:57:57Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-09-09T21:57:57Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=79defd7005932723df05f96b33ad7d3f5876413d'/>
<id>urn:sha1:79defd7005932723df05f96b33ad7d3f5876413d</id>
<content type='text'>
This ensures that the necessary packages and prosody-specific munin plugins are
configured by default.
</content>
</entry>
<entry>
<title>Use bootstrap and munin-node roles</title>
<updated>2026-09-09T21:22:07Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-09-09T21:22:07Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=4d958b4784ceda51e0dbb95f8f87d23fdbc4153a'/>
<id>urn:sha1:4d958b4784ceda51e0dbb95f8f87d23fdbc4153a</id>
<content type='text'>
I've moved these tasks into their own roles, which can now be used directly.
</content>
</entry>
<entry>
<title>Remove ansible.cfg</title>
<updated>2026-09-09T20:02:34Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-09-09T20:02:34Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=a9d2acc5987edc8425bfb39156befa7a14adae6b'/>
<id>urn:sha1:a9d2acc5987edc8425bfb39156befa7a14adae6b</id>
<content type='text'>
Now that I am splitting the repo into smaller roles, this any ansible
configuration should be shared. For instance, I want to install roles to
/usr/local/share/ansible/roles, but that isn't present in the default
roles_path.

Since ansible doesn't merge config files and only considers the one with
highest precedence, this means I should either define that override in every
role and playbook, or delete all custom ansible.cfg's and define it once, in my
~/.ansible.cfg. I decided to do the latter, to reduce duplication.
</content>
</entry>
<entry>
<title>Use consistent apt sources across servers</title>
<updated>2026-08-29T23:36:11Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-08-29T23:36:11Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=184a6ac426a0cc5ed1ee9dbb5287affa94464142'/>
<id>urn:sha1:184a6ac426a0cc5ed1ee9dbb5287affa94464142</id>
<content type='text'>
Servers on different providers had different apt sources by default. For
instance - some enabled trixie-backports while others did not. This lack of
consistency could lead to unexpected problems in the future - so ensure all
servers use consistent apt sources now.

Preserve the ability to use use mirrors by making uri a configurable parameter.
Likewise - make debian_version a configurable parameter. While I could set the
distribution to stable, I don't want to risk an upgrade moving onto a new
stable release without it being my explicit choice - a variable allows me to
set the version as trixie as well as upgrade servers incrementally (first in
staging, then transport, then prod).
</content>
</entry>
<entry>
<title>Install munin-node on servers</title>
<updated>2026-08-29T21:09:30Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-08-29T21:09:30Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=8b1ba2a7d9f0509253e37e5832c4bc74b44d009d'/>
<id>urn:sha1:8b1ba2a7d9f0509253e37e5832c4bc74b44d009d</id>
<content type='text'>
Begin with already-included and postgres modules. I'll look to add
prosody-specific modules in time.
</content>
</entry>
<entry>
<title>Ensure all authorized_keys are copied to host</title>
<updated>2026-01-14T23:11:39Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-01-14T23:11:39Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=546a3bb370a8394d133228236a835a0b606ae8a8'/>
<id>urn:sha1:546a3bb370a8394d133228236a835a0b606ae8a8</id>
<content type='text'>
I have two keys, one for interactive access, and one for automated jobs. On
migration to the new host, I added the interactive key via the VPS provider's
form, but neglected to add the key for automated jobs. This led to the backup
jobs failing.

Therefore, define keys in the inventory that should be copied to the host, and
ensure they are installed to root. The subsequent step then copies these to the
admin account.

There is one problem with this approach: ssh remains open to root. Although
privilege escalation from admin is possible, I would like to take steps to
reduce root access where possible.

However, the playbook currently has to work both on first run when
bootstrapping the box, as well as subsequent runs. On the first run, the
playbook only has access to root and must create the admin account. However,
once the admin account has been created, the playbook should never again
interact with root.

Therefore, in the near future, I'd like to introduce a "bootstrap" action to
the playbook, that should only be run on the first deploy to the host, and
disable ssh access to root once finished. Subsequent runs should only interact
via admin.
</content>
</entry>
<entry>
<title>Create directory for notes</title>
<updated>2026-01-11T15:05:36Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-01-11T15:05:36Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=71dff47fe74bd888feb957ee545ba9bdad6fb076'/>
<id>urn:sha1:71dff47fe74bd888feb957ee545ba9bdad6fb076</id>
<content type='text'>
I initially had a single notes.md file with just the changes that I needed.
But, I want to expand this to also include some runbooks and ad-hoc scripts,
that are too tied to my specific installation to be in the public repository.
</content>
</entry>
<entry>
<title>Use more precise wording in prosody database step</title>
<updated>2026-01-10T15:45:03Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-01-10T15:45:03Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=4cdb662d1ee723d3190d29d65732a1877d628fbf'/>
<id>urn:sha1:4cdb662d1ee723d3190d29d65732a1877d628fbf</id>
<content type='text'>
Technically, the database is only being created and not fully set up.
</content>
</entry>
<entry>
<title>Ensure rsync is installed to xmpp servers</title>
<updated>2026-01-10T15:41:57Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-01-10T15:41:57Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=f0c3a3056f317aa1065fbf23668a245b62b55165'/>
<id>urn:sha1:f0c3a3056f317aa1065fbf23668a245b62b55165</id>
<content type='text'>
This enables delta backups, reducing bandwidth sent off the server.
</content>
</entry>
<entry>
<title>Tag all DNS steps</title>
<updated>2026-01-10T15:39:31Z</updated>
<author>
<name>Matthew Fennell</name>
<email>matthew@fennell.dev</email>
</author>
<published>2026-01-10T15:39:31Z</published>
<link rel='alternate' type='text/html' href='https://git.fennell.dev/xmpp-prosody-ansible-deploy/commit/?id=f3a0496912c4ceb9d2032946bb0e31525f50a613'/>
<id>urn:sha1:f3a0496912c4ceb9d2032946bb0e31525f50a613</id>
<content type='text'>
There are some cases where I do not want to run DNS-related steps. For
instance, when setting up a new server, which should replace an existing one,
it is necessary to skip the DNS steps until the server has been fully migrated
and I am ready to switch the hot/cold sides.

Therefore, tag all DNS steps. This allows them to be skipped during ansible
playbook execution using --skip-tags dns.
</content>
</entry>
</feed>
