Ansible configuration for the Netz39 infrastructure
curl only logs its own errors to stderr with the given options (--silent --show-error). Requests answered by the remote webserver, regardless of HTTP status code, go to stdout. So in case of an unsuccesful update with some error condition we could not see that before. Redirect those to debug log, because it's still quite noisy otherwise. This adds 288 log messages per day and service to the debug log, accounting to max. 30k per day and service, and thus should not hurt. desec log output is only the word "good" in case of success. dd24 full output would be this, and is thus reduced to the relevant lines merged in one line: [RESPONSE] code = 200 description = Command completed successfully runtime = 0.067 queuetime = 0 EOF Sample journald entry: Feb 27 12:48:15 pottwal dd24[519651]: code = 200,description = Command completed successfully |
||
---|---|---|
files | ||
group_vars | ||
host_vars | ||
roles | ||
templates | ||
.editorconfig | ||
.gitignore | ||
.mailmap | ||
.yamllint | ||
ansible.cfg | ||
configure-grafana.yml | ||
group-all.yml | ||
group-docker_host.yml | ||
group-k3s.yml | ||
group-proxmox.yml | ||
host-beaker.yml | ||
host-hobbes.yml | ||
host-holmium.yml | ||
host-krypton.yml | ||
host-oganesson.yml | ||
host-platon.yml | ||
host-plumbum.yml | ||
host-pottwal.yml | ||
host-radon.yml | ||
host-tau.yml | ||
host-unicorn.yml | ||
host-wittgenstein.yml | ||
inventory.yml | ||
main.yml | ||
README.md | ||
renovate.json | ||
requirements.yml | ||
setup-ssh.yml |
Ansible configuration for the Netz39 infrastructure
This call lists all hosts defined in the inventory:
ansible all --list-hosts
Setup
ansible-galaxy install -r requirements.yml
Setup SSH Access to hosts
LOGUSER=<loguser>
SSH_KEY=<absolute/path/to/ssh/private/key>
ansible-playbook setup-ssh.yml --ask-vault-pass -e "setup_ssh_logname=$LOGUSER" -e "setup_ssh_key=$SSH_KEY"
This playbook also adds rhodium.n39.eu
(OpenWRT router), but our Ansible cannot set up SSH keys (yet).
Please add your key to OpenWRT manually.
Edit vault encrypted vars files
ansible-vault edit group_vars/all/vault
Call with
ansible-playbook --ask-vault-pass main.yml
You need to provide a user with sudo rights and the vault password.
Verify Changes
ansible-lint main.yml
ansible-playbook --ask-vault-pass main.yml --check --diff
HTTPS ingress configuration
HTTPS ingress is controlled by the server holmium and forwarded to the configured servers.
To set up a new HTTPS vhost, the following steps need to be taken:
- Select a domain (for internal services we use sub-domains of
.n39.eu
). - Create an external CNAME from this domain to
dyndns.n39.eu
. - Create an internal DNS entry in the Descartes DNS config. This is usually an alias on an existing server.
- Add the entry to the holmium playbook.
- Set up Dehydrated and vhost on the target host, e.g. using
setup_http_site_proxy
.
Do not forget to execute all playbooks with relevant changes.