summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_graveyard_/inventory/group_vars/chaos-at-home/vars.yml13
-rw-r--r--chaos-at-home/ch-equinox-t450s.yml1
-rw-r--r--chaos-at-home/ch-equinox-ws.yml1
-rw-r--r--chaos-at-home/ch-iot.yml44
-rw-r--r--chaos-at-home/ch-repo.yml18
-rw-r--r--chaos-at-home/ch-sw2.yml (renamed from chaos-at-home/ch-sw0.yml)2
-rw-r--r--chaos-at-home/ch-sw3.yml (renamed from chaos-at-home/ch-sw1.yml)2
-rw-r--r--chaos-at-home/host_vars/ch-repo.yml9
-rw-r--r--common/openwrt-deploy.yml2
-rw-r--r--files/chaos-at-home/bind-zones/db.chaos-at-home.org15
-rw-r--r--files/chaos-at-home/bind-zones/db.chaox.org7
-rw-r--r--files/chaos-at-home/bind-zones/db.elev8.at4
-rw-r--r--files/chaos-at-home/bind-zones/db.gimpf.org7
-rw-r--r--files/chaos-at-home/bind-zones/db.gäh.org9
-rw-r--r--files/chaos-at-home/bind-zones/db.java-sucks.com9
-rw-r--r--files/chaos-at-home/bind-zones/db.movetogether.at4
-rw-r--r--files/chaos-at-home/bind-zones/db.spreadspace10
-rw-r--r--files/chaos-at-home/wpa_supplicant.conf.vault1194
-rw-r--r--gpg/vault-keyring-chaos-at-home.gpgbin54677 -> 57659 bytes
-rw-r--r--gpg/vault-keyring-dan.gpgbin60081 -> 63063 bytes
-rw-r--r--gpg/vault-keyring-spreadspace.gpgbin54677 -> 57659 bytes
-rw-r--r--gpg/vault-pass-chaos-at-home.gpg32
-rw-r--r--gpg/vault-pass-dan.gpg54
-rw-r--r--gpg/vault-pass-spreadspace.gpg32
-rw-r--r--inventory/group_vars/accesspoints/vars.yml1
-rw-r--r--inventory/group_vars/all/vars.yml39
-rw-r--r--inventory/group_vars/chaos-at-home/network.yml9
-rw-r--r--inventory/group_vars/chaos-at-home/vars.yml2
-rw-r--r--inventory/group_vars/chaos-at-home_hetzner/vars.yml2
-rw-r--r--inventory/group_vars/chaos-at-home_mur-at/vars.yml2
-rw-r--r--inventory/group_vars/chaos-at-home_n28/vars.yml5
-rw-r--r--inventory/group_vars/elevate-festival/vars.yml2
-rw-r--r--inventory/group_vars/promzone-chaos-at-home/vars.yml4
-rw-r--r--inventory/group_vars/promzone-elevate-festival/vars.yml4
-rw-r--r--inventory/group_vars/ups/vars.yml1
-rw-r--r--inventory/host_vars/ch-apps/node-red.yml2
-rw-r--r--inventory/host_vars/ch-apps/vars.yml2
-rw-r--r--inventory/host_vars/ch-cm4-sensors0.yml23
-rw-r--r--inventory/host_vars/ch-cm4-sensors1.yml23
-rw-r--r--inventory/host_vars/ch-companion-raspi.yml4
-rw-r--r--inventory/host_vars/ch-dione.yml2
-rw-r--r--inventory/host_vars/ch-equinox-t450s.yml28
-rw-r--r--inventory/host_vars/ch-equinox-ws.yml26
-rw-r--r--inventory/host_vars/ch-helene.yml2
-rw-r--r--inventory/host_vars/ch-iot.yml33
-rw-r--r--inventory/host_vars/ch-mimas.yml2
-rw-r--r--inventory/host_vars/ch-mon.yml24
-rw-r--r--inventory/host_vars/ch-pan.yml2
-rw-r--r--inventory/host_vars/ch-repo.yml84
-rw-r--r--inventory/host_vars/ch-router.yml1
-rw-r--r--inventory/host_vars/ch-sw2.yml (renamed from inventory/host_vars/ch-sw0.yml)12
-rw-r--r--inventory/host_vars/ch-sw3.yml (renamed from inventory/host_vars/ch-sw1.yml)10
-rw-r--r--inventory/host_vars/ch-tarvos.yml1
-rw-r--r--inventory/host_vars/ch-testvm-hcloud.yml3
-rw-r--r--inventory/host_vars/ele-calypso.yml2
-rw-r--r--inventory/host_vars/ele-companion-raspi.yml6
-rw-r--r--inventory/host_vars/ele-coturn.yml2
-rw-r--r--inventory/host_vars/ele-helene.yml2
-rw-r--r--inventory/host_vars/ele-jitsi.yml2
-rw-r--r--inventory/host_vars/ele-media.yml4
-rw-r--r--inventory/host_vars/ele-router-emc.yml1
-rw-r--r--inventory/host_vars/ele-router-hmtsaal.yml1
-rw-r--r--inventory/host_vars/ele-router-orpheum.yml1
-rw-r--r--inventory/host_vars/ele-thetys.yml2
-rw-r--r--inventory/host_vars/ele-tub.yml1
-rw-r--r--inventory/host_vars/glt-jitsi.yml2
-rw-r--r--inventory/host_vars/s2-thetys.yml2
-rw-r--r--inventory/host_vars/sk-cloudio/nextcloud.yml10
-rw-r--r--inventory/host_vars/sk-cloudio/vars.yml2
-rw-r--r--inventory/host_vars/sk-testvm.yml2
-rw-r--r--inventory/host_vars/sk-tomnext-nc.yml4
-rw-r--r--inventory/hosts.ini60
-rw-r--r--roles/approx/defaults/main.yml12
-rw-r--r--roles/approx/handlers/main.yml5
-rw-r--r--roles/approx/tasks/main.yml91
-rw-r--r--roles/apt-cacher-ng/defaults/main.yml23
-rw-r--r--roles/apt-cacher-ng/handlers/main.yml5
-rw-r--r--roles/apt-cacher-ng/tasks/main.yml100
-rw-r--r--roles/apt-repo/aptly/tasks/main.yml6
-rw-r--r--roles/apt-repo/base/tasks/main.yml5
-rw-r--r--roles/apt-repo/base/templates/Debian.list.j23
-rw-r--r--roles/apt-repo/blackmagic/tasks/main.yml10
-rw-r--r--roles/apt-repo/docker-com/defaults/main.yml2
-rw-r--r--roles/apt-repo/docker-com/tasks/main.yml8
-rw-r--r--roles/apt-repo/element/tasks/main.yml10
-rw-r--r--roles/apt-repo/freecad/files/repo.gpgbin412 -> 0 bytes
-rw-r--r--roles/apt-repo/freecad/tasks/main.yml18
-rw-r--r--roles/apt-repo/grafana/tasks/main.yml6
-rw-r--r--roles/apt-repo/helsinki/tasks/main.yml6
-rw-r--r--roles/apt-repo/kicad6/files/repo.gpgbin1160 -> 0 bytes
-rw-r--r--roles/apt-repo/kicad6/tasks/main.yml18
-rw-r--r--roles/apt-repo/kodi/tasks/main.yml6
-rw-r--r--roles/apt-repo/kubernetes/defaults/main.yml2
-rw-r--r--roles/apt-repo/kubernetes/tasks/main.yml2
-rw-r--r--roles/apt-repo/kubic-project/files/repo.gpgbin723 -> 0 bytes
-rw-r--r--roles/apt-repo/kubic-project/tasks/main.yml24
-rw-r--r--roles/apt-repo/nodejs/tasks/main.yml6
-rw-r--r--roles/apt-repo/nordvpn/tasks/main.yml6
-rw-r--r--roles/apt-repo/obs-studio/tasks/main.yml6
-rw-r--r--roles/apt-repo/percona/tasks/main.yml6
-rw-r--r--roles/apt-repo/spreadspace/defaults/main.yml2
-rw-r--r--roles/apt-repo/spreadspace/tasks/main.yml8
-rw-r--r--roles/apt-repo/tor-project/tasks/main.yml6
-rw-r--r--roles/installer/debian/preseed/templates/preseed_debian-bookworm.cfg.j24
-rw-r--r--roles/installer/debian/preseed/templates/preseed_debian-bullseye.cfg.j24
-rw-r--r--roles/installer/debian/preseed/templates/preseed_debian-buster.cfg.j24
-rw-r--r--roles/installer/debian/preseed/templates/preseed_debian-jessie.cfg.j28
-rw-r--r--roles/installer/debian/preseed/templates/preseed_debian-stretch.cfg.j24
-rw-r--r--roles/installer/debian/preseed/templates/preseed_kali-kali-rolling.cfg.j24
-rw-r--r--roles/installer/debian/preseed/templates/preseed_ubuntu-bionic.cfg.j24
-rw-r--r--roles/installer/debian/preseed/templates/preseed_ubuntu-focal.cfg.j24
-rw-r--r--roles/installer/debian/preseed/templates/preseed_ubuntu-xenial.cfg.j24
-rw-r--r--roles/installer/raspios/image/templates/firstrun.sh.j211
-rw-r--r--roles/installer/ubuntu/autoinstall/templates/autoinstall.yml.j211
-rw-r--r--roles/monitoring/grafana/files/dashboard-openwrt.json226
-rw-r--r--roles/monitoring/prometheus/server/defaults/main/rules_node.yml8
-rw-r--r--roles/network/coredns/defaults/main.yml5
-rw-r--r--roles/network/coredns/handlers/main.yml5
-rw-r--r--roles/network/coredns/tasks/main.yml40
-rw-r--r--roles/network/coredns/templates/coredns.service.j232
-rw-r--r--roles/ws/flatpak/defaults/main.yml5
-rw-r--r--roles/ws/flatpak/filter_plugins/flatpak.py28
-rw-r--r--roles/ws/flatpak/tasks/main.yml9
123 files changed, 1531 insertions, 1221 deletions
diff --git a/_graveyard_/inventory/group_vars/chaos-at-home/vars.yml b/_graveyard_/inventory/group_vars/chaos-at-home/vars.yml
deleted file mode 100644
index 8e1f3db1..00000000
--- a/_graveyard_/inventory/group_vars/chaos-at-home/vars.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-zsh_banner: chaos-at-home
-
-admin_users_group:
- - equinox
-
-acmetool_account_email: admin@chaos-at-home.org
-
-apt_repo_provider: anexia
-
-apt_repo_blackmagic_auth:
- username: "chaos-at-home"
- password: "{{ vault_apt_repo_blackmagic_auth.password }}"
diff --git a/chaos-at-home/ch-equinox-t450s.yml b/chaos-at-home/ch-equinox-t450s.yml
index 35f76d6d..8b57b6bc 100644
--- a/chaos-at-home/ch-equinox-t450s.yml
+++ b/chaos-at-home/ch-equinox-t450s.yml
@@ -26,7 +26,6 @@
- role: apt-repo/tor-project
- role: apt-repo/kubernetes
- role: apt-repo/element
- - role: apt-repo/kicad6
- role: storage/zfs/base
- role: storage/zfs/sanoid
- role: ws/base
diff --git a/chaos-at-home/ch-equinox-ws.yml b/chaos-at-home/ch-equinox-ws.yml
index e89df4f3..24e071b5 100644
--- a/chaos-at-home/ch-equinox-ws.yml
+++ b/chaos-at-home/ch-equinox-ws.yml
@@ -27,7 +27,6 @@
- role: apt-repo/tor-project
- role: apt-repo/kubernetes
- role: apt-repo/element
- - role: apt-repo/kicad6
- role: storage/zfs/base
- role: storage/zfs/sanoid
- role: ws/base
diff --git a/chaos-at-home/ch-iot.yml b/chaos-at-home/ch-iot.yml
index 1cc18e76..9a5d1641 100644
--- a/chaos-at-home/ch-iot.yml
+++ b/chaos-at-home/ch-iot.yml
@@ -14,6 +14,50 @@
- role: apt-repo/spreadspace
- role: x509/managed-ca/base
- role: x509/managed-ca/ca
+ - role: network/nftables/base
+ - role: network/coredns
- role: mosquitto/broker
- role: nginx/base
- role: monitoring/prometheus/exporter
+ post_tasks:
+ - name: create systemd override directory for nginx service unit
+ file:
+ path: /etc/systemd/system/nginx.service.d
+ state: directory
+
+ - name: create overrides for nginx systemd unit
+ copy:
+ content: |
+ [Unit]
+ After=network-online.target
+ Wants=network-online.target
+ dest: /etc/systemd/system/nginx.service.d/after-network-online.conf
+
+ - name: configure default vhost web.chaos-at-home.org
+ vars:
+ nginx_vhost:
+ name: iot-default
+ default: yes
+ listen:
+ - "{{ network_zones.iot.prefix | ansible.utils.ipaddr(network_zones.iot.offsets[inventory_hostname]) | ansible.utils.ipaddr('address') }}:80"
+ template: generic
+ locations:
+ '/':
+ return: 404
+ include_role:
+ name: nginx/vhost
+
+ - name: configure reverse-proxy for apt-cache
+ vars:
+ nginx_vhost:
+ name: apt.chaos-at-home.org
+ listen:
+ - "{{ network_zones.iot.prefix | ansible.utils.ipaddr(network_zones.iot.offsets[inventory_hostname]) | ansible.utils.ipaddr('address') }}:80"
+ hostnames:
+ - apt.chaos-at-home.org
+ template: generic
+ locations:
+ '/':
+ proxy_pass: "http://apt.chaos-at-home.org/"
+ include_role:
+ name: nginx/vhost
diff --git a/chaos-at-home/ch-repo.yml b/chaos-at-home/ch-repo.yml
new file mode 100644
index 00000000..96255b0b
--- /dev/null
+++ b/chaos-at-home/ch-repo.yml
@@ -0,0 +1,18 @@
+---
+- name: Basic Setup
+ hosts: ch-repo
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: ch-repo
+ roles:
+ - role: storage/lvm/base
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: approx
diff --git a/chaos-at-home/ch-sw0.yml b/chaos-at-home/ch-sw2.yml
index c3d02802..124c2026 100644
--- a/chaos-at-home/ch-sw0.yml
+++ b/chaos-at-home/ch-sw2.yml
@@ -1,6 +1,6 @@
---
- name: bootstrap
- hosts: ch-sw0
+ hosts: ch-sw2
gather_facts: no
roles:
- role: dellos6/bootstrap
diff --git a/chaos-at-home/ch-sw1.yml b/chaos-at-home/ch-sw3.yml
index ed7b0be5..bb98d389 100644
--- a/chaos-at-home/ch-sw1.yml
+++ b/chaos-at-home/ch-sw3.yml
@@ -1,6 +1,6 @@
---
- name: bootstrap
- hosts: ch-sw1
+ hosts: ch-sw3
gather_facts: no
roles:
- role: dellos6/bootstrap
diff --git a/chaos-at-home/host_vars/ch-repo.yml b/chaos-at-home/host_vars/ch-repo.yml
new file mode 100644
index 00000000..8a46a632
--- /dev/null
+++ b/chaos-at-home/host_vars/ch-repo.yml
@@ -0,0 +1,9 @@
+$ANSIBLE_VAULT;1.2;AES256;chaos-at-home
+63343434616336326566326464383931386565363433613635653836613166333461333633613239
+6261316164363531663932353564303764336536383239620a316130313064363863353138303763
+34666638616332396238303733396431326661663634313365383136393434383338336161653864
+6164363531313835380a656565353133666562633739363234336164326464323235343232656639
+30623532313433613266623864353436666362356239306339363139623766626265343933366261
+31326636393539326163313334323235313763643231363863303566376238383164316330663936
+62383062613039393733323532643437626232383963383035346264333665346538343130333733
+64306631343436323762
diff --git a/common/openwrt-deploy.yml b/common/openwrt-deploy.yml
index 1ef70a5e..ab80637f 100644
--- a/common/openwrt-deploy.yml
+++ b/common/openwrt-deploy.yml
@@ -14,7 +14,7 @@
hosts: "{{ install_hostname }}"
gather_facts: no
roles:
- - role: openwrt/deploy
+ - role: installer/openwrt/deploy
post_tasks:
- name: remove host-keys from ssh known-hosts
local_action: command "{{ (inventory_dir, '../remove-known-host.sh') | path_join | realpath }}" "{{ install_hostname }}"
diff --git a/files/chaos-at-home/bind-zones/db.chaos-at-home.org b/files/chaos-at-home/bind-zones/db.chaos-at-home.org
index c091743f..be7172f8 100644
--- a/files/chaos-at-home/bind-zones/db.chaos-at-home.org
+++ b/files/chaos-at-home/bind-zones/db.chaos-at-home.org
@@ -1,11 +1,11 @@
$origin chaos-at-home.org.
$TTL 1h
-@ SOA ns0 hostmaster (
- 2024013100
+@ SOA ns0 hostmaster (
+ 2024061802
1h
15m
- 30d
+ 28d
1h )
NS ns0
@@ -14,11 +14,13 @@ $TTL 1h
MX 10 mx0
MX 10 mx1
- 1200 TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
-
A 89.106.215.17
AAAA 2a02:3e0:407::17
+ TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
+_dmarc TXT "v=DMARC1; p=none; rua=mailto:postmaster@chaos-at-home.org"
+*._report._dmarc TXT "v=DMARC1"
+
gallery CNAME mimas
ipics CNAME mimas
mimas 600 A 178.63.180.142
@@ -75,9 +77,10 @@ webmail CNAME web
caldav CNAME web
; TODO: internal service should only be resolvable from within chaos-at-home network
+ldap A 192.168.32.1
+apt A 192.168.32.7
mon A 192.168.32.230
greenbone A 192.168.32.231
-ldap A 192.168.32.1
; old: clean this up as soon as everything is moved to caldav
webdav CNAME web
diff --git a/files/chaos-at-home/bind-zones/db.chaox.org b/files/chaos-at-home/bind-zones/db.chaox.org
index eb1ae041..0349ed91 100644
--- a/files/chaos-at-home/bind-zones/db.chaox.org
+++ b/files/chaos-at-home/bind-zones/db.chaox.org
@@ -2,10 +2,10 @@ $origin chaox.org.
$TTL 1W
@ SOA ns0.chaos-at-home.org. hostmaster (
- 2023051600
+ 2024061802
1h
15m
- 30d
+ 28d
1h )
NS ns0.chaos-at-home.org.
@@ -14,7 +14,8 @@ $TTL 1W
MX 10 mx0.chaos-at-home.org.
MX 10 mx1.chaos-at-home.org.
- 1200 TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
+ TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
+_dmarc TXT "v=DMARC1; p=none; rua=mailto:postmaster@chaos-at-home.org"
webmail CNAME webmail.chaos-at-home.org.
diff --git a/files/chaos-at-home/bind-zones/db.elev8.at b/files/chaos-at-home/bind-zones/db.elev8.at
index 765c01fe..e5a5c2a4 100644
--- a/files/chaos-at-home/bind-zones/db.elev8.at
+++ b/files/chaos-at-home/bind-zones/db.elev8.at
@@ -1,10 +1,10 @@
$TTL 1h
@ SOA ns0.chaos-at-home.org. hostmaster (
- 2024022400
+ 2024061802
1h
5m
- 30d
+ 28d
10m )
NS ns0.chaos-at-home.org.
diff --git a/files/chaos-at-home/bind-zones/db.gimpf.org b/files/chaos-at-home/bind-zones/db.gimpf.org
index b356c9cb..4ec2d29a 100644
--- a/files/chaos-at-home/bind-zones/db.gimpf.org
+++ b/files/chaos-at-home/bind-zones/db.gimpf.org
@@ -2,10 +2,10 @@ $origin gimpf.org.
$TTL 1W
@ SOA ns0.chaos-at-home.org. hostmaster (
- 2023051600
+ 2024061802
1h
15m
- 30d
+ 28d
1h )
NS ns0.chaos-at-home.org.
@@ -16,7 +16,8 @@ $TTL 1W
1200 A 178.63.180.142
- 1200 TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
+ TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
+_dmarc TXT "v=DMARC1; p=none; rua=mailto:postmaster@chaos-at-home.org"
www 1200 CNAME mimas.chaos-at-home.org.
id CNAME www.myopenid.com.
diff --git a/files/chaos-at-home/bind-zones/db.gäh.org b/files/chaos-at-home/bind-zones/db.gäh.org
index d0d51943..fdc734f6 100644
--- a/files/chaos-at-home/bind-zones/db.gäh.org
+++ b/files/chaos-at-home/bind-zones/db.gäh.org
@@ -1,10 +1,10 @@
$TTL 1W
@ SOA ns0.chaos-at-home.org. hostmaster (
- 2023051600
+ 2024061802
1h
15m
- 30d
+ 28d
1h )
NS ns0.chaos-at-home.org.
@@ -13,9 +13,10 @@ $TTL 1W
MX 10 mx0.chaos-at-home.org.
MX 10 mx1.chaos-at-home.org.
- 1200 TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
-
1200 A 178.63.180.142
+ TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
+_dmarc TXT "v=DMARC1; p=none; rua=mailto:postmaster@chaos-at-home.org"
+
www CNAME mimas.chaos-at-home.org.
wolke CNAME mimas.chaos-at-home.org.
diff --git a/files/chaos-at-home/bind-zones/db.java-sucks.com b/files/chaos-at-home/bind-zones/db.java-sucks.com
index cc3de90c..6427b5a3 100644
--- a/files/chaos-at-home/bind-zones/db.java-sucks.com
+++ b/files/chaos-at-home/bind-zones/db.java-sucks.com
@@ -2,10 +2,10 @@ $origin java-sucks.com.
$TTL 1W
@ SOA ns0.chaos-at-home.org. hostmaster (
- 2023051600
+ 2024061802
1h
15m
- 30d
+ 28d
1h )
NS ns0.chaos-at-home.org.
@@ -14,9 +14,10 @@ $TTL 1W
MX 10 mx0.chaos-at-home.org.
MX 10 mx1.chaos-at-home.org.
- 1200 TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
-
1200 A 178.63.180.142
+ TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
+_dmarc TXT "v=DMARC1; p=none; rua=mailto:postmaster@chaos-at-home.org"
+
www 1200 CNAME mimas.chaos-at-home.org.
webmail CNAME webmail.chaos-at-home.org.
diff --git a/files/chaos-at-home/bind-zones/db.movetogether.at b/files/chaos-at-home/bind-zones/db.movetogether.at
index 8ccc6e24..fbd70498 100644
--- a/files/chaos-at-home/bind-zones/db.movetogether.at
+++ b/files/chaos-at-home/bind-zones/db.movetogether.at
@@ -2,10 +2,10 @@ $origin movetogether.at.
$TTL 1W
@ SOA ns0.chaos-at-home.org. hostmaster (
- 2022111100
+ 2024061802
1h
15m
- 30d
+ 28d
1h )
NS ns0.chaos-at-home.org.
diff --git a/files/chaos-at-home/bind-zones/db.spreadspace b/files/chaos-at-home/bind-zones/db.spreadspace
index 5ddd8390..795a7fe5 100644
--- a/files/chaos-at-home/bind-zones/db.spreadspace
+++ b/files/chaos-at-home/bind-zones/db.spreadspace
@@ -1,10 +1,10 @@
$TTL 1h
@ SOA ns0.chaos-at-home.org. hostmaster (
- 2024040300
+ 2024061802
1h
5m
- 30d
+ 28d
10m )
NS ns0.chaos-at-home.org.
@@ -13,10 +13,12 @@ $TTL 1h
MX 10 mx0.chaos-at-home.org.
MX 10 mx1.chaos-at-home.org.
- 1200 TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
-
1200 A 89.106.215.17
1200 AAAA 2a02:3e0:407::17
+
+ TXT "v=spf1 a:mailrelay.chaos-at-home.org -all"
+_dmarc TXT "v=DMARC1; p=none; rua=mailto:postmaster@chaos-at-home.org"
+
build 1200 A 89.106.215.18
;build 1200 AAAA 2a02:3e0:407::18
diff --git a/files/chaos-at-home/wpa_supplicant.conf.vault b/files/chaos-at-home/wpa_supplicant.conf.vault
index 32d84515..1162e3bf 100644
--- a/files/chaos-at-home/wpa_supplicant.conf.vault
+++ b/files/chaos-at-home/wpa_supplicant.conf.vault
@@ -1,595 +1,601 @@
$ANSIBLE_VAULT;1.2;AES256;chaos-at-home
-36333039323063366439663866306537636530633863663766356133643135313738633064333334
-6461393038343465356130383132663739373631323865660a653533333230623332623466393339
-64633935306334363239373065383434653634333630663335653434366635343837666130613264
-3834306530643932640a313236393030396332636164613534333735633732623539656161376331
-63353434623631633630643435343263353438336435356633653539303938313366353036623865
-62333865633864373765343163656338373234356135373361643338376230626266306636653839
-62666233306337643737376538326633653636656364643230393036663063363965323434333639
-30613931643363356237333064653764303339383737653637316438346164383730376230643035
-33613932353932303131323531643733373566666332346130326137613331643863653536343863
-61626337393166623233363436356435663863343633366336653932653335663765313631326537
-33396666333562356565326535393234373431366566663965653030363831313633373666383865
-32373131396232633862623939613236366231353032323664666535366432383630313438383733
-64613661613162623630326330373830613838663034353639323263666665653131346430353139
-34363638663961376665343735653262306636626563396563353861333139333763393238666135
-35333739373966396361363031386362346236626136376265363562396434313338396563303932
-66313338643930626435313936323635363662383234646639306632373763626532653236316331
-33613537366630356463666532613037363664393730623464383438643563313566313366363666
-30316663363136356361353165613233386635343735333964623164616663626437306566376135
-64623232316531616565383333383466316236663237363234363831363065363132346366393839
-64653236626536636165646461636337633933353832333764333066316466656132353633623032
-65323435633638306561633430623039633538613439363534326435323961666564646564343436
-66616337633761616639646663396463626164663666383537643063336561623066636431376366
-37666235653665623136353736626166333961383933623130303764303663613433646434313231
-39303064353036633230656563346435393038376362373435323465323466366365313230393934
-63353465333666393231343739633865356436613536613237363966623563303934306139366433
-66373433376365306561653865356132643363613330653661333832613664353162646263663732
-66333565323037646633326166353438306537643361376634613039386465623763353964326637
-65623435383865336531643032323530646534303662313265336534623033653533663661636230
-36353164633632633266353337326331326231306462366665643931633266656562623837336234
-63623639373239373164303234613762353739373930303231616231303239626262383939336332
-32343833386235653537343334356237666364303161336133343034623931336537376365303631
-36383766626664356537376537336436653337366466663233623631666139663130643765626330
-66306165623031363336643963613766343066336139353332653935336431393864333962363263
-36623532336666653463313036336538626333646636393866366264666664376363633935316562
-30653535393464626133336137643233336563333338623461383539653463353535653565356330
-61303664393530626131656366333235653331613166353565623330383030356661656338306665
-39626633356266666662323666363463363561393866393434616163646664346163353262363033
-32303333316631633461333330366465313939343866333935616230656536373539383230656264
-65636231656530333163353762666630303233376162653838356136613538313734316638363734
-62393935613365343062663637313963333463653164396266356662383030663032316637336336
-62656131306338643831313335643730626630653839313930663938356366326233663132643831
-34663836373662303036613033333137336564666630393235303337663739313138356232646166
-31633832376535373637653631303031643031376565373964333233396166393131346135643738
-61306633636431343530353036303631333430383066346633366635373239356636643663303933
-39666237613863373363653432393534666236373031356530303263383362356332383734383237
-61656439623533323038336561373534393932336434303235303939306337663962323038646530
-39313235323363376235656336373663356634326132396466313363653639353562613132393235
-66306365366639626330653335646261633034316334373636313561306530336264663230363965
-32623638316264393566343362383936613664333437396137656566616638643465383538363265
-66393230333638353737613739393432363861626433343066663166363363346163653366376162
-62313639336132353562636566613261326464313437393165616539313034383436333138643333
-62626136306339326330346131623134636335373130303735313837396163323833316263333839
-30386638653666303866326366323262303833323733333432373066376462613431313161376663
-32633263653164663965333662366665353562333234306130376439353839393734353861653836
-62396438653538373334336531383165363466636465353037353462613562663437663162316239
-64396235383734633436373763653331633361323239656362353438393863383836373232323764
-64396533643537363639626561386362613565373731386136656564653262306264653034646537
-32373064373333636161393133323534633935373039643737366535373238313863363034373439
-38346133343463613834303034343637363031393431623537393332396531616435343235373038
-35386634393930346465343436643637323237303436613535653965383265343363326537383331
-37653764613863346330393263373830353330373535393338353732336462653632313334353230
-30643632663833386566633665343931613833653438363335626235646639386237663139396665
-61376634666564643230643231333861386336663461313762346561613161626533373337313931
-35633963653332383532366161383430656663313666326139373236313338666166653063343036
-62633665356230376665666632333265373439666364613665393162613862343331633731383837
-31323238343132393831383235636366616433353630393961333438313835643232613339333062
-33616135636565316130326666323462656132366162646635313663346635336661363065346563
-30393735353166323063313965343262363236653661323865633937373930343134663832353833
-63633733346566313734393932636566663661633832396537643239306335316363366538623366
-36386630343265613038333663616665656234343636646433653864623365326263336262303164
-35376462313333613232326566393334653266376136623962353834303930316566356235633034
-35353064373166326539656235336138633532383337313232623038613037643031616334663439
-66303139353464326264393331636165663432666235333431363666336633336433393233323538
-38323661633436363763316332623032323061303166326133613264643530343531656163643662
-36376439356162613830623730643833306365643866326439313266333630316465353066383266
-37633335633036343565326333373831363036643235636163636534333866383263366262663632
-39343832343934633937316163336163663733366535393936333934353432376535396336383732
-64373432376262383839383734633239356633356134626162666434316461613366353861363037
-63373766346534633732616237633534313833663766383366333664313136616239333334656264
-31626637653936633662666636323261326265326564643935316133313765623039343139666430
-63373239663631316138363830376634306563623530383530653032303338383038323731653630
-62363539306139623462306532376163636431666463373466373461386431663764643037643834
-32316431363965303830633065363463636238613532366165626532626432306166633563383566
-65393561333961383936363664613461666239613963636265623739633333393535303536333732
-39303065393136393134613963646663353433316162396339653931666236656135653563303932
-62663537626238323163336266643762353538363536396437643137356231663864666634376530
-30613834643936383130343965613135313132376664653837356561306134616636653734613631
-63653864343036663764376463373265383264306432616461396665343663373338313931313962
-65323137383934343165333862636532656662303630636264313039376163313839393562363463
-36393663373264313937656666383731346665343632383061333565333639393662313362346462
-65366431346232343232313637643463353238393430366634333331306630313639323937333831
-31353231333364383533623636616633616337313933333430633339663164626535613966386565
-36613837656635616261316633343438393936613131633364356432626261386236376535383636
-66646365633136373239623261313131366337613533313734646130383431663736646234656239
-30356339653862363961373033623836393065653337623138323531323835383931316264613465
-33653764613836366666376565363134303930636430613164306662343136366539376264373233
-66346165386433376334373631626538636238623439396338356264353634366533653562356537
-38316433306632396563656564383035343836366161656437616665363461653963306539383131
-32386563366236306439633163336131333866623936383663366162313539363365613939393639
-31343662393732653366636436306266653339383337336537353633333533333763333236306465
-30383133663166393338386330323131643664336238643630323536376462646264623839663166
-66633537663865626364633462363030613439373436323131343763373531623264636533356561
-63356332633635323835663866616564636131313266343864373766393966626637643636316330
-35636661666430633066383132353434343739343066653738333438646536653363626134316233
-33623032653062336136323232386264323833613363663064363234343562626362656161373538
-65383834613862636662646238633564316339613532653537336166386162613664383665383438
-64646561333833323262656630376563633263663561383264646638306236383566633738383863
-33633237396438326265336430313066346236633439356366616463366263316261303134613565
-64656562353133343333396265396535666664646462666638663638626233313237633963623638
-34623732353662663166383237666633376230363835303163313234363131303235346461303063
-65643363306538613139653837333732366136336465663736306334373662623466636362386339
-64303836366666383163373166616538653264623533373063653663646436303332386130633865
-31396565373764313639653933313234616136326261316663613361613233343730613966623963
-33643531663134383431663639333539306662326564666539663061323236623864323061366536
-38626162643137623062626564666332663863333666383939356261356332303537663836326362
-32646230636630323637373630366533396635346532643631383434316438303233363862643530
-33343963643930333338666234343264653764623661613465633438323166623433666431303664
-64346162626635653035353666626433643837636433616136386361326364343933346363323661
-66303534373639373739353938336632313162343237626131363935373862333266363730303130
-64616638343633323134373663326638393430613838323765383637643364643562633662323235
-30323534303134363433616564396139396431333936383434353730626166363161626365353163
-37653462353238333361313039616134356165373432656161333963353166383130303439633364
-37636531623630393730616461333639373030373665393639356233633861356539323834636535
-30623132626436643737636233316139623961323335633336373639363163303537643263383935
-34323937373165333539396136663335636265323335646262383432343133386661366238396138
-39393764396163376466646438653636663765623663356533353362346535383666623335343235
-62323438326433383236666666346261353238336239353665323261383064333835393538663466
-35313736306362663162626233376461666564323764376561663966316138343265306466613162
-38366631653637336439356263383634313665613737333938393365306265353035343038373934
-33393431656333623632646533393531393161356466393834383436306338353636623330373161
-64323166366539373536636434363534653437643937393866646632323861316332323162333030
-66313962363336316531316531383637646639343732316261393662623463653138376336633539
-66353862623864366663333463396134343765306531633637346165346236383438393635343838
-64343465656230633865663161653361623666393566656230306538343466323934623631373436
-62663664313566356561323166663537626630333264666264336666396438626131653436313236
-31373931373336633635663737396230353933303436323636613235363839653432646430303539
-33316638653836353838653836633032666435333034343365303932336630373437383530656137
-32343235333939666433393033396532353038346632393861333635353339333134363964313634
-30643538333466336235343135373161663536336165306435386237626566343438393036353534
-36363765383966663532393830646337386432656663666362326665646135333961623234393135
-64656462363365336464333537383530623565656361363562313637333265333632323533646635
-65656563643631656662363562633337613538623536323862653361363561393565353939396663
-64373438666436633166373239363832336236343364663534393565373138306436626462613431
-63623636306563653635373862653532643132666139376464633339393030343463663439616133
-62613866333636343866343237623465393836366331613035316362643735326238396138653239
-37316638626534356436363864643135616435383538373839323764326166633361326665343163
-31316631633132386237313731333566323639636535373133623032653639313331353662316139
-32346230363464306436333364363264343962386535353735376232626164616638396266393966
-62633130613733326661633731653730633466613861363264663438393531313638353863353239
-33663865303737383233383764623361303863656438636434326564653139633031653662623963
-36373961616233373938663238636232653136343434616163383638653331313163646161383734
-66303631376466306364666338623236396138323539356436373131386434306535646639646131
-32396531346639326566353262623837653166643632373038373561623634646230646134333364
-32623566373435613533626133663530396564653433333361626230383864313135623232376639
-30356632613662626634623166396164363539326130303031313531333638393961623638383266
-32663262353565386137633731373931323766326461396365373563616231623234646563346230
-30623735323666326339386332366433633934616231386263666531386130633632313037353638
-63666636633532323165653261356366333738333463323630376662303063663530313135323763
-65623230333263396539323438656536333961383065643561323062363361333763376234633433
-32333434376132356334383030613431356538343838393831633230376366663763346534643936
-63613531303163376233383237316161323038386630333733636336303931623531303836646239
-33353133643863376536626161633831656432636333396335356564313032376232346236313239
-61366166666265373665363461663939643531346665643961366630663464323930303833616565
-37366233343830386231626166393163333538643865373637616465336336313036336462633737
-30663839316366633937663932396337343061383965643136643639386133636330636634316633
-35353737383030346133376433633365343438393535663662623637633061656165623862616139
-64363566313363353638393733373931393731373564643866333935643533623734646262313035
-64376165643330396361663661636564383137353136353364623434633334396532656164346564
-33646534343739303636666534373631343939636630386533623966363033646239383637323463
-31646530323531326439613962636166636433656564643865316535653837326435383332303535
-66366232633530623838303238303134633166613161616130343234663138663839393266303332
-61393833383035323465373135323238343863633561663434306531373332343964643235393563
-62396339623164666137366639653832646663613166346334653539386365646265666236376437
-39373765613266656433383330323165623934666363333836343236613430353061396333343333
-34313834653635666238313135343638323531396636343965343835626132303030393931326534
-30613734656333313134623335626435653330313030633530346463343534656433346236316163
-64616161313761656131333138363666343939616262373732386238383566333536323836643863
-32613338623439356661633530306530623032366562363530306132343736343862323864356466
-62313531303530383831366636633631303931336132383235353430643630343934353666303938
-30336566623531613139626435343638363435386561363631393863653531626536393437646465
-66643530623664343433663764663032653165313732343735323562346534316436643461303134
-61333734373462613863343965303530303036353864396331333161313935393666303338656430
-64626135356561663930616637383138303539333463383135336435616630376137326138366439
-36376664303663363638313039386230643364643733336233303731386666663665383235633266
-36396365626332643066643337643462353736616638636561663138626434653363646633626463
-37633337346666346664346430633234633431656337643062353937626162653835333861356338
-33306236613061343137636262313764386233643063323732346334376562633935353937323134
-39643663346535323331643830383936383462376262323436653861353938316162343865316639
-37343636623937646366346137366632613535353262303838383630343666646135393230643135
-30383863633439363663656434343263323734306461323463333231616334366331633231363839
-66336538663263393831313963343733356162653362356265353536373632623863323636653332
-36626431303234623734303137656364323865663835343164336135666265343164623363663864
-35653363303335636133363232353961613366313462643831613035346561356136396338316362
-66363065333661323663336264653232373166656334663838356234633234356631393034613162
-31366466386162383563616432343261393161376561303264356563383663316530643463653637
-62623639353336343339373139306433393330303162633036666432356430626464653865306230
-36666565666166626434383832613462346639373536306566393637313265386531363463363930
-66613333383433373866326431666530646562333339633232373064653239383435616563633961
-64643037343964646132316265343866653436363136373863373462636430613263333931633963
-39613231623063653832303465323736333031636538323563643463643235376561643737393937
-65616430336334383039353935306363336138306166613637656234373866323835393134616631
-64626563363631623536636538356162626533393131396264653136366439313530373461323438
-64666631366235373435613365363335316163363261363564303537323030613038343431653261
-32656666343461393835383461363734633236336666316166636135396430663838383434393938
-64326438653737323034343364393066306635313831383263343130323264623639303432313063
-30326432626335616462613337643530343930613136633632656630613330666666316434396564
-39323435346461396634303837386164336538656632636562363564356530313033346435643933
-32623164356461373665333337623038663337356537333839303964373237366464316630613430
-31323439663835306337343335303066343733346334663264666162643264313663363132363865
-38326538383363653239646434343065373639366431663563626238363163626266373635373361
-35326462333962363164623836653738663162386534623831613063626435373965656133396132
-38373534393961323934336533363033306566643063343737303934303238666633366239326261
-33326336643037353334373136613264333432396230633931643064373334393634613463346566
-32363233623466656533306437353066646461613133633836356330393562663238353561326234
-39363539333436356331316233613330346532376366323130303333613361323830376131626563
-33663564383261333130393764376639613331656230336330333366663665623062363930383432
-30376434346161363561643666353534623237626136633061313061306361663633346636353765
-32616436313434383561373536396437646635373563323036313838313261623262313135363065
-62356530653936383634356533613832643666373635373538663133653764366661646661333230
-65383332393936666232616438316431636530623634363836376235373566376630376130633136
-32343637373936623334646261396165613166373065333034623166303762656135353934633366
-66613637366130643135626662373566653535636531313365326162356565333662353663356162
-64346264373764643936313337333731363763333432633733646630373031353930386262323139
-66636165393964613232396165346130386465633134303432313839313030613136666366633832
-65333331626161326636633333396564326434656237613931646163643335653331383135633734
-64343733323839373735346437613939643532303361373636636462633834316337313666323535
-66376439656462613839366432313266366566623835643663666136313937333266623862366636
-62313537613138316236643034393662323466316634313834623836666161613132616666623163
-34316631373164633139306133393830336431623763613435326361666632616166623838396661
-37366335633733613230613461393963353531393739326130613461363835343635656432356535
-35666464633839323637623138616461306631343362346437346130323164366539346338366339
-62396139393362363838653933326131626361363663633738366364316230386533643037343365
-66363066643463356632613761376637663336396232643963633739623636663137656137616631
-38656531616431376236386161313361393035306236326164613131343963313631383339646139
-32383464353431323338343230613834386165663930663135363361633834323037333133353037
-37666466623461636363306531613839623335656530633433393164393334663261383563646133
-64396131393864633930346664663730326435363232313236353063633030353364366563306161
-63353265656335646331636432663538653233643961343533323562356661366435636630363330
-66633963643263336337363437356464353338666361636138353732613465653235346466353262
-31616630373037643833356632646466663864386436636462373136613633383136616265386363
-31646365383163653730633064333066393661333133663731313432643862353632653266663764
-39633661633435363231353263313732326233303532333934386261343634396361396332363462
-61656131383839383166396637393337323933316435323662363465626636303266333965363336
-34616462333334646563643030626332306539643632646531383839393235393561326638386562
-66633130323233366234346639326131393536646462663730623735636537623863383137643633
-36616530356131366566636262636362393839386334333263626665613139306665383634643936
-38373365313164613033326238633964373334393439666236613433363335313035373339626235
-65663061346166616539616465343432383262346338396364623733353832376466623862313966
-63313039646332633835316462386131316230373332333137393866656536353030626430363561
-66663538396439333236656433316562623738623537633931376666363065636362346536393234
-38663736313565633335623861363938656562373032346564306665396264313333623463663662
-32306237346664306462373966663764616138346137663532366366323865333938396561363266
-39633366303737373130653235633164396439343438313836663566623433336337613162623037
-39623465643139346232396661636334656266326137323631316366343032643430383439316466
-39326666323132343433316663393730323362336635623265633465383330363362626664613762
-37326135383532366536303966313165386639613339303362303936393138353965366536653930
-31386335363161333436613530383336633662373865663066366535656136613564303233323936
-63366163333836393730393037313565663134623738333135383263653233613163323631626232
-31323765373163613231653262636233653263373361313862323461313439613962633436323832
-64326465373139373831633766383837396230613064663665663832363661353939356464323733
-34303561303030373062333830303835343930646166383765626236336531333537663135373132
-31626539343336306532663161636566626337373961353462353435386639663061346538663532
-32646135313364386536313436666431333137613638613339643839313732323035303339653965
-32363636373063663831636365383532633937636131663133613662636166316637643032366532
-34613238316139633966653961393634356562613938353431636164323265353431643337313632
-32336261656139313931663565643430373166323662643662363933653063303265376231663833
-30366431646462356639633032343762373537363936386538616137663165366364306164343735
-37626663616264343134306330653736346631643835333965353535396333626337376634383235
-61326337366565643335646666313236653131366230396535646535636636383836303734323833
-36386164393262613933363735636631633162326339383730623833653238396461383132393262
-63356330323037653534326339656435646463373137376361326662633261646664653462623235
-63363937333432346638633438396663336531623639393739353066353464333436326161306331
-61396138623039313032393934346165333066326663653439326236643435383637306537623866
-37313963303331363361393336333735633634636162653537323139643539643539313061353932
-38646132623466653635376265376165393461383863376362383934356238383037336562356536
-30663339663732306232613832346233363061343238306263313561353963363465353534663030
-61626237336564653734326236396439623361353037313638353336326130313331336666323364
-64643233363639393261376266633834376432363633626330353361386135393138666139306263
-39383536643435366430623539656631343537623763663165363462643838386631613432633436
-65343939653836396466383333333865373432303766663365343839633961633033316138346162
-65666337343136326233376133626638393337393937393966363236373265303132656232336637
-65663333656166326336663139633832393064363833646234396461303464636561303663653961
-63656436666364376665626539636239356364336261323961366131373836306661366564616338
-39333033356461313465326661383339663034613733316130316132326634663462313565323366
-64313530633534613132666664663562396436613064363635663033346237346464613635656663
-63303239333936383034313261616163643962336337376633656237313161326236616432366332
-33353736353430333334336536626165343738393732373438376263306633346637366461343231
-37333538346464363337396463313939373961643662643263303263636631396139383563623662
-37636662376435303663326164343732306237613537323430636530303638386339383131306261
-34653039653936366361623262663566323538623362376237633264363536303131643335343734
-35623538326233336363383761366665333530633733343631633262326562366162356533663833
-31663437396536643865346663643164326565326337613832643530316366386635313465303366
-38653633613966323539336466336264666464663736353336336431666337333131336266646363
-64653963343362643439343533383465303933373463626463633263373738313064396661623461
-64323361353936303965653434363239323933623163653237303132373865333366333032333635
-31376564653739313231393230366666376466346637363666386634313331616630323865336637
-61396336396366373537633761306231313162333733663465376332613030373933656466613661
-36623866613937666364613438626361633838306434306439333231653935363464383734646238
-30303366343438653534656630653462386232633265356665303561373237313735663363303739
-34333335323161326336383264323832633263336331626266343634356533396266663036356532
-30363539316136353562663631616339333563636238623432376666303338363435336366346432
-62343538656135353263633735353534643734643530653635333430633462653434313630343639
-64633831323266373830303266363138353938366132653465653935666334636362376562613733
-32616432316436646338646533393337333862313366656639663038353163366130353861633163
-62383130333938666538656363373431353836636266633438313066623433366361626234636636
-62393837643462326132366163373963666463353730333365633232393535613339393264376535
-61386633656163366662336361343961336666323837346133383463323866616230373433643632
-64313562663036613732343564363839613936623662383038653964626165306434393162373437
-61373437613333633561666262633465306333633334353064356664306337393335303761353965
-33663361646465663861306435626136313836353239633266303464353535336239343966363230
-35393335383637323832633065623830313663303563386131636665353339346665356165356662
-31396634343338636638353261316139633837653330623630313565393333343230353636613235
-35386266663631663431333533643566623536333031366438636130653736313562356466633566
-38646532393562343335313563376165363462373139356330383538393963626563656465306662
-64653630393965626566303762633435613038303132306439333331616531303139666266333630
-65313462633839653435356132306361393434396265613431663966393330653334613266363461
-39613762633830383861646139333866666536636634633065643865366634616536386663396434
-64363332316564333334333836396363313233656431646337313436623736646139326662336365
-61313331643865333939303064626262383330363866396431646166363230313834326434306534
-31366636353336373339306431626365343339643431346633353335643234303864326137666362
-34323030623635383331336364313061353430396533353539303633326333663365383566303462
-66323034626561666565653463666335363864363737393338623263623763333461616234633561
-62363937313832336662356231363530626466313134663434343534623433336339663964366337
-33633235616161323233636233313334373735353430396238333032343537353863343835396537
-38393032636539646636306238663538626338613534666563383135313534303531346433356161
-64666430323131373835303163383338303566616536363436323331333165396363383762313032
-64363033393434303737336662623531343630666664303262656465616335386664313064343662
-31346264326664313862326563623265656436663664623865626430643837323936646531353532
-34343134353463326532656238323436643262343262326232333365346362636661336566323864
-35346531366266623335633833303562376238303661383234646363373365613832366261326438
-63666237303437613565386633643466663066616631666532336265636262326134626466343265
-31386430306463613538363633663465366362373461383033393966663831333937316135356233
-66313661363636393635326535316664616537646432343939653566623761663938636137373435
-36333362623166333234623033383766323237306539373332326136653530633136393137383764
-36316535393330636637653333316238353535633661613432356134303465633936373730623266
-35313566326637333637343661333837353231326663363633313232383435336635663431623537
-65373834383562663861383263336234376133366539373139316330353336626535646433303762
-61336233356631633835363962353233306235353734623763393038383836633830663965623632
-62396633613861616333346430323665633134623138373434633164363933376534376332363064
-39656332373835613433623061633537323038613461656332663933323435366336343865366162
-34396463363737323734656236643038396134353430313962363933623734383461663131323838
-65323061363731356433623933303838336337323766653538356230623964356637616366666538
-63303834363464333362333262353266346632303062643666316332323133633237373334666666
-31616235663631303964383038343564666338323462663463616631646664396331393339646534
-39323237313366663666323437303431656666353535303066653436303331633739353033346463
-65346335306461383466646233396633666530626339323939346437656233393863633566613732
-31656337336466393363616364313565343939393734356137666238326532343166336334313236
-65343835646534633839666531303932326336323235636265323936303534626364643362376633
-30333363656537613432393335306666626264363038323534333530396262306166326566326564
-64306435373135306237313131623330373335353535363234336437333165333734346134653836
-62366166303661333865383266666533636431376237653232373534373633306262363965333663
-37313064386434633133363035613030396566636137666238313562353836646434653930353031
-65396564363865373061313736383963373962353330356639633438653433313030376666393262
-61386632323264386336656330646537363663343438663232373162383436396330386134346563
-39373164656134356239373935623662666637336333336462316337616639623361633861326633
-33333861373432613266613633636362353535623765353562363130663331316133316661396565
-64326235316537303039313036666237343636316666623933663037666263383364366231663461
-33376539323531353265353532643562303638646332383935383664373163663566323234653338
-34323830633066326562376637623231633634313739626635656131323262383133383063643137
-30623430646136623863333036326363363266666439386131363233386137306463303530353463
-33616332373537623735393737393637653332666635393536323532316366313364626165323063
-66313930356633373961366638643533366433653366383663306436663136376565633163326230
-39323533383035336635323861353466346337373265653762646561623861373063636364373263
-32346132626262303831306366666162366437313534343935373465633136323234353865366239
-61356632346265303338363262373765303639333738343166336135393731333161353736326630
-36303363663637336439336139346661643336303834643837313632623930663339653830306434
-30653238663663396465313633633639333038313033323731626665623734623630343766383963
-61343231353837383238343165316264356338663134373232323935663834343766373363336238
-34663263616332623532613166646234653536343864666261656261393738306464623535373230
-65663230633934386638343536333833333237303337626435386631373532663132613234393434
-39363166393565303763383135633832626432386238306233366664613766613037373033356365
-66356465383437323766666339326663636639666636623536653061653533313733313530383664
-32373961323966303362393130356330373865363835656236373265666235313835376265623035
-65313438363331383638306538653763346662333461313333343938376562663736386430343530
-64346565386133623362303936323032616138383261303561333966626264306538373037376335
-30643833313039363135616461646264396461343831393266353930663236316666376463616636
-65333664316535646438333430396631613864353038653539366635336337666462396231616432
-62613761336635336136396162633763633364343931636336306531313438333038393462323933
-64346162316363653064313032323839663832636162646262626538313939323032383062333465
-61306162333032313764663362323737393137646262313837323666313364363238396632363431
-31616665666136386138666538386339373439653733333664666337623761663630316237653361
-34636532313433303361356264663865643031623138636439383262353664306538643264336233
-38323538323265383837313138343936663661313731366163363939643066343435613566393061
-66303963613261663666313938663335366536386630363738323835323232346462383239333765
-30366436333132353561356138613338393032386362393861313533623931313663373034316134
-66633038383964383162353731313663656662316632626131363735366262316136346235356239
-33613161333432616462393939306633333936353732623339323762366562376435623066653034
-37613837656264656235663430356130363361363966613035303666356532663064663766316135
-31663436376164306330616535343465643564396362326337383431656334393831333937343832
-34393761356266616465326661643330666362356538316662316235626234323365343434363838
-31626431393332616435653535383334373362306162333538313236643361663434313766353838
-39366132323161636463326361346138653933656333346134343038353836336234303664616364
-35366435643866656237613236346339636233393434363061383432643361383735316633646163
-61643437313730666430613161363037646131393738366562643237613764343235303034346332
-38626634623334653261626436353465366133663934653030656163333331663538663130636438
-37393361663538653134313862626565373136393033643363326538636239366630363232653163
-31636138363634323339643238666237663161323434386431373932383963613031633161373661
-33646532326532386632383635343563663236383331626262613038613331303535663839386537
-32346237613032643839393234356162313965633566353437646634616262643733396330323131
-38376138646533366538653264633237303433636263353430633063656132353333333065643563
-33333261623363373337383361393732643338636161323735356336393938613763333236346333
-37326131333166653662386538646166373934326163373963346563373538363838306165373833
-30316530366537396563666230373030396263373964353964643564356639653233373161633934
-31653365393334636461393961666363626561376465376135353066373830643539643432363461
-62383338653937353537343863626131356432326136366531616338626132323161333564363264
-66343834656533326135326136346335356630613038646532303138663733393030373730396462
-31343063663539633436383861373066373335306137333335656663656435653834613932613664
-65633337346134643338643238343463613333386630343965393866373531313131333262356230
-32663836323062613038616536646163643061653534306337393862393339663065653737343230
-62633038613865653035353932376430643862363731636561623734386136636336303230303335
-33623238313164376331663533396636323032333538346634383235393337616334316464616137
-35333539613133653364356361613665373737326361383364343036383634336330636665303462
-65633631663563666133363065333135316462613834363330393834323638313837353032373730
-65666630653166363766643739663735303935363331333366613362653634643962653664333338
-34373734336438373038393031323561336137363239303438653338326363643236373830303966
-66663737316264643765623262353663366637623432383866336137313231333432303336326462
-35353633373933623630653230346638623164333562633064373661636539326363323464653235
-30396539386630656137303564313266313461336531656232386364633632663530373837303964
-37643038303437343631643365356531633630393030643035383561363364336430646234343765
-34626431643733653536346234646134386136306464336365333034643361346130343030383563
-62336539386363323264643666323734663763653766393632366530393738633230623439303037
-35646432303732393361636462613861373334383736396664353536373836623031393461303938
-39646265363864613165383738306361366239663465353963663431363465316362616633356434
-65633963636362313965316162313334323865313332643939356231613136623230306563363234
-62333732353839323630376432626430386562376334623566626364386532353266353262613865
-63363438646333356534383762636162616235623739653535333038326634663861663363393536
-31363233346232323264353638306161663931643162613562623662356265303039306366336336
-31653162636664383361363838613061383238663636326235653239626663346362666566376135
-63666130366561333630373135653064396665386139333534636239633362333266313737633163
-38316161303237366362313437613063363133616463333361616236383361353835653531373566
-61623065653032376435336137373033386135633039656632623662643762376362363737313630
-34383335656566323835346336373932663834353837323230386266343933643336626438643037
-37346137333639356231666366363966396364613632376532363130363566626330336237613937
-64353764383732646332396161636335643433373738353636386330303234653438616662313132
-36643861636566383665616639386433663766623761343936363139316636633365653534363564
-32366434633132373334613263623863626261663066616639336564323261393431633532633038
-39333533626633663734303933346134396332356130346138373737353836396333383661636337
-37313164343662363031326662373935316433643232333539623134313038336334313538363932
-66336536376531643639363266616430646365656235396539386539346662623739383037663934
-61613832303533633230613433636632363061626165633831366434393566366635313363636466
-34626236626133313935666165323164323736326431336565326131383637393938306366356138
-35333737663330353431636132356464633635656135363031643735336565303864653438616165
-39613535666164613738323038353038323461346162306164643035636633383937653738646333
-37346438353734323133316632653361343138393364666433396162303531386539643733393462
-61303733333033613536666565623234613939366134353937323638343464383366643035316361
-36646461646437386266356164396366623437616165363238616134313166363266643463633436
-36326138346638666562363864323438623238636432303537313034646561656665666463663132
-38663233383732643837356566383330663062313333326361626339353432633463353735333163
-39613465333934633166653231383136363037656466313861366562376237343236666331306132
-34383364373032623934353434623936613231646531323536333939373033636130383337353631
-63326566363663343461366665303639663539336534663432353665373737353939396531666231
-34306466316538633231626464326330626337396139336162383632326364383866623631666530
-65313733306532363461343732663637643931316235623461366130383963316364616461643165
-62396365316230626336313565376562316466626337633738316638396664303863343334373137
-35346339653739386337373630366138303231326438653836396637303762643836386266663862
-61366132626131656533616464663930633730653535336537623639376234393265323631316238
-35666535376537663131633961333235383932303830353736623239356430613137383337643936
-63396134373962333030356637663963666634363938343933663561376330646663323336373661
-34356231623766613264646233636231306239393230343636373538373861326530316335366164
-36643662383562346532356239643961646332373962306662616339653732366430353038633036
-32353730313630376639326361633538386130623564643062366333653563363563366434326464
-31303332366465643763653030626461303434343431653832393864303566663930623239353133
-64373666373730613636303235616134373666346365313433373539633234623164316665333539
-63623963393332373931396534646338633966363063383833616531313361313263653937663962
-61303265306135623138613566623034616134393937316237613236363636343731653465306662
-66363863313731333464393431333838626166646361663733333536643933303531633134633639
-38636337373037623135363264626232663038346330303037626638623238333961363932376333
-39643866613465363934623362633534633866306632663332373333373639653533316464393336
-36333333383832303862663530326438616230623631386664353632373637613338333430366561
-33316162363936363766663566323735396661633332333834643062353063663832653231663166
-32366364336661663836393866666662303264313634356532623439323234343039323865633938
-39643135613762373734306265653763383937313032366533346165663937373162336233383134
-37613663323562383435646162303366353261333665303334343530386663386536383432306663
-65336365323839653036333535353762646239373936346566646431356533636432633362366262
-64393166303761666538316364373735376630643365346665353637326634646534343361623662
-33306339396231623938626237386235396632623136663835383265613738393163363632336531
-30356430383133616561626462383833333737663733623562393236373065366136643765613264
-32656533623737616137363539626231643531373639313338643965626561396538656463653635
-38386632383163303937303938666538326238376465316435313435316335323939346633346230
-33393035353564623039356635626336336235646138616237373465643432623336633364613736
-36373666326633386565306665373066326331333736666337353734376133323862336631343763
-37616266376638346430303366393562323566323835646663393637346636386133366238383166
-64323665666361343735653365646535393833616462653833666665666366613164663762313532
-35616362383334613065383766383130316261626665653865343565623031386532353334303933
-32303132313332646531616562326134393235363464323336626135363139666236323739393832
-39343262306165326338313633616463383964306230653236643938383562613931313532333033
-37333262623664386262336163363233343662353061323339376332616532623735646337333965
-63373632323131336139326335646464313232626461333765376661323863306262656532666661
-33323964323561303430636431363331663636383033386533326536356633303738633666343732
-66366333326535373161636665383965303362626266643239393332623761623031633139386262
-39323439336333333162663639346461363934326666333037663438313165343262396335653833
-64363131386435653732303932666264623066396232343263363535383231613639316439353133
-65326638346264663863363763626134373863353636326438666437623064333331376330393931
-30613936396232636639306133626439323363663835396539363335323732613936393162326535
-33323730626563613737366261666165623362373239613430303539383931353737333963316164
-36306436393131373430396435613063626432356261643137353362643131613763643736653564
-39653063633936313336383538636139336463656264353433316266306465396536623431343737
-37396464373066613061373633623064616134373464393439303537613734656637373965643237
-37633031386464376564323562356461363465646361353638643663393133623435336166653261
-66303336313265323666366338333763313032393262613337633163326134636261643333383333
-39643964393763613330373838336636616132613962353535323065643861326365363839303361
-36393937376636306636383363343332666162323861383938623631366334633633646563346333
-34663939643963333563633534323466383534646661343637363134363038323238626335333735
-38656432356531323962643331316131333561653762633533633962356264306466623565393465
-62326134643839636461373562346430323832323663303461336430333133336163666337316239
-36363161366166336138353836633038326664336266636165353965333637343866373163313264
-65353130326332656561396562333962313733346538643333323361363464663536643465373334
-35643661316262633732393739313466383431313037663935643432316633626533313063353933
-34356130626165353136666165313730643332376232623064353738303962633432666462333231
-34376136346163393335316233333431356665623162633065633762326230326133386164663333
-39306562663336383938623164623934613030643163393337376366343636363532653338303462
-38636634393632343336313663383137366633363763396436663964303464653132653831343839
-30383564376132653663376563373234386534326563343137623165306565393435616332353066
-37316565653237396634653338313337313966303836616164613633656233663835336666373238
-34313433613966396262323131376335646435323037623962666562353339363163663366623234
-31396132393166636334623832313435613630656461323236326433336132633364633562636339
-33356339353561636535343639663461386137303463386161303931343763643936626361346331
-38616531643663343831303135353332663932643034646636336331623531656262616331666134
-33336633616632376262656664393663613635343234396261333034393731626566333036333831
-34356533363037316461646236333233613561643161373962363435663136363338343166323033
-32653864666632393135616438656363613836316138303334666364313766613938336565333261
-32373264306561376138626330666665353430353537333364643030333061643335656232356538
-35653631366463383265356238326632383137633764366334313965623632633239383132303632
-38623065633561303136656661306434636166646365386138636634366333393064396666326337
-38343633393730376136366530303936373765666366373237656430366334303862623732623930
-32633732613065366265623264356336633939386437336264333931396462313035613239333433
-36363764633032343364643266396165316638333737623833353964326639343561636536333037
-30383362313737333765386331326666306338393530373564656663343663653630353261363766
-65383865386530393064363563306265306163376331323030636436356665363736386330656633
-64633961343130336162393038393031663132353338636233333230643034306462353830383961
-34363136373134363065353931353532343334313436666461613863323837343063383130386664
-61313533333232356666663062623136613365393865653136653966346263303531646432393430
-32646536366365313834316333636264636261343364663362653134643234616665383537623338
-39333630666237326130333166386536393830646631333633653261666530313861613138636162
-34383431353465303337396262386435663064366665356632306335316435616665353637336431
-39393038373139323631346537333163643064666563306636633731343339343139643736666438
-61313966356531383364393334613066616638653165663233646632383730366536303431626563
-63343933646635613039616439373033613637356633616137666637383833633336666563633438
-62396562343738323264313036626535383738663365623562363638653565363735333430333365
-31613031343137343539623561663066656134343562393161613030336131656162373363336162
-34613335653837633265393362393163326565336136386637653833613266393963626139323534
-65633961323632653530636334366662343762313663346162613137376566636137616134633139
-38386436333338323561336630633336313135626262353464376564386561303530333732623563
-30633663653730366137626463373933386333656663656466303236643438646231366562626163
-31653666396438373662613433343666363931663133373532376532363938633437383730616663
-33333037613338336630393336656137343336353831313162336634396337363134663036386639
-39666338383664643438306137363134376139613764343062356633323762383463613235363564
-61396162363334663664323538393537336666336330636231633231333263653134633534373366
-63623864663233666261383539373434633463353432643339646465346630333836356338616335
-63653763306365333263373761363332323830323365613430326538343130616364366437303765
-34326165396433633836373764363638343337366335383338653062356432393163386633333465
-39636363613561363732623262316135316232323239346236323930313438386161336466326465
-65653761646361646563346562336434636435386133393531366239653530346466653934353565
-37646565653335343937363736663135396139666333613732633235623130623338636434333864
-38396234313436666232633265303930303835346133343132653734333038393936666636383466
-38616633366139323936303634633464626132643130333662366462646362383131346430303837
-63373736616332373361646165346637303661393935663030653539623862393936646663613235
-39336665376137656433323235386133363665613837626232383130653831303738643135613131
-34316230626332333431383239633833626431653035626437396235396163616666343463336266
-63643961656139316433653265663932633932303238373037303462613134396462373335336430
-66643764333031393663383065376665613034656233613164663165666135323566383134646561
-65313237666166663133376364336438373432613261656265346665653532383539373635326132
-62366462613133306566333466613765303533323361343130656436616638353264393734643662
-65613964643039626161666265373537383366646135643837363239313433353937666132376436
-65633439333866333038336438306132323465383531336531316138316463653235313663346565
-36393835643066643132316633666164383065623565343837613936386165333261613331643333
-30363763373065326432353730653732313235663235336436613436336132653862306639323434
-61343937363566316530626236653637626135396230393130323439306332323835623036343835
-39616364373163383361336133366166356661613964393964306264623138613264353738323363
-35326236383863316138373131613130663138623661623634396137646263613337323130666531
-61353831366465393939366431623063613633336334646331333066373563643664613261666633
-61646537326566366431383436376130656531356266316235633131373065653432626231623038
-64373832393665633366623234313063343738396332383930346433303465336330336264313437
-32336362663734313663613630393065386564313362643934316164666431303037633132386164
-31383935373463323837653037616231353130666332366638373263663430396634306661623133
-32336438373761363363363363643437666438653933663530626430306461346563363564623863
-63346561356466396161666131323561396663646364393534316334363864383563306161613030
-62656133396138353139353231313632633139623662353530386564376435303564303835373930
-30366663313635303063633438383764396539333332343538313530393038366462333366356633
-38636335373235656536393732333738306632663765643764303130376439353438653662613662
-39373965303033333630613932663964393439643963663530333236666566633039376136373234
-37386434613233396430646235363831303166333632346339646132663336366665383763346337
-33346532613134373034636630626534383261626166313433653937373439383535313563323339
-32303265336161323030666533346237353963306533396363383336333163663135343966333132
-66653030616165393338333862636162376533643136363761626565353638636531316239343937
-64656638666133346433636635653633616432623634363964653135316163326562636632323231
-32326134353333663936363836636436636330643030623964663833323666376265626166326337
-62666236656466616335346565306462373935366462326533343132333239383733333365353137
-39323538363463303738636434376366323263376264656465373061386438666363356437373861
-34643939366465663939656465306663363530323930623062316130613236396138643836653437
-33343836333533363033366464366233323864636634656131663064366134383033613230623762
-35323835643964353138363139343764323231656231373338383466333963623537373066323432
-36613161393137646365346562616433636534643363643137383434333530613131303063333032
-6163396333376336646165313439313133343162373132646564
+63386137393162353861396665663537646434373734646137313063366534633131313264343534
+6530616665373763636161323132653731636465393336330a333530333764646261303732663634
+65323837366636663639396262383466326432636632386365333836353436376130393538613461
+6338373933633833320a343135363764616239323137646232306436326665633336396466366165
+39303932363334396236356264333165613439323961623736313531613064653339613835613866
+32633135656164663962386664623062353431643833653636363630323264386661383236303462
+65656130333137316630613061643563393161346362323863303063356432666361636131643239
+38336463393664326663633736633763646338376666626335396430623837323036343862346662
+64306465353235643561376161316435646262623530636230333637653234333063623063643036
+34323236613834383239343462313933323861623831623330323736653136313534396333616231
+34333761353431653231316537643366393830353862613738343230313361396265326334633939
+63646466346533343836636232623965636465626266623061393337666230316636373265343631
+63363836386662393432396639373637316331363765616430663631336636343235326362663466
+31376463666232306666626431626665383562396664333830363662333432353232393330653463
+30346165313130623561653662323666633034363365343431343466393561663930626161656666
+32656363326233656565363937306133653131333562313534313737316363666136333265396533
+62646239316161663534643830306630373233663035356439366239333465336232383738623962
+64393561656438383239666338666566643537373235306365373531333638333133383931393164
+30653137313935653634353530363834323638366464666663353334393835333035646366343234
+62376566356638363337333235343232666464326638343564613533313333376138616538663337
+35383266366532393561666165653234343032373235633365353732376531333036353164373832
+37636263383462306666306664643139626565303166636566313137343061393963373564393632
+65316633643036646230313131623237393736303966323439663365313938316133306263303631
+63313438323234616330313337643865623830363234663262316339383635383335326336303936
+66303639323830656135643932353238313837313834366363616534396363643132313039646136
+37313966373932303230393032363631333631306461376130666662313164646430666535613732
+36333265383662333436303233303863326639626433316334346638356239663665343134613633
+64363537336439366336353865653433386331663666613461633163336539356632326137323966
+36333363353739656362653466653932376537633139303536393335386632623965323332303331
+66306136316164623664303935313863363162366566653537303332333036666264323937373834
+64313330366432343566646136343634653439346462353838333934353434313434333662366366
+61326264313539633332343766306333663961366538326432313666646332363161613734343261
+65643730363362653565373062343462623534313936653164353333626561373333393034363335
+36303666646339333138326461316564646235313530353132626531323835343137383736333834
+30336265666134336264663464386465636663616362396161313963656230666437643738666665
+30353632363039646463633661646537346466323132353233393166346439656237333161313766
+31323061623265623133396436386332343939626264366165313564663966313264346461613730
+33363263376562626130643063303066303638363733646365303263633066633039326166303330
+35383665623631353931363363643936353133663766366165333231373064306132666537333938
+61616630353864396231373534633261373439316437326364393437393339323164353232613063
+38656266643861656564643965653833643234396132393839626637656634623230663761336461
+64383962343535303838643264653265636536373031356639613839306138633566333037346362
+34323838373463376436613434303237663239323736636635326235323563663833383338643561
+33396261616436303362356264383461623037666463336136366538633334366137636661643130
+34306238363034303563343861656534616133336538366633346435333632393561393665636563
+35666465356533633765396235363732643439353534326639396530356631633237343865633636
+36633564373533633464343736666133616537396464303535366539656130366635646330383162
+32633432653866613830313564353734353138383163396566373432323633656331613839383134
+35363531633030666133663238356433343464353364346639303064313431616361383565373132
+37616264613863613237313339636432343130623338323830336162343830636164396465646261
+61386561356533623536373235653963336265373464633764303561326230313138616662363735
+38336161333937646132653837613331376337383238636435633566393263613636633365386564
+30343966623230643932643633646566303337353034353066383532636331646632613665623537
+33303037383562303432373231356139623763326636633665306166343563356331346564366237
+61633731363836666365396561333866396535376365613865373337333266363335333461376262
+64306162303436643165663365373439353233323630363738663161373931636332643365343464
+33633731623536356634386664653532613964336564633834386330303262386163333739663439
+31346234666531656238623932346533396563396534386164656535326533363566333062343737
+34656633643630313663646332663562626463323833303165643435363861623663313639663062
+64383365663838333934633634366461313565306264346566376130343064663966383364646462
+64353864366562613033636631353731343433653537653934356438383066396162356333653761
+37323532373866613136386139326537623838353331666466383765343165336264663232623030
+66356437396236633833613738313334353134623561336539323431636465623463323732316130
+61393939653831376537346161343735363932316337313830326431383531386437643061373031
+63623337666562366561336431623738373639316464663138306163316361666133656137633030
+66366464326632613532363731623963376636333334326334386434363565396137343061636130
+30666335303939663535663833343131383636646435653131633662313262623961363038303665
+31326338666535376132353331323338373466663066376338653231643935326435366634393439
+30383365303065303330653761646436613732356438343239393830313764643039303466366536
+36333564313666613638636639663266633965656133383133656165393361656239343865373562
+62376466323134383064373936356630343739306561393834363662383061616538613762333237
+38356365303637656237366665373964626361623866373635613838336363346662356264323265
+63633031643336376561356636383062343938313863373035646438383338363430333661333830
+61616266343230336461326666653866376231663964363039303263336637376635623437383736
+33353239343966623633663261643839343933623039333863633662626365663237636631643162
+30626234336431363462633030346638623761336437663930336363353165636265623631623632
+38613339633034363735326336313265306337643232353231356666363839663438343932323530
+34613430333738363438613064343139303361613562353961626137643831636339636466373936
+35653737626361663964346562383531383639346535396635373130316334323266313832336330
+62656566363338303432623434393237663133616634336365303430373334343734636438333137
+66343565343138346632353562383730336437313665386261333163343232666135376236343733
+63646138343332653766363465303433353831356562343739373731326536633966346364356137
+39363832306336383637336439353638613937613436306635356165623830313834333162393233
+34346133656463333137666639393436613731663136306336353565393530613835303138303234
+31653139636366393064623339333231303735376332646464353037663964316337373335313963
+36643363613737363637623236393731356365663361306134333762323966336633306635363637
+66366531326562313933646565373033336364393333626439666135303136373334383263393661
+66326431313364626134626633323466653235353635326631633435666136643065313766623664
+39336264376464383265393562666164353866333338303039313032313233313764633939663862
+33323238313237333561313335613239376339336430366531353261313537336436336662363030
+31373830633338383661373936643639643630646139343035643336386631333863633365643338
+33343833633930343138303537653866333462303964643162343166646538363634373063306366
+65663562366564666537306437383134303938363435663462356435333634663937653236646539
+62343536656336363633366238343635383163663530666538383838373661313033356232356639
+34323436386634663462373561333534343362626663633939323061323632623836346437303363
+36636237663935646262643339356433653630636161643030376232313635356362336132326365
+35353666343064383366313362373837396362653763643962643565646565626664366237333561
+63643937633238663836643432613136326135653362633961386135306137633038383839376636
+64613764313364333230346164313831336434363938623233303935616161623936626234336230
+62313362306231633435633535396233656436356632383134663637343563636637346135343239
+62663138663536396438646434616230366230306663373339333665316432653833323339616639
+62323363356331613731646364646434373265643931303134336662343264326166646438346563
+31316135666130376461343535356363313137626633353861393132343839663865366566646665
+63643130383736366535343164616135303535313034616664373930383661313864303263333263
+39383565623062353161636464383962623265623036643735636664626236313564366235623637
+65633864616266393866313930313632656662643464626539363736316439303630333935343332
+38316334633632343730666436623736646431343035313637616335633865326266323433366430
+65366362613734393961316362626465333539333438663339623863353664366464323337353331
+34643666633537356538653762373733663831343638363966373466663338653962663436343566
+34323066343365303464313734353761353530656262613864613532633565396535326639346234
+35316665373932366137313362353038356538323739643064666465343136316264396362666530
+38373534356362353237303862636535326233373838323230623163656538626665666530643464
+61663532343063616431323037393564396432643137303762633865633537346438623466323736
+66313363613764623531366230373633346331393930343639303361383563646337636536623061
+39343036636263373264323763303238353136333735336438356634376463653034623364363739
+35383933663663396430393063343732613731656365353832313938353865353232353066356331
+33653137656234653332373631336539356361636666366335653831396535383862333338353164
+39653932326131386563633034623431633130643566353037356261336234653036613663366662
+62303461306664376665613634646534373435343532383861633462313132393464373035393131
+39366138626338343137613635626133343934616234393165663865633933393061613734353165
+64633430666265323034326536373834353236353936363263613162623964373635623431383461
+30613334626561613666663332346335653062333263306437343336306466636166323738646666
+32333466393964323536656532616430363932313738376339353333393139316165313531653765
+65633032333533613932366635363231333131656630653132373035663931626131323663383236
+61363939373766336663306434386331363734376136633761666637313337623831353861386534
+39323637306432356635336662626462613038663230353538313666653665303136636335643965
+36383862643839613561303538393831656235336165626265306638333663613736306639366364
+30376664383331386465376333303262643733333263316465383635336463653032326432356533
+30643830323231353465366434666439663662316231343333653536323263313366636163366639
+37326635633261633030653538313363653833643766303737623233653635316464616637396239
+62656639633736346462323764633661336538313766333932376139323363353038643965313331
+66356163333163613434326364613866633165663430313038353337313834346335326631373634
+66316261363737656261653838336265366637633334306335663462396262663036323062633061
+33363334343462653238336136653936636134326464343539316266383862366139393835613333
+65303638323462613565656236343036346361333239653930613364353136333162376230343531
+36616534313663656663326466636362393266616536613036373764346131373936323833643666
+34353266383238663963653830616134666137366433333861643731636663333065653030656233
+37306335316664396365653432343731386132353833336161386638656639316437343337326137
+34656166626162316339326565643335336434386636636631376535613162613237376463326237
+61393661663136626431626537333232363631306635323365343739323166353638396230356135
+31623262373864343536343636363062643831623962353963636439366563626539323766363834
+64663566393632383830313866343936623633393234393962616134653064633664386162306561
+34313165633835643535646464333139386339346533626237636532623833393430333937383461
+38326531363438653061626562303861353038363630633138666639643939663462623235393532
+63626164336438313166373536623262666662396430656266306539666432396566663233616632
+64663530313433316163623135383937643431646563353237646530363930656661643333366535
+31663164316462393334643833636436656639366264383863363238653833663930663763653333
+34313137386365323539396263656138383963363764613537626538623039323261343333303165
+33376439656236356539623733323439643335636130393865383036336533363864633732383532
+33363734396635646237393938376539643963323565656434396532663266346339616264633064
+35396435396433363765346661383461393266363538666131643862376363656261666561316534
+66366165653136356335623537303564613034663639373062623534363039376661623561616163
+62616335623237386434343766393138313032613631326262363163653233356664636663353730
+66336339643663633166343530613430616532656462373164383437623432653339613361343533
+36663663663861356231653362613461373837646435663332623866363234363139386337666430
+30666433323763356564323336333135633537653566626366393138616133313937343765373830
+34356539386236393461373138653531643834666635383636346561333136626335376163326230
+31393663396264303366626434333166323137613030373865653038346339386562383062333231
+65323264313031626432626133636535336464653833323630623335376233363265666265326632
+31313262663137336433373839623132306230633639326238326266376566333663633065653963
+37366531353263303633376234363138336636666132303162323630376434613337666438646531
+31636566343238613266646132303633333662323466343961303237643037333366613535366632
+38336331666664376438356666633235623038666264656137366238323238616331363631303764
+32313731366230323232636332383163303932643961353237386337323734366331323932653630
+31313034373634636538323432646634613865656166363330396234386163663330623437363061
+30656335633831656165656630313733303137333864356239383439353835346434333336353636
+30313333333930613061666332376464396437393966373732623532313539643763343837383863
+66343162303239366264376263623839346438643238643130623938353632356661393531326532
+37396362613233336164393561383466623332323133313230303637363962383831643934613262
+65323336633765323535346538303163376561376338393466373835346162363231623430353266
+36633339666333366131333265646261316266353632383762333535343432663962343965336133
+61373236313638346236646436333531656335333362653535626661656231303963336664356237
+38343736626331343236333862353039363633306533666364373832336236303032316339656361
+30326464306438643032666230613063303834396665376230316430373065653766636435333964
+61303931366362613830363833323938376261396165333937663634653264336666313130366563
+61346161383535633534316531383535616638313565666663643762333233373336353833353938
+32393433656466383762613365623939356431343462373932303134663563613832613936383631
+66643233333763623037623865636166626231346661656434313433616266343164353836303634
+36613630323965663965336633346237343363313938663830663561303130316665363563616661
+35353061666431633031333339333661666536316263323830633934616530393938396531653362
+36343433316231383637323965323736663239333766316464323739353361636365373736346135
+38383762663735316261353235376263363333383836646134393461313237336237306265656631
+61303137393861343837636236323036666535353138343432373162363633303766396338383634
+66363338643666353931646433373761393938316564393930613966383463363037636363346232
+39623164303038373964353338366436316465656563656231636139663561316532623136633666
+34636430373638353465326139626235373938333530383338343637646636366638636139656139
+31663536383936636663396661363138613431353334663135373263343265346533663766636237
+30613431626235383234626435656230313136363463376431353966323762316261353661666237
+32326465306538643265373662323033643362343361323962366263376165343837656165383165
+61353736303139326230636237303865306639356234663334376134643639626163353632373836
+34623837633766633038636538666461373339373434343737373066663230393365316234346538
+63616139393365306262376138346630653634643139313033633535366236656263653531313563
+63616130313834643131393562646632336366363534366539373362313836343135626463313262
+31626233656232303066313234656234306339616661313963383563393466303564356135613738
+30663232653930383339323566313364636336346435333632393162323930363361643965383462
+34643065336137386538393836656137383434333232393736323534613931336234663663313639
+63313161623863373034666630613263373832303536336338383830623339656230613066346230
+30383164356665353165363239343365633665363261336332653437626164306132643961313365
+30336462613831303363373262383331396134613531333662363236393538373730383838373434
+37346163373438396233613766313531336234333363386466363535626661303665343662653530
+35653830623938323863633033326230336466336231393737663662373664613766363561383437
+62633061386363646165646339303632323530356338633937363638376331366262366466623736
+38653965663234663065656565333066333364643339313733653138613238383635356237323532
+61643866323031633431313164396362633332323366636638306631393539326237393733343336
+38316161386432646636343266656339386435313533393835333533376539373164626438353538
+64656264666462633532663138356461363165646538386132396566373736313235666431623262
+34626638383132653463666331373466303663323836666361633439373530363037653266663630
+61366533383263396638643865333530663838303266383864633934386338386163303939323763
+38366466353630336361346135376461343562666630643639346637396430333663383865393237
+65633633653131383233623231383932393733313961336130636163373366306439623638643834
+31306466396166333135626139356639393030323938313163373236386133653438346339626265
+34656231616262393862303163373663313335393931636261663065313934303266653533366165
+65343565323538333530376130333162353463353631303430323061303839623264313935373035
+36376363363666393061333138646461306461643235343261303131396233656162303330393034
+64343862333631653633626366303238646165623066366533306565353362633731313135613865
+39666634323963633261383537326131333038633030646363363834323335303464323366363765
+61656430353330633534656531643335633939393637326662333133653638333462643639653636
+37623464643230383861316262333261383830386564393761336365636161376165643633663665
+61303332303238353937303038306462656533643464623636653935623161313466636437613630
+36636634383539633930333162306334386334323433336331376135343064366533333931636264
+33663264393064326165383533663066653736633961643631336161323230346462383563383332
+31643835666462636163393465616139346132393835323161353565376131323436316666643363
+39336662373434613465353036363264383930356263373466336634383439323037356462326461
+66633536376432656662346166313634353137343535373562303433353437316433326566643736
+65363438366135316366326431333936373039623331383761636261323834383963636639653161
+39323965646464306164366235623733386531636461323261636662313062636261393065616262
+31633131663336353533363734343434356437363139643530633266316539373734313138386237
+33356337353539323061326536393337366539376161343039656231646361303633623464613435
+35363166363665373639333632376231386432633433383664646635383262303439393831356136
+63353966363161636362363230383864313535653833646234353066326637383862363063633163
+37653265616437663036363965326339336162663432383164653934323038623436323233333531
+36356566653838393664636562643237373930396362363930343134336436323931383564633763
+33613862313337303735616339613765373765666431353263633638393530623939613338376162
+38326131393139383466613239366533383664323762616636646139333630316432653261613736
+30393631366132383934366262333430373236633838386130373737353363663164376433336232
+37656630646137653839633866363433656637393963643737623638333531333030646430313438
+30313362663932376239303335366339363235363030333564313732623933363233656132383739
+32333233303831396531323237376634343866363638303130636431373362383037666631303233
+37373131313962383836386535646339326563316131393235353665636465643831396166653933
+66653832623465303766303635326631333636333232303131393066393432383438653638333864
+31343133343836373363316539613633663463633935653364663763636633313566383234663661
+30636532616663326235366337633461343030663333346635396231633266633339666332616662
+35363036626637313538663566336134343532323134303330313661313461666461353564313466
+34643435643638636331376531653239663835363865306534383565373830323831326662343730
+62623365616537656337393739333864653434316461656137306466633536343662396266636337
+35643734396532616630383634633165343038643233616661356334323362376639343039653064
+39646165336362666130663363383761373436613962613237366530623061633061333963363333
+63363862313164336338656564623034363761343462303730636530643362653731653861653263
+37633831383363313762323463316366373230633066383530643730336232643439346239346137
+39386538646633396363366365636631383331396138346363323231336561336437306339386639
+65643461636633623432386166643837376266663930373764303835323236633762386263616234
+65626535613134643062343639616661393736353264323361353332336637616334333437343865
+30373166303562633430363764386330646537353233633030343565373836633031396430383433
+63326332373934313037393239326565316164376332623633323162333330613730356364333366
+65356636356662633066353366633035356231666134343634393232343437663036386133633765
+39313031396635396233623863626534366532373734646238663739393464613466393464316439
+63313436313066393139313763363330626466386464636363333963643735646666663933653564
+35396130613265623931663061633266383462383532366434356534383733336136653564316435
+66643065313032353535616366663435313861656361376637303066323330626163393761646635
+63356163653639613139636434366461303939656631306332353365663361373031316137306231
+66306666346633666330303639313766386164303837636236316539386534656232613231663334
+38346134333238346166356364376238323537363136643437356432373063343632303636636363
+33353438336537633234393036666437333366316439663562326461346161343434653833383937
+66303335386566626435336434643335303764363565306130393833353263323739336465376563
+35376534653736333463386330336537356133346363666162343331306138316436336433333835
+37623564613232353433646439363537323331303437316338376234343536653236353963363063
+61663335646666646564626161613761636136656537666664346136323363383466323639346138
+32666437396532643837666562333330333739366666343564313763643738313436643437643831
+34663061343962373861373366363361346333616335366264323764383334376465383461306266
+31386639383634323736393335383532336161303234376339383434396236383261613332653730
+31303361343330653162666561373139303139323164393963366363323138633631383034323938
+32303632303637353862386464616563616638633165663035343461356266396230376234366136
+39373663303932383236666337636432393764623231383266373063333137383932383836346435
+65393038366362653539383161373239356231393334333733386235343462613138393937326335
+35343765376166376633303337316665366565326566656663313430623865643932333437333035
+33623864383865306431613964303962353165383938646465396332613263323566643566396136
+66396234633761346637326564323236303637373665326265316336366339643831306263303738
+65643536386439666162396139376534636464623561323237383235626132653065363236306363
+66396166343866343334613061643733373861623534306533336133326233343737396539336535
+32633338636133623939363663356533366233653437353332373336653335303166653866643635
+31376438643564326437346564333731373535663932633531343530383130396636346230306238
+65646666333034656436636332666437396561353031623333666334363566376166626433336637
+33626236383661393431396136376335643834306230303133353461366461646632343439383336
+38343734306538333266356132666338386363386433383837353536386238356233396130353834
+63376465623733323334663338666532383735323136333962636263616436613762656636646364
+30346230343635373463613330313032343334326635383434613861343834653833626139313765
+39666664656336643761653432393630353162353533333535613663316262616139373534643136
+37343531383961336365383263393530376237653564656364346130393636623534623663646466
+32363939663731353663333637356634643538623438323538343436326361643261613763343438
+31383434653664306534383731343136373563383433616632353165393532353163336165633733
+61643365343832653538393562353965373330303039653630643862666662313731663263393761
+30653461396561636532393139356362356261373438356637636238313061616665376530656432
+65323530366334393737313637666161623636373735336632356332666430353634353032393331
+66623035356662363162353631383366636637646136643530346430326436313336626134386235
+36326339326339363839653938383031343337396162323935656436666236333765636539336664
+34653564333732376462623238346336333464316266333738633433316531616563666237356334
+35663438396234616566356166396238383261356434626639393362666266353362303631383430
+37656331636538646635396435623033366232396530353537626138646664643239376163353437
+34343361313132306333343138353362646534396466396264333031316266346633633435313330
+65363165626133313238396237613239346237326436326131666634336337653530343131626465
+39306438333234653336643862663361396363343130366339643064333030346566333438323934
+35393466303336363139393433333938336261653731373831343033383337316135313736666565
+37666633333136643233643432373439363035333665616330353637613538393363393831363630
+35306136303234653565343562343834396534623763666235623035633665363330366637626630
+32333265643461326131363434633362613539633638303433626533633838383735393830396266
+35666539333934653763336635363932616339363639326235336163653738643436656137643539
+62343130373562386563656334353365353735393464323535653836616361376436346561383238
+31643436663339643632366537363834326432363039353633636334313839346231343331313062
+62396139326334653430363366343163663730383361623737396666636437373764613631663636
+33353661656338396336346636353432653763303434366333653931623762396535303434366162
+38313338393439626231346439393236353465386466613738663863613061306266616434326338
+61663162363937643338666439336661373732326363316535313538316532366433383562333438
+31396266643565353265383933386563633665376436363234646365653163373634366331336264
+38626633623031626437343539383739623933613266336434313563653230626636376665663064
+64643438636363326633653136663135653434363063346265313932373266623538653731363236
+33663436643539336131616337663337373333346662643966346664633563666338613063653638
+61363330376338396131626533613563653830303539353735316331613566323038613530643535
+31643334393836303936656565636432333231636262336531656536633431343030653165396238
+31373230366639393665303030663832396166386263616234366330323461363064653335363263
+61666435653939663033646631373837386138663839306230613461393838383831316139313861
+31313632633833306239326139343136646166653665623730613438613263646435633237623464
+32396166333536363765626263663833353963313762626334633932633030333365353730373037
+36613338623132363436613765653035346435386165633563323432393661343261666165663562
+63383939363632646637393262393434366665633137386565626339346636613239356238613831
+36326263306163306163343531633064316237316333313930343562333536336637366232346134
+62623136643030663930393737356639353861306662653837343736646562353630633064643461
+66303166353031376361333033393831383039376335663663313364646266343939383938643461
+31656234633132363032623539373031343937353139623739656637306563373362616563363364
+64346663303136326364623164396435633963653932653036353261616466613265613166636332
+31643934313431343564313434613666386533363466666136616233343038663531636336613964
+33366538386366356562383261363930663635393034353465386166306364643661613531343839
+66376138336165616539313866336532613237323466646437316663613836393338633837323465
+34633263356161346230666166313831623137396633303834613265343738653463363935663136
+39323236336636386464336130653638656264646165396235376137366562666430306461393362
+39663239643233316161373265396534303865363135626537616365323130643538303666636636
+30333031336261663561663131323238316166623165373034376165316261383462333130613936
+63653633343461386463613462363234316531616237373164383138376139636630633434333265
+32306137313164363234323333303736363465613565333464323663356666363364393033373062
+39663033343434323833323836306265613039363531353864343566323837633566626636633062
+38386630343565623930366563353137396531376237336335316165636635653931336537366662
+32393730353330386534616234613965373236633465303834336138636235336335383632636135
+31373962616638366339613033393536663437646266333532323833626261353066643333653864
+65313830643934353034643231323132303434643562383632343933323235303064373431333564
+66313665643631373231626538623763666362313830616262316434633732393161383333626339
+30653566356632656637313938313034306265643234353835616432316264333662363962306437
+35393839386562656438316565626430396438616262303466373631653937623335636633636430
+35363336363462633766393534616632646431616532333836383730396236353733656162633939
+35346565663830393163313766303034386437626436646432623463303630613837616235316239
+65636265626538383262396432646365386231616539383464373262393166313062643436303961
+32316530383436376464363861646263383161323465373239663331383461613065343466306562
+39383333376465343430303436353238616464613036376133313036376133643431303331303538
+62623461363161616563313636336332663738313563643933336136316566623262363038346138
+66396131373033356131386334366163363566383738363031313939383639373731643438653238
+63396133633434306466303336356539386439626263663939316437643932366264653838366237
+34373737333233306334353561306635613765373331396334636464313935333036653864356466
+63313666306334666431303334646364396237363937633466316632643566306231663834623264
+39336335633263386635316338323932666436336334356665346533393764646230316132323131
+64333438346264353332666637373863616632343433353138626537323233306139656565363065
+64323163643233646631623762663233366439646363373338316361643464306431666164323733
+34666239393166383532613832616361623663343133663565346630613365343138653666306364
+37336332383361636138366238306638626562393463373536656361653764623834643765643861
+32633365353337326332623133306635623464613436656630343030623030366331323964376662
+61343132373064353430386331323033383330643536616364633236343637353735353663646163
+63636563363165303965336539303665623532323535303433666465623064393863656664353038
+34623666663032616434636235343563636639333836313365613266643234383637633331666131
+64386664643631653936333263336132396466623264343432616335333765393732303738393265
+32343038323534363136636230353865353063306265343136363736656332653938623039346166
+61356338613561343534613366323439393664366439343363656639333535636631663862336263
+61373737323031643261613135643732646535653731636134383761613764323361613264373234
+66316430303561386137353363373761363032356435353931643131643138326162353430666362
+34396331353031643833663135336438303438656436393637643361636137663136336639323332
+65376639633662366439333537363531613065383534366636663965393137363835303038616139
+65353065356139386637363936386136316135666266646633613535373264383332313164643339
+39323365643238633165386137343532356238343132653663653435393265383133333032303434
+64343964633333356337393533323434313335653437393131396363306332613937383763353166
+34356262333463363663383233656230373437633138366532313762323266333464303330643264
+30663539303531363762643966343465613632666139623636646637373239386566616565313631
+38623630336532623264666231313637306336396163306262323139316137633666653662316165
+35326339616238633133623864343638623538323632333665393530613662373333613462653965
+65333637373563356531656134393836636436626634323062353632343334376164336138666537
+62323239303231646633383734366662303262653863613262306531356638383364626661383138
+37666539306336643065323862393130366130366466646632626639386164616261633861326638
+34333864386364353337383634326537666639623132343562316261303631626239366638636435
+32366132653032613232323633663265313361646631356562613738336134646236303130373433
+38623233306535343536343134313163323864323665396664633539616462366531643237343135
+30373663373838326139396436356235363866383431383564333938316535633832616635303539
+34376530376335626133396331316366623631346135626437343737373766666334636636663064
+65663761613131306532666566353565663530316261366634313537346364393234353038626139
+35323665393565336430303939636330366436623965663536333765313463376633353366336434
+35366230353236633939343334393134663034616534666139363032333462376230343530653466
+32613233363936306634303963343262643363653039373739343034313638386264616339393163
+65633061636262663363346262306334326330316230363332613764616132343039666364336139
+63353839373763386637333466306166356533323761646534303663373961356630393237383161
+34633734633334383431643233353434626362636561646363666565326533383166373438326333
+38626366636262333234346533616363376333636335666264386536643063396434663663396136
+64643534333032386637393864643461656465653265373463653862636238316166383730323434
+64383636323434616530363565363165633561393233613836623234366434663539646438386637
+62656131393665643530323536356230313166376666333339323264626639363930653465633631
+31386138616532646332383932373763383536356565373939306663353734326337373636323330
+34656538353335623535313234383932303761343563353639316234316135626532616630313539
+39343366323866653061383631636639653939613463666637616364353966323465646162333533
+38336134636531363635663430383064373336323138366436376465393966396532666431383561
+38393033643766396661616132613939363363343664383738386138636363396365626161666336
+33323634306330643331343466363262656661386538323533303265373038363664393530306538
+64366565366333396461366363393630666136376438313066326362366162633465353630306466
+38333966353439323264663933376530383462316466313431376634353661663531333363616332
+35323532373536353638346235326165626562633834303334373833343030613937356533653930
+36653161393666666661313931343563666430343035323433356438386337373263333333373032
+33323837356231653336316166356138626563363661323031313636653662633538306639333436
+32626535656466343339303538666539623939646434653039353532656330373636623564626631
+37343739386439383230353963353064646330333463353662633063356534383463333563323062
+37653065666662626361616236646537636432383864626337396238366334353032306163613165
+65626631666530613563316263303566353838653261383838643065323633633737393131373330
+34306534636130353733626630663839306236303834623036306530323266666236623733623736
+34326631616564636331333261643638386464393836666134303364613264393865393239313338
+32326632386139303436393631623166626137653436386536376166623333386539333332363333
+62393936396233363437373962653839306563376266653461396439383462376462386461366238
+30333733303036643432393337643966356638346638316362363564373438663732386332306533
+64316132336233303734643534396232336263343937343335353761623436303564643261353662
+61356634373262633335326539373965323436666630393334346132353439653163343936633464
+33646163653931343735376632316165333738326263326639366163386130633239363365393365
+39353334303632366430353435376466356435343363646161653836373563633264353032393064
+64366132366463366432666261363730383865346137353062633939353237633739306534356165
+66646330383031346635373834383538393736663461393637613533373831386432613338363133
+65303665323933323764636364666439646232346262666263623431333838346435353763643639
+62303834646164316233353765396363323832653139396534366666353161643732346436666261
+62623365306261663439306533373965626635643236626539383264343034306362326334663564
+33333930653961343633646233336232653335343035376265306331636338613766316534376361
+65383766643133333537643462656332313034333664663962336334316435366664656236656466
+33323331363039316538356430646630396233663934393934663433636263356436616564376639
+31646635396535356461383062653465383531626236303831343533396263316336363530646532
+63393330613637643063666462613632643666656436393661333238663862373236383733306532
+37316230656534363035323061636565323430356634653365313865633963613734383538653164
+34626265623763366461323264666439323331646138663166396661626664636139323862353932
+30353536633761636432663932343765353963323238396664333561353539353864633266346664
+62373237623734336163623939306538623636623639383333326130643466363961346632623338
+31363636336165353363323138663432396639303430383238383334323833386366373936656633
+35366263623037666432323063303137653234313438636330363638613065653531396431396131
+32303034646336383139303862336134376437646532633961646261616233386639303864653134
+61663039643435366561353433316132363635623632343439376464613263646562656532316637
+65646361346532386130326130643862303630366633643435643731383134386465313263633662
+36343734366638373730366130326264633061663631303035393138333131323732316363616362
+32313232373835653333313863663630353634326430383562623063646338313765373933333062
+66333736666636326161313761666637396437376335336263346139363161373263376334616261
+34666637653538666439666437623933356233383433363431306236653765343563663465633130
+63306639393565653532646532356535303035356134633363623638666230366663616530643938
+32333531393833306431653765643634306532613361666163643938306132383332356333326364
+62353365333537306333306531373038626639353139666636316361363038623035666265393666
+63303832633630623237316139343236383164633366633131343937323563393639363233313039
+36393461653036393530666435396331623738343332346364313638316333373566383438623332
+65343637656639666161333863333463383636616362623563316237343566386631383838393733
+62626539653337366262396637376163643865643066666161386237636633643561303333633066
+65643532613332336362376330386535323463666238636436646134616531356234316439656364
+31313838313831353061613935633331313331393564653331333930333666316633613863613062
+35613536376237313365353661313164633835643536383362326361316335306661373433363364
+66376363666636383863666131316461646131373934386465313237666530393136393933363833
+33373730376539636264316164633535306164353564323131623663326162636164333937303137
+36323234313238356164383730376364643335336136326366643930643930623664336536346639
+62313331313161616536333131663064633132336163303934643063366365363061616361363330
+39656133363466613963613930623434346631323063383335663034306463383830613232393738
+31636561303466663938386666643766363238343839323265633237393234313163616138383931
+34653666363262636236313966303430333131336331393032376231666431636464316163613131
+39343533393837383134353634663232313537613333623565313938656163623032303766653033
+62363836356133336566626635633733636135363133663961336564353965316561663266653732
+61373831356564373538646362353835333737613038633439316333666262343430383263623938
+30323835616539386564336561663464363532373237333531373331346465613065343130656266
+38373331303430363139663962613638363838303364363439663934336239383762346230623965
+63663935353038353838393466303135356330636131613935346164643331313134626465323838
+33643635336635613236613563313230366136666238636239646431366338373262613364653537
+63663365386638643030326466383138313266633833373439376533323535623366643266633266
+31626136646334313935663561376166396536343865643266393966656662393661356163383138
+35316138633738623163623334366366313230393438353366616564386233346331396431663165
+63623630326431643537343132626261656332666565613166636563366532663738626463346162
+61353238373763313862393033623337386333643364316565313062383165653061323661356536
+39653830656336363839373065646237346233613236646366396233636564316433313362343264
+38396465666266373166363266356432376161323062306336316464623339366661366364383230
+61333832373363346661346539633632626231353861363931393064333034326335346331356162
+34396338383530326664613438316531326636323537316532383762636431376539393730383666
+32386664333964653330616237376139303736613164396333366131396338316665383363313237
+36653762623933646331323730646535373835653532363663613439626136313066613532623761
+38613533316530336535316636306330323163343237396339333664326439663766306533393637
+37356266393232633363363138626166376634616432396333366138656133376535333637326663
+62306435326632393039643634393432363838643661386661323431653737333065323936643830
+33393662613062383538323662663131356534376531326531366532376534663236633961376461
+30356361383431363065633062666536326637613937633865356130666433303534376430393336
+33383737303933303336646165323833653431663237376165333032623033663561623862613666
+33313535613637653531303734646134393634343238623439656161306438633335646566653134
+37313161313661623439656239316439613632303134623035626364333132656463346635346138
+32663738323433303365396432633436383665323736616666666637303330633030656263313430
+63333539633265303665303735356362353966396264613461633865646434663839303866386339
+30663966616435613333336266363236666461393738353130303932363836333365646239306134
+36663935633539623064336164653034643661363530383933323139663865316461396536376336
+37616639383235343937313031396163306435383734356430393932383739656664616666663635
+37653732633065316637656361613737643332656138323037366564366537383839363438336262
+35343264323964613938636630393463353939663465316566396537653238393832333333386436
+61373639376162303634356530646435363837353862336265653732616365656266343336636561
+64363232636532623731333731306365616438663630613763313463373239393038323433353036
+66336264623435616134393739383466306431366662666236616531383237663762663266303263
+34353036373234316161663731653332643535333133656338626166336131663565643534653834
+64363761643862356538393765373432373239303537623139316137616331386434336561613637
+64376132666461323233633962633163353039646337333637323135613063396232623838613433
+32353133323930666261393032613934333933616263316436356261643438353034666566373366
+38633139373635616431663132646564323538373637303266653663613165383437623538396231
+62636163626438386663346139353566343839336664383332623564323933376638336661613635
+30303630316331333631333365396337393666633535623561383434393134633033636633353533
+32346632376163363464633861643834373764393836373830336536373337383233386334333234
+33383365646566626464613532333230326339623165386333346239653936616135373161363563
+30343663306561643433376637373833376333646130646538396564623636326330333339623665
+61633138646332626233383134643432376331613664393831626138633032663565303264653765
+34666666653463613966386334643134613664373930333437323534653437383933663132333863
+33646632396562636434663161386231386462363864613537353362356534353131613662666664
+65633962323635353565656135613033346464326237643233313737383339646366313935366536
+38313339643035346533326235313435383464636565303464633762656165626339393863393366
+65646366353930393934356339383337653362666339636461626563363365356161396237333761
+33396564353838313566663061653735636235366465393536663138636465663436373336616134
+33396136623831313933653363373637613034326464653661376166393865613939663764376232
+38323335363836626634323966373763316232623636396338656430326334396232316236643762
+61373239626330376262343937343531333533353730653165626465663065383139336662346661
+33353262353330393330646533666661373930303130653536326635356265336566303731633930
+65363330376133313733386138326263613435373538386534376166616263626362306563613639
+34643563616635653466356231626338636666376335326666333331363837653465626234396130
+34346530633266643533643937643865363639373536363263343461323461653730623933313461
+32323566643439633237656635616661653663653333663435373864626266343464323363333262
+37653732623365356239343630303935343737626334306430343731373130346431653431336164
+31333439333165356463613836343639396364356239363938336265326339663730616361353433
+33383263353066653930313062333034343065313061623333626333646164663033373239633361
+35353861356535303636653332626333343534356330363363646338313364633634326239323630
+61313662353165363565326664343637393235393966613139326662323066363366333262653130
+37333138306436623034383531373865643239373964353161376232306331366265366331653165
+35616237613663303532303237653663313332636663323737333834366361336231316464383961
+66386434663735323932356634626665633066316332353765613765333730666133336430333931
+64333638646361313538636565343165613934356332323334363639656665353736343563646135
+30393866663834666439333633323061333831656336373533623665663136633836396561613936
+61646237363535646531613130303262393639313062623835393865633362666432313365356339
+65663766336335373538316432646439343062646638633961323732663639656632613337633831
+39313862353864646261363932313638316536343630376166643237663935376337326663393062
+64643931363432613463353266373966396137303362353530626264383332396535396461663033
+38323465636665363737636133336335303130353565663465386463366366383566376633396163
+32386439663363393639326131383865613335333461336663633063613866386130643337393463
+31373662626333386363633565636333663863353539313336356434353462306339356533383766
+63653530353134346534613938313930613430623837613864643033646538363766623735316531
+31346464626333323830353030393031366366313538643964313034306431363933633837393338
+34383835393665393936326231343136343836653361353032393966323734313961663732646666
+39303665343039383664333831396263323734333764373463646166643366333332363263326239
+62343836303734383335613566306238303065663965303831646263303366383838623836663562
+61383231313338353765666536393435666462663431643062313336623066633362396566626262
+33353534323833386166323665376338326163306436653335653830376630636562346561333832
+30386132313361633232386431373163663763396437633538313565366538646666303139616433
+32643961383535353636386233323964353630386338663832363461623263616339313234386537
+31663138636638663863363638313565613565623566393034353166363735386161386236333835
+66333538336330363538653039656462313563343730633631626634363561346434356163333134
+39333161303237623132373531613131353334633337333665653063303664353032376439323461
+33656339643734643762326136626366363265363861633263363337386561646337653735656436
+31363130653338373166333934323363366533653632633932386365643964356463616131316432
+32633838326332393134656636303563653730313463353431383636393761366361373030323731
+61343938386634373334623730313836653432633633363436663135333763326164656666333637
+34393961373335613833646364326234316438316138396564373035336639383433663030316536
+38613466396430363465333761373038373733393135666138323733613963663131303338643537
+63393036346239653232626232363364333130313032666637383239306266303332616661386137
+34656536623864336331333666636263373966623662663836633132326263633237353761303161
+30636634353536323733616461666338623063313032383738323466633665366437636638623965
+36316433356466616334396337393761336463326639376465396563353234623265633535383464
+34346262616262653536366138336565396464656439653532373233633266623532386538666237
+63643562626238353131373034653930643966663231383662653065386236646536663530383433
+65343030623562323364383235313466613964613934373733343931666463623166336266643938
+65396464623238366135656563636463376539373437663339376538633231376637616466383331
+36653230306663396330636164323338633966393164353538663639333834393261356361346361
+36303566336137616438313566316238303838396131313039393132393764376166363234636235
+36623434366362353964353039363436376136656161663033333337666535396666313531373466
+66343038366539343432623338643061663534633764343364663862346136343662313534396132
+62316265623132383365623762646166373936636435646465333764646230626566666130643931
+34333439323364666264326333393934663031653165316539626431613234626261666535636334
+63656535353464376163623939373266336165316462373232383333366636313461636166343236
+31333833326237363936306638656137646538333763666138333037353662373231316633376332
+37663664663430633534643430366239663461336231343864383230383734663733646339373563
+34373433383837633039646530646666633131326132356231636162653031346565636631343039
+33613561323135356162633537386431666130323666373334383832393430353062363034363230
+61663661383265323538333134343131333738373734353435653632386464303864343866633833
+38663939313336643734393231363262626363316333643465663538333364343532316362386235
+66346266343631343431393834613230383737626137383061346663613230333739643866373233
+66643939323264656161613933346238323538326166366234386561633830636563326461646464
+64386161386233613538633439663564336366663765626430653464376539343339353432373861
+37353766346435636633373731313464633365636635346331623339646434663966663161646661
+62613133363537363833633639383038353834636635363439613036633135316532343138336231
+37313165643135303838356338663338616131306235643661646563646338333131353736333362
+34373331633030646330633138373230386366366232356464383138376664383732326565633030
+34343162313562373138616234373332336166636231303865663261383832343736396530383166
+66623132373130336231316666373966623065636566326665343539316262623166666430383037
+35383230343162643232393662303962333431396432616361646662336130316431653038656562
+35643961353466353663613464633630323139633935383632393365633065386465336335323532
+36326162383534393062326462396335343330363566653535336466386230316664353030396532
+34353237633866663238656465336334356464313864333665396231356532653931623032356362
+36316639616164636434323561396530656565303461626132613232626133663138613130623366
+62343538653063613832326534313834346530376433383163336338666566336138353861366530
+34333364373165616262386334633734653365616530306138393737333336316334383064616563
+37356131663634613233383034303266326532326431303034663361656266623132616463663834
+61366432333734323861623231646166383066353032346433663438333062333733646530336466
+31373864383466616634346335313830313665363232383831306632666537653761653537646563
+32396439343862643638356162363961313433373966346537393239343634633630623737663661
+36613430343365623436
diff --git a/gpg/vault-keyring-chaos-at-home.gpg b/gpg/vault-keyring-chaos-at-home.gpg
index 080aaa2c..1888e61e 100644
--- a/gpg/vault-keyring-chaos-at-home.gpg
+++ b/gpg/vault-keyring-chaos-at-home.gpg
Binary files differ
diff --git a/gpg/vault-keyring-dan.gpg b/gpg/vault-keyring-dan.gpg
index fba3486e..5514efc9 100644
--- a/gpg/vault-keyring-dan.gpg
+++ b/gpg/vault-keyring-dan.gpg
Binary files differ
diff --git a/gpg/vault-keyring-spreadspace.gpg b/gpg/vault-keyring-spreadspace.gpg
index 91e6e112..c832c1a5 100644
--- a/gpg/vault-keyring-spreadspace.gpg
+++ b/gpg/vault-keyring-spreadspace.gpg
Binary files differ
diff --git a/gpg/vault-pass-chaos-at-home.gpg b/gpg/vault-pass-chaos-at-home.gpg
index 83aa9aa8..bcca642c 100644
--- a/gpg/vault-pass-chaos-at-home.gpg
+++ b/gpg/vault-pass-chaos-at-home.gpg
@@ -1,19 +1,19 @@
-----BEGIN PGP MESSAGE-----
-hQIMA5wZPHhlJ/C7AQ/9EEEybBVk47CQqnOnHTb+RMDXpCjjBIwypGF8zJdePRVT
-teP1YTwKdH8YNAHV+/UG+2XR2Kx684EDbWhC88++6F87gjdvq91J6hIpOR5dGuuh
-pkgG4mtb2dLg8wvKNMuKzyEQYEllniuILk89eg/vN97xYeWpnRkHkOm+ER9XvPNo
-SVPpuAlLvuWafQcVrxWmT7bFeIsPI2gdCRz/+ZOFqvKQH+uG6qSP3Hgm9tYeLxPS
-hMPctNFCCL56d3591F38w/NMvn/JPvEEoisBtgPmugfM3upNgE0w0oMWlJ2PF5Qf
-f/noCVeezwjav4CyULxFPdgeh9V4alOUbxu4P59WTWJj9OLYCiwyG9siw4WWRWYV
-iRdvky+M/p74H3yMJ8sCOG+gUsfxp0AHObyo6yr74ERTqcvu5O3TD0luGpjK1LRo
-8E2MPnsRxBTeVNUlgJDq54LHo2puyzCHITEGrCBCtx+7hViTj1WY9nveXV/a85PN
-zqObHL/CX9rn9lSfI8JAkDQgZkJsNpCIDblBmpalGWN+SUcAJGNA8uNSAxIjKJoZ
-3H4WwOEqFxZNLnGhoRrgle53++t500jrPijBnWfbfjqy8JXo0OxfLH8Rlj57Sdhx
-whr2QOK0rAtD7OwxUuEnsQfMlNRwJF2NnTHJxRFm5uA/H08mkhzqkxgWxrxZ0trS
-uAHUXBSJmCIJbDeHbsluv0FzvqFb2PuzFEfpIUv7PQhTAxH+SWtaMeIxeKZIK4Is
-U6HB2V01PnSFAOeD2tRfDPaC7Ynl9OJPMT00VBfhAAc5HZTsN98sVwmF4NXDkklF
-vd3dPaSFZr1aS8QBn8wTjoOdbAXJ8MGqbmQC6WpIpP4ZQNAIcSt6FRahB2F2JcCe
-+EW8C0le+A3xLGohYuhnX5/d8YKASvX2D0WXdOxUA9dgMH/pW19kzU8=
-=csG1
+hQIMAwn6BEwlAdD6ARAAgVrekMIKWs3+16Wi3Yzh3iDzLOAprPOnNWPhu9ZND7Kq
+tmhsezwjvIXmG0yZpAKWWEpKSRHw0VdoLS6VJhDGLdmXt7urCNCh60zs/crvYY0V
+wA6MV1IswtJRtwcx2rjJHGwQkImqQWLSoY9EwPOC8seYm/b5UnLvZU0kYQy5coUg
+9QZbdOAsx1jm7xEmFjdEeDoJ5Psv4ifA9k5ZpjFsvrYjfowT+P7H3ghR2gsRFJTX
+vnlwIi/1utcDryzPJ7UoST/fibTxGfXwQly+l5sgPwoPIIf5IwRSDa5SqlZhC4qq
+DD2w8AHhtXOQfFufwRKuGdOaAsomZNLCeAqRYI4Zds+I8CX32VWFkmUuYeVcjQaM
+MDnHoa85dYV2UoOKfxN40nzNHFVwtlFIZeb7ZqDp/SR3mX1z6VpERM7Fgz1IcWKW
+1616pxnj3DQGpwNZsqcJTqgrY1Ob3uwjg63Z75GAyTLG4u+E+ERG9VqOihbknK5K
+j+G31CuePMZ+ZkdNP48aJVgGhKkdcNqfWmF8gyZr0NFatt4tLxqV0a1NSXIjGuk/
+ycx7Ws/WcX1XoFUVK7OP6nw1rqY3JGnjB/d+wnD/CzfcL4wVuW3EbkUa/GcmTbID
+yGg7DmEzphi7Zr+Qt7ShAHkS9jeC5Y84CMj9gfyZalDC/609GlcPXiRSIfzlMsXS
+uQG/E9D9LXu15eWXxF+V8Ygw05t8ZB1BdawLm9vrVh9LkGT3OwnrO59jW7SXd0l2
+4Okh3ID0LTQYIYo5OPMxHmu9qml0Mfz6bxt+bCcSuxiufkO/zRlW5LWTC1FNcTHO
+MUiSSHIYoY4ekCOizd1qfycL4KARASeNsN7UpSAHyNUmKyB9tILGvMlWOxXf0qAe
+K7QP/FiF1eSX/DmPPtkcAKTQqHk+txa8fxWM51kEx4QpW3fUYx6B0pP3
+=+5Lz
-----END PGP MESSAGE-----
diff --git a/gpg/vault-pass-dan.gpg b/gpg/vault-pass-dan.gpg
index f13056e8..862ef834 100644
--- a/gpg/vault-pass-dan.gpg
+++ b/gpg/vault-pass-dan.gpg
@@ -1,30 +1,30 @@
-----BEGIN PGP MESSAGE-----
-hQIMA5wZPHhlJ/C7AQ//a0DC8jSq8gE4YQXURodFxTWvCmLFjd63N1AuOQFm1Ikf
-7JOHvpm46S9vPlua5p9SLNV1jpDga2BelVnDM/O8osXwEWzY/CavIODgrmPqg+qJ
-4e31cbjUIywQjVgyI3jVolBq0gU3AeE2Y1BacBbMWy3MO08M98e1uHbJEidXveoZ
-N6OVMMhJ/vQ2RJe7jJXjClnElG0V6yxE7VMRMktc93CxfzFppWJmVCQWM91b7mXt
-hQaok+pNSi9dUzAe/nEianhsX+ztgGBcCRl9V29TGRBTbetXe66LduLxFuZAcGwI
-clpXMpOtTasN7ILMX/G+K7xyh8THuy+eTU4hApri4ltvM39wluYvZsXrCcDbibSQ
-yl4aBZf11qyLgolDR3zHtovfNCS6BGoUol1RVd3zUJhrUNKrK/Kf80sLpbXsCJjI
-ay6pEQrqHyXlLjquZub1DhDk8JM5wg7ADm8v3mVajvHBSs15ObB++d6gNLiOaFF/
-+DH4PHCNVnMcJBVLqnULb4LSOBprCm5dHoVNbQHLFfdzYWyAbfRJ8z39NwvHihwW
-OPhhCbtqZm6VzMMjJXlIGmN/HCgEKvk82wWLQGy3EP5K6B9b5icQGBY3CTJ759S0
-sXZ3TVdj+jzkTsXtmPYRf4kRcppA3OPPZiXZ56dSc2zM9p6VlFqKGx9sbIP/r8uF
-AgwDPWJqFfpI23UBD/9elWFknJ+x7lpfg+QRnoqDcCUVp4ppvA+ZGY0+E1nkMrV6
-0eTnzpHuAFLkYIVwzA1jjGn0Jt0b04PwF8BzWHP6NXkSAEOAFoie8OyZqsdO2JI8
-tMFkR1SbZ137EPbEqwrg8OXQMexe+Y5aA3Wucv2V/lSBYLAimXgt0/CTrjhWGB+A
-uOf2eId6vzpgGmWuQI+pd43Ji7u6f7ReyhXgREAiW9tQaxbdCRWq3uBCEwsn5Vcm
-M6s9RbKuvup3WIpKucLLWiCY1SdDH9S5oDvkaVYgPTL2sbwVVhXhOjig0cpvNQeB
-ddarV9GVLAl9YHsVfR98NCDpYrAndwSRROsMJ29Z4cuupWOAcx3XNYsMRHiuRyYS
-RkG1U2ET8Dgt0g8mOenhAXjF+VTwGsy7Ej3CSEjh7HJ2IZ8Jj+Ux4BkKTajtALUz
-c2FiF3w1rflDLRjUiYHzGS9FUjr/HrHdGv4AGBPI7kTXiCMWXJB4e1P+PB7RRjYS
-wd1RHbhndKuflTWcPGIo3Sk6zIGfNlUzrJspNtc8qHLmpUai4RTisF0fQ2tyE1ct
-/sgHfVyHvyfc1xMpugN6zhd4g868K7YI2gYgymdLlxNd9pXagIphtbnNRNTrKd6S
-UbHGropXeB0CgW8PLH84xMa4NSrpreJfd2VPSFsUaPjUgaCUjTQt87jzdJ4NQNK6
-AZfZdImWFjI2xEzRwdT+Lh494/bs/nkVBCHwnjMt9BSMbSn+4KT5M9I0D0CV79Gg
-0+ugoFW8/OQZZ2AdfNQYMmhBOf67TFbLxi9t+FNm248CpMa8h6r3x05rjxO/iYUf
-N2NzvwIBTfiuB2yWDZTPjwyOB9WZIDbEATTx95VnGgnebn7K043tMpORfic4hNg2
-X0hkvEN5zmDxCilz5jFc3BELKXIXmQrPd6iwe1kFsCp4q+U6OQiWNFpZ
-=EDpI
+hQIMAwn6BEwlAdD6AQ//YV/o/+FbGxfjgK4IU8MGEzO9qRrvi5rS179ThBihQAoz
+dDueIBrpwJ0AgcxO4ktPZk86hrpet6QlpRYQcQfXV/3hN9Z5+DORIxmpyWWqTZPC
+0zD4MO7a0sgTYqSiBMyx/lsnNEzr47MRIt4oloaKrgvmct1dD/csjDCjE+CQt48+
+D7zu/QsYd6yyqr4zPLQ5y2N0SjsQLI/O+pns4ugiwOEAtzpAOgYoHah15B+VAjP4
+MVhjkeOYHSzfOSfaDxhlnFJwb/uZ9bI7BKFnvCnz9wnbq6iOCElwhaP3zgc80JtU
+sa5C76ivAZnhczDEElfirlYVVAL1pCH5LR6Vpo5UtwubVX2LGhU1UfpWF+ChS6/d
+H9yn8sKL5DV/2tS6Sry8deIHqEtL6vvLiyjDPXOpG1/473moadpC/YjWSnhmLh0G
+uc/vGWbMgaaYf8aKiv6QNYmHwwhKT0GoiDRFX2h1VjnuHzxKfA1xnn1f00uZBYcK
+/WG6nJuAZg4KaGIyiy0l6hP8z4ZSIGKZC6UdKPCRFqoSa1BH+wOqRji2uRy1KTJ1
+cglidBwhvdGOCFxbcjzJlhOAZlYf4b3hF9mmok5SyCrCn9MkvrSOIpOCCvOPkh/t
+enSmwA5EAnnqwtJl3scsanG4JciF3V1hU+f+T+ftf4Hoo1YUf44SdmWPiM+ssEiF
+AgwDPWJqFfpI23UBD/9pArJnxGl4l7pg6d+FfdIRnaw61rxuS1OZBIZdNY7rHXIe
+SQpzVUHMa1JvVlXlDeuTLhuFRKCjnib7ZB/M/wUOwqa+yvKLh5EjUiXXmj5E228o
+wb195WULqsbwURW85n5I2HBDRuMge91nQNSq1rt51bpBz5QoFKqBwIdoWQwA9Hzz
+SywWa2jL1a6J7X/jMx979+eRNk/7wxwuNTu/orz6i2V+uxuJJy6K5vo+xxb0xIoH
+YE3oKhcqhS2GM8dOJ55XO/lFau1dgkz/2W/o03aJViAokj8A6bUo5EzEzGCIhwTR
+YdBenvgW9yDcHEcwRj4cBhQ9yEgHcuhD1WUERm5EKbVy3A24n9PzdF32VZWOntVQ
+JIDAor5+7pbCLJmKsImPSdv5FbOcjRrP9+lyJeaJ21Jd3nVK2idV4CS/j7qU9b69
+r0ZZPspyffj6GzONKRvt0Dd1LQleBrPqMlnOwUo4o1aMobceVWlL3n1puvDENgZi
+LRd7vr7zSHfcBHcnygE7bhfkEewD4V3OJA2gcz+drALpZW2fySTtPbf4PFoD0FL9
+IGQ2qQWTb9FG2C+RK22yB++mp/AjO8AQ8ZmMZ8WFr0i3kUFfOcQJJLaTXEg4YkDp
+QqRcC2/9LOFY6VHcr/ZgYJfVRCdHrSKp2IZ9vf2j145fAtgNyWKbqyROdTNO5tK5
+AZYhXZUn+GqkAn0BWr8b8N5N2XChqXqVl+kBh4XIh0n8gRrLnqtdlmeUeiPnev2R
+7Pf1RN2U707M+fDNCRM96NaX+NjmIe0U0ZdILFRZBjmkUahU8+58AlmLHNwKMLox
+Z9PDfDafqPBpBnTpkfoWMd6NAWWx6/EomTXISsMMSknSKBYYI512fc3eedtBc405
+rQDrtS7CyzDbsARqP8VPkDqi4YG9nHiPnL2Zls5A89YuPtS/P8x1eaE=
+=Sf0S
-----END PGP MESSAGE-----
diff --git a/gpg/vault-pass-spreadspace.gpg b/gpg/vault-pass-spreadspace.gpg
index fe5b5940..6cb0c665 100644
--- a/gpg/vault-pass-spreadspace.gpg
+++ b/gpg/vault-pass-spreadspace.gpg
@@ -1,19 +1,19 @@
-----BEGIN PGP MESSAGE-----
-hQIMA5wZPHhlJ/C7AQ//VAqOY2Iawb76wygeJ7vprbb1f+uNC5ic2hu7akDEpB51
-/QzF1bQ6TB2mGXTWhuQLDcVu/MBij0JF+he4VQy6ljtajAvBd9X7OkrDSNbECuKV
-yPcXc0aCGvj5PqVA7eIFb0MH9qV08tV8DfUJ3aN6zOusKLDbSFs5D2titGMIC0Np
-SZBZuGAqfFGWPgKBaGRuzU70fymtCOqmH3uOkyIF9+U91I+slVjmbal64YV4Go59
-hu3ajMYGtNzkeoJEdLVSafiCifTBCzwa7MrvvCplqQeFL/aw/IuFhuLxuusHZ+T1
-e7s3L+21XvM6Qh12dCswfCmSG/s73Mhsu+aT2eTfgnLNuA3KeFX65oCtBkL6SBjt
-6ARa/I1n9HAQ1KonWZTc3iMx8+yA7sE4E6WtSkkhKKfwvvFXbHNL2i8ZE++qFUKv
-UwZtpQiWgyMhZEdznSA8L26rxquosbiCFwhhn1qYK2rOOSSYMqcInLe00rlAMdXe
-xfep2biAqBd3t2ZrjQwWundmFyizYu5jNyXKwpL3HOWtFy3ib+t4qq9F/L6uibnZ
-jbsqG8PMLpCUGQIKR3tMoaCtPW7s2Dqc8AyjznI5zY4oKy5DG2qYVEsJdFOlna0E
-6FbKydD5nJ0JCGhp/BdIxhLBxBmzWPlsqj8Ei/y2lBor1lKqA1LyFEdVVkuJDmnS
-ugEkRlD2hniPOjyWM6f9FDItL0G8IohIO7q5V5ZeT0Tr0BJi4XDWu9b18h/5/ttl
-GHyiQRqwCvtXQJdzX8J7vcUkiPUHdgigjbuQdMppcTSgIzbQk9jwU/PjBzAWw/Vs
-ObdJ+MtmqibMe8I/E5TxuCKg84zkfc7eo3a3PClYX0p+mBMTcOwTTWlEYBzmnHiz
-BD39zkGeZbjCpp+yui8ItO2zOyULnDkkY5y0VXqIQMx82nR4VHFCTlKB6g==
-=RY5w
+hQIMAwn6BEwlAdD6ARAAtpS7JYvopGSts0TjoJVNp9mxs6ZXO3auEdO6GwJ2AEdz
+sWYtDhy09WJyAdCO3NHQ5YHWXKso6fJRGmLKQIBmwryHEJDbZN0s+gnRVmfeQ39q
+BkMOMNU6FjVr+MdUiQRRo/GVpxg8f0kjBuxGjKzg5EzpU/lzRE+jG6VK10nLpt33
+oha50tqfgmv4FTGnAEx5whPjGe9xuWeB6JBaeWgStzooZsr+ezEtvXvII5TQB4+i
+mBbht7y0RxH4845WmSi0dxfzHlc5f8UtU06f/IVqRSce1OeXGZPalBU/fcAeYKIC
+J1ma0O4kmTWsTw07hpvfs2qC+Nb614NAz/0eHmYkI/uu+QtGskKdDVTWt6yQm12a
+FYIrvoLPyNhIR3k/wPqvFPcZplqfO2Vgbtn8EC3LGdl5Hdz2vQHny622/MIsXgr4
+BrZNKP9Qf7TbynxaNRCKZ6O15RO9m1fuz84kScZA6TXPgKGLw9RdLCqbzvgP55Vi
+H1B0D+MvnyrAHiXksXRUadaHqMvvKy0et3R66fdy1P6GwSorjf4nNBuSZcgPvFid
+ACTfc7WOg7eSikmhZ6nQ9IDtsXbiyJSL9MiLoAS6fupUrz5sIefQ0KpWj3UPMPWd
+TIcFO4lXp+zjR0XUfXA3P25+k9h85M9+uItyCeUp3c2WeyxrUD490rwoCbUF3KXS
+ugF5HWmUqhZyArw0qnbiEcF+A1a7+D5WOx9bURet6aM5QxuwOaIu5YvRNhYfaeLz
+2bct1NVnXSv9BJ3lqeaOD8lg0BIjIY9SntXybSj+/u/f7rBkn8sN749VjnSyYIR5
+TEMlEoOjwz9ShDJCX48RO9SqldeHitmKF1s6iLpjCDCbJ9H+kD0dQ9uB7TJOjVSu
+SAlOPr22WODov30m8KEIJDNWY5fiCk9zzGGmr1pN7Gw7/izwDPs8YAYyQA==
+=kdXs
-----END PGP MESSAGE-----
diff --git a/inventory/group_vars/accesspoints/vars.yml b/inventory/group_vars/accesspoints/vars.yml
index 8c4d44db..5545dae7 100644
--- a/inventory/group_vars/accesspoints/vars.yml
+++ b/inventory/group_vars/accesspoints/vars.yml
@@ -150,7 +150,6 @@ openwrt_packages_add:
- tcpdump-mini
- horst
- prometheus-node-exporter-lua
- - prometheus-node-exporter-lua-nat_traffic
- prometheus-node-exporter-lua-netstat
- prometheus-node-exporter-lua-openwrt
## we will install a custom version of these collectors, see below
diff --git a/inventory/group_vars/all/vars.yml b/inventory/group_vars/all/vars.yml
index 310a9784..fa0a7b6a 100644
--- a/inventory/group_vars/all/vars.yml
+++ b/inventory/group_vars/all/vars.yml
@@ -49,7 +49,7 @@ apt_repo_providers:
host: archive.debian.org
path: /debian
ubuntu:
- host: archive.ubuntu.com
+ host: at.archive.ubuntu.com
path: /ubuntu
raspbian:
host: raspbian.raspberrypi.org
@@ -57,6 +57,9 @@ apt_repo_providers:
kali:
host: http.kali.org
path: /kali
+ raspios:
+ host: archive.raspberrypi.com
+ path: /debian
hetzner:
debian:
host: mirror.hetzner.de
@@ -76,6 +79,9 @@ apt_repo_providers:
kali:
host: http.kali.org
path: /kali
+ raspios:
+ host: archive.raspberrypi.com
+ path: /debian
ffgraz:
debian:
host: debian.ffgraz.net
@@ -95,6 +101,9 @@ apt_repo_providers:
kali:
host: http.kali.org
path: /kali
+ raspios:
+ host: archive.raspberrypi.com
+ path: /debian
inode:
debian:
host: debian.inode.at
@@ -114,6 +123,9 @@ apt_repo_providers:
kali:
host: http.kali.org
path: /kali
+ raspios:
+ host: archive.raspberrypi.com
+ path: /debian
anexia:
debian:
host: debian.anexia.at
@@ -133,6 +145,31 @@ apt_repo_providers:
kali:
host: http.kali.org
path: /kali
+ raspios:
+ host: archive.raspberrypi.com
+ path: /debian
+ chaos-at-home-cache:
+ debian:
+ host: apt.chaos-at-home.org
+ path: /debian
+ debian_security:
+ host: apt.chaos-at-home.org
+ path: /debian-security
+ debian_archive:
+ host: apt.chaos-at-home.org
+ path: /debian-archive
+ ubuntu:
+ host: apt.chaos-at-home.org
+ path: /ubuntu
+ raspbian:
+ host: debian.anexia.at
+ path: /raspbian/raspbian
+ kali:
+ host: apt.chaos-at-home.org
+ path: /kali
+ raspios:
+ host: apt.chaos-at-home.org
+ path: /raspios
acme_directory_server_le_live_v1: "https://acme-v01.api.letsencrypt.org/directory"
diff --git a/inventory/group_vars/chaos-at-home/network.yml b/inventory/group_vars/chaos-at-home/network.yml
index 1108ebb1..9b53d52a 100644
--- a/inventory/group_vars/chaos-at-home/network.yml
+++ b/inventory/group_vars/chaos-at-home/network.yml
@@ -59,6 +59,8 @@ network_zones:
iot:
vlan: 30
prefix: 192.168.30.0/24
+ dns:
+ - 192.168.30.254
wifi:
ssid: "stuff at home"
#encryption: "sae-mixed"
@@ -70,6 +72,8 @@ network_zones:
ch-sensors1: 11
ch-sensors2: 12
ch-testvm-phoebe: 43
+ ch-cm4-sensors0: 200
+ ch-cm4-sensors1: 201
ch-mon: 230
ch-iot: 254
@@ -83,6 +87,7 @@ network_zones:
- 195.58.161.122
offsets:
ch-apps: 1
+ ch-repo: 7
ch-http-proxy: 8
ch-imap-proxy: 9
ch-vpn: 10
@@ -96,8 +101,6 @@ network_zones:
ch-gw-c3voc: 73
__svc_http__: 80
__svc_imap__: 143
- ch-cm4-sensors0: 200
- ch-cm4-sensors1: 201
ch-mon: 230
ch-greenbone: 231
ch-router-obsd: 253
@@ -117,6 +120,8 @@ network_zones:
ch-telesto: 102 # IPMI
ch-sw0: 200
ch-sw1: 201
+ ch-sw2: 202
+ ch-sw3: 203
ch-ups-test0: 210
ch-ups-test1: 211
ch-ap0: 220
diff --git a/inventory/group_vars/chaos-at-home/vars.yml b/inventory/group_vars/chaos-at-home/vars.yml
index 0cc12f3b..0f0a8d0d 100644
--- a/inventory/group_vars/chaos-at-home/vars.yml
+++ b/inventory/group_vars/chaos-at-home/vars.yml
@@ -3,8 +3,6 @@ zsh_banner: chaos-at-home
acme_account_email: admin@chaos-at-home.org
-apt_repo_provider: anexia
-
apt_repo_blackmagic_auth:
username: "chaos-at-home"
password: "{{ vault_apt_repo_blackmagic_auth.password }}"
diff --git a/inventory/group_vars/chaos-at-home_hetzner/vars.yml b/inventory/group_vars/chaos-at-home_hetzner/vars.yml
new file mode 100644
index 00000000..5ba257ac
--- /dev/null
+++ b/inventory/group_vars/chaos-at-home_hetzner/vars.yml
@@ -0,0 +1,2 @@
+---
+apt_repo_provider: hetzner
diff --git a/inventory/group_vars/chaos-at-home_mur-at/vars.yml b/inventory/group_vars/chaos-at-home_mur-at/vars.yml
new file mode 100644
index 00000000..a5990598
--- /dev/null
+++ b/inventory/group_vars/chaos-at-home_mur-at/vars.yml
@@ -0,0 +1,2 @@
+---
+apt_repo_provider: ffgraz
diff --git a/inventory/group_vars/chaos-at-home_n28/vars.yml b/inventory/group_vars/chaos-at-home_n28/vars.yml
new file mode 100644
index 00000000..72806e7f
--- /dev/null
+++ b/inventory/group_vars/chaos-at-home_n28/vars.yml
@@ -0,0 +1,5 @@
+---
+apt_repo_provider: chaos-at-home-cache
+docker_com_apt_repo_baseurl: http://apt.chaos-at-home.org/docker-com
+kubernetes_apt_repo_baseurl: http://apt.chaos-at-home.org/kubernetes
+spreadspace_apt_repo_baseurl: http://apt.chaos-at-home.org/spreadspace
diff --git a/inventory/group_vars/elevate-festival/vars.yml b/inventory/group_vars/elevate-festival/vars.yml
index 53efafba..b236f0f9 100644
--- a/inventory/group_vars/elevate-festival/vars.yml
+++ b/inventory/group_vars/elevate-festival/vars.yml
@@ -172,7 +172,7 @@ network_zones:
ele-br-tub0: 99 # --> ele-br-nextlib0
### Monitoring
- ele-calypso: 203
+ ele-calypso: 209
### UPS
ele-ups-hmtsaal0: 210
diff --git a/inventory/group_vars/promzone-chaos-at-home/vars.yml b/inventory/group_vars/promzone-chaos-at-home/vars.yml
index 67a33f15..b8b785e3 100644
--- a/inventory/group_vars/promzone-chaos-at-home/vars.yml
+++ b/inventory/group_vars/promzone-chaos-at-home/vars.yml
@@ -5,7 +5,7 @@ prometheus_exporters_extra: []
prometheus_exporters_default:
- node
-prometheus_exporter_node_version: 1.8.0
+prometheus_exporter_node_version: 1.8.1
prometheus_exporter_ipmi_version: 1.8.0
prometheus_exporter_ssl_version: 2.4.3
prometheus_exporter_blackbox_version: 0.25.0
@@ -16,7 +16,7 @@ prometheus_exporter_chrony_version: 0.10.0
prometheus_exporter_chrony_disable_dns_lookups: yes
prometheus_exporter_mosquitto_version: 0.7.2
-prometheus_server_version: 2.51.2
+prometheus_server_version: 2.52.0
prometheus_alertmanager_version: 0.27.0
prometheus_server: ch-mon
diff --git a/inventory/group_vars/promzone-elevate-festival/vars.yml b/inventory/group_vars/promzone-elevate-festival/vars.yml
index ba4756ae..b00bdc42 100644
--- a/inventory/group_vars/promzone-elevate-festival/vars.yml
+++ b/inventory/group_vars/promzone-elevate-festival/vars.yml
@@ -5,7 +5,7 @@ prometheus_exporters_extra: []
prometheus_exporters_default:
- node
-prometheus_exporter_node_version: 1.8.0
+prometheus_exporter_node_version: 1.8.1
prometheus_exporter_ipmi_version: 1.8.0
prometheus_exporter_ssl_version: 2.4.3
prometheus_exporter_blackbox_version: 0.25.0
@@ -13,7 +13,7 @@ prometheus_exporter_nut_version: 3.1.1
prometheus_exporter_chrony_version: 0.10.0
prometheus_exporter_chrony_disable_dns_lookups: yes
-prometheus_server_version: 2.51.2
+prometheus_server_version: 2.52.0
prometheus_alertmanager_version: 0.27.0
prometheus_server: ele-calypso
diff --git a/inventory/group_vars/ups/vars.yml b/inventory/group_vars/ups/vars.yml
index bfcbb0a7..52cc65ac 100644
--- a/inventory/group_vars/ups/vars.yml
+++ b/inventory/group_vars/ups/vars.yml
@@ -30,7 +30,6 @@ openwrt_packages_add:
- nut-upsc
- nut-upscmd
- prometheus-node-exporter-lua
- - prometheus-node-exporter-lua-nat_traffic
- prometheus-node-exporter-lua-netstat
- prometheus-node-exporter-lua-openwrt
diff --git a/inventory/host_vars/ch-apps/node-red.yml b/inventory/host_vars/ch-apps/node-red.yml
index c4b80efd..738d875b 100644
--- a/inventory/host_vars/ch-apps/node-red.yml
+++ b/inventory/host_vars/ch-apps/node-red.yml
@@ -5,7 +5,7 @@ _node_red_zfs_base_:
node_red_instances:
node-red.chaos-at-home.org:
- version: 3.1.9
+ version: 3.1.10
port: 1880
credential_secret: "{{ vault_nodered_credential_secrets['node-red.chaos-at-home.org'] }}"
mqtt_tls:
diff --git a/inventory/host_vars/ch-apps/vars.yml b/inventory/host_vars/ch-apps/vars.yml
index 36ca183d..89a6873c 100644
--- a/inventory/host_vars/ch-apps/vars.yml
+++ b/inventory/host_vars/ch-apps/vars.yml
@@ -140,7 +140,7 @@ kubelet_storage:
quota: 10G
'syncoid:sync': 'false'
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 42
kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/ch-cm4-sensors0.yml b/inventory/host_vars/ch-cm4-sensors0.yml
index abc0c0bb..7f7982f1 100644
--- a/inventory/host_vars/ch-cm4-sensors0.yml
+++ b/inventory/host_vars/ch-cm4-sensors0.yml
@@ -3,19 +3,16 @@ raspios_variant: lite
raspios_arch: arm64
network:
- nameservers: "{{ network_zones.svc.dns }}"
- domain: "{{ host_domain }}"
+ nameservers: "{{ network_zones.iot.dns }}"
primary: &_network_primary_
name: eth0
- address: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets[inventory_hostname]) }}"
- gateway: "{{ network_zones.svc.gateway }}"
- static_routes:
- - destination: "{{ network_zones.lan.prefix }}"
- gateway: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets['ch-gw-lan']) | ansible.utils.ipaddr('address') }}"
+ address: "{{ network_zones.iot.prefix | ansible.utils.ipaddr(network_zones.iot.offsets[inventory_hostname]) }}"
interfaces:
- *_network_primary_
raspios_boot_config:
+ - regexp: '^#?dtparam=i2c_arm'
+ line: 'dtparam=i2c_arm=on'
- regexp: '^#?dtparam=i2c_vc'
line: 'dtparam=i2c_vc=on'
- regexp: '^#?dtoverlay=i2c-rtc'
@@ -28,5 +25,17 @@ raspios_boot_config:
line: 'dtoverlay=audremap,pins_18_19'
- regexp: '^#?dtoverlay=gpio-shutdown'
line: 'dtoverlay=gpio-shutdown,gpio_pin=4'
+ - regexp: '^#?dtoverlay=spi0-1cs'
+ line: 'dtoverlay=spi0-1cs'
+ - regexp: '^#?dtoverlay=sc16is752-spi0'
+ line: 'dtoverlay=sc16is752-spi0'
base_entropy_generator: rngd
+
+
+ntp_variant: systemd-timesyncd
+
+ntp_client:
+ servers:
+ - name: "{{ network_zones.iot.prefix | ansible.utils.ipaddr(network_zones.iot.offsets['ch-iot']) | ansible.utils.ipaddr('address') }}"
+ options: iburst
diff --git a/inventory/host_vars/ch-cm4-sensors1.yml b/inventory/host_vars/ch-cm4-sensors1.yml
index abc0c0bb..7f7982f1 100644
--- a/inventory/host_vars/ch-cm4-sensors1.yml
+++ b/inventory/host_vars/ch-cm4-sensors1.yml
@@ -3,19 +3,16 @@ raspios_variant: lite
raspios_arch: arm64
network:
- nameservers: "{{ network_zones.svc.dns }}"
- domain: "{{ host_domain }}"
+ nameservers: "{{ network_zones.iot.dns }}"
primary: &_network_primary_
name: eth0
- address: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets[inventory_hostname]) }}"
- gateway: "{{ network_zones.svc.gateway }}"
- static_routes:
- - destination: "{{ network_zones.lan.prefix }}"
- gateway: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets['ch-gw-lan']) | ansible.utils.ipaddr('address') }}"
+ address: "{{ network_zones.iot.prefix | ansible.utils.ipaddr(network_zones.iot.offsets[inventory_hostname]) }}"
interfaces:
- *_network_primary_
raspios_boot_config:
+ - regexp: '^#?dtparam=i2c_arm'
+ line: 'dtparam=i2c_arm=on'
- regexp: '^#?dtparam=i2c_vc'
line: 'dtparam=i2c_vc=on'
- regexp: '^#?dtoverlay=i2c-rtc'
@@ -28,5 +25,17 @@ raspios_boot_config:
line: 'dtoverlay=audremap,pins_18_19'
- regexp: '^#?dtoverlay=gpio-shutdown'
line: 'dtoverlay=gpio-shutdown,gpio_pin=4'
+ - regexp: '^#?dtoverlay=spi0-1cs'
+ line: 'dtoverlay=spi0-1cs'
+ - regexp: '^#?dtoverlay=sc16is752-spi0'
+ line: 'dtoverlay=sc16is752-spi0'
base_entropy_generator: rngd
+
+
+ntp_variant: systemd-timesyncd
+
+ntp_client:
+ servers:
+ - name: "{{ network_zones.iot.prefix | ansible.utils.ipaddr(network_zones.iot.offsets['ch-iot']) | ansible.utils.ipaddr('address') }}"
+ options: iburst
diff --git a/inventory/host_vars/ch-companion-raspi.yml b/inventory/host_vars/ch-companion-raspi.yml
index 4bff74aa..54051960 100644
--- a/inventory/host_vars/ch-companion-raspi.yml
+++ b/inventory/host_vars/ch-companion-raspi.yml
@@ -29,7 +29,7 @@ docker_pkg_provider: docker-com
docker_plugins:
- buildx
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 42
kubernetes_standalone_cni_variant: with-portmap
@@ -40,4 +40,4 @@ companion_storage:
type: directory
dest: /srv/companion
-companion_version: 3.2.2
+companion_version: 3.3.1
diff --git a/inventory/host_vars/ch-dione.yml b/inventory/host_vars/ch-dione.yml
index 84c48d6c..0357d012 100644
--- a/inventory/host_vars/ch-dione.yml
+++ b/inventory/host_vars/ch-dione.yml
@@ -49,7 +49,7 @@ kubelet_storage:
size: 5G
fs: ext4
-# kubernetes_version: 1.30.0
+# kubernetes_version: 1.30.2
# kubernetes_container_runtime: docker
# kubernetes_standalone_max_pods: 42
# kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/ch-equinox-t450s.yml b/inventory/host_vars/ch-equinox-t450s.yml
index 336b0b7f..1d0864bd 100644
--- a/inventory/host_vars/ch-equinox-t450s.yml
+++ b/inventory/host_vars/ch-equinox-t450s.yml
@@ -11,7 +11,7 @@ ubuntu_autoinstall_manual_partitioning: yes
# edit ESP -> size 128M
# add new GPT Part, 1G, ext4, /boot
# add new GPT Part, rest of disk, unformatted -> create new LVM: name t450s, enable crypto
-# add new LV, root, 50G, ext4, /
+# add new LV, root, 70G, ext4, /
# add new LV, storage, 380G, unformatted
@@ -125,7 +125,6 @@ ws_base_extra_packages:
- flac
- fldigi
- flex
- - freecad
- freerdp2-x11
- fzf
- gcc-avr
@@ -159,11 +158,6 @@ ws_base_extra_packages:
- jq
- kdenlive
- keepassx
- - kicad
- - kicad-footprints
- - kicad-libraries
- - kicad-packages3d
- - kicad-symbols
- kpartx
- libdbd-mysql-perl
- libgpgme11
@@ -408,11 +402,23 @@ ws_minet_wpa_supplicant_conf: "{{ lookup('unvault', ([global_files_dir, 'chaos-a
ws_flatpak_apps:
- name: org.tenacityaudio.Tenacity
- link: tenacity
+ shortcuts:
+ - name: tenacity
- name: org.audacityteam.Audacity
- link: audacity
+ shortcuts:
+ - name: audacity
- name: org.pipewire.Helvum
- link: helvum
+ shortcuts:
+ - name: helvum
- name: org.localsend.localsend_app
- link: localsend
+ shortcuts:
+ - name: localsend
- name: com.st.STM32CubeIDE
+ - name: org.freecadweb.FreeCAD
+ shortcuts:
+ - name: freecad
+ - name: freecadcmd
+ command: FreeCADCmd
+ - name: org.kicad.KiCad
+ shortcuts:
+ - name: kicad
diff --git a/inventory/host_vars/ch-equinox-ws.yml b/inventory/host_vars/ch-equinox-ws.yml
index 18ea12a9..4ead9282 100644
--- a/inventory/host_vars/ch-equinox-ws.yml
+++ b/inventory/host_vars/ch-equinox-ws.yml
@@ -135,7 +135,6 @@ ws_base_extra_packages:
- flac
- fldigi
- flex
- - freecad
- freerdp2-x11
- fzf
- gcc-avr
@@ -166,11 +165,6 @@ ws_base_extra_packages:
- jq
- kdenlive
- keepassx
- - kicad
- - kicad-footprints
- - kicad-libraries
- - kicad-packages3d
- - kicad-symbols
- kpartx
- libdbd-mysql-perl
- libgpgme11
@@ -330,11 +324,23 @@ ws_base_xrandr_setup_script: |
ws_flatpak_apps:
- name: org.tenacityaudio.Tenacity
- link: tenacity
+ shortcuts:
+ - name: tenacity
- name: org.audacityteam.Audacity
- link: audacity
+ shortcuts:
+ - name: audacity
- name: org.pipewire.Helvum
- link: helvum
+ shortcuts:
+ - name: helvum
- name: org.localsend.localsend_app
- link: localsend
+ shortcuts:
+ - name: localsend
- name: com.st.STM32CubeIDE
+ - name: org.freecadweb.FreeCAD
+ shortcuts:
+ - name: freecad
+ - name: freecadcmd
+ command: FreeCADCmd
+ - name: org.kicad.KiCad
+ shortcuts:
+ - name: kicad
diff --git a/inventory/host_vars/ch-helene.yml b/inventory/host_vars/ch-helene.yml
index e831ff26..b9b7c638 100644
--- a/inventory/host_vars/ch-helene.yml
+++ b/inventory/host_vars/ch-helene.yml
@@ -49,7 +49,7 @@ kubelet_storage:
size: 5G
fs: ext4
-# kubernetes_version: 1.30.0
+# kubernetes_version: 1.30.2
# kubernetes_container_runtime: docker
# kubernetes_standalone_max_pods: 42
# kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/ch-iot.yml b/inventory/host_vars/ch-iot.yml
index 3772e9a6..1a5782b4 100644
--- a/inventory/host_vars/ch-iot.yml
+++ b/inventory/host_vars/ch-iot.yml
@@ -49,7 +49,40 @@ ntp_server:
- "{{ network_zones.iot.prefix }}"
+nftables_base_rules:
+ main: |
+ table inet global {
+ chain input_iot {
+ ip protocol icmp accept
+ ip6 nexthdr ipv6-icmp accept
+ tcp dport { domain, http, 1883 } accept
+ udp dport { bootps, domain, ntp } accept
+ }
+
+ chain input {
+ type filter hook input priority filter; policy drop;
+ ct state vmap { established: accept, related: accept, invalid: drop }
+ iifname vmap { lo: accept, svc0: accept, iot0: jump input_iot }
+ }
+
+ chain forward {
+ type filter hook forward priority 0; policy drop;
+ }
+ }
+
+
+coredns_config: |
+ . {
+ bind iot0
+ hosts {
+ {{ network_zones.iot.prefix | ansible.utils.ipaddr(network_zones.iot.offsets[inventory_hostname]) | ansible.utils.ipaddr('address') }} apt.chaos-at-home.org
+ no_reverse
+ }
+ }
+
+
spreadspace_apt_repo_components:
+ - main
- prometheus
diff --git a/inventory/host_vars/ch-mimas.yml b/inventory/host_vars/ch-mimas.yml
index b8716d05..baf60b5e 100644
--- a/inventory/host_vars/ch-mimas.yml
+++ b/inventory/host_vars/ch-mimas.yml
@@ -9,8 +9,6 @@ install:
external_ip: "116.203.212.131"
external_ip6: "2a01:4f8:c2c:906c::2"
-apt_repo_provider: hetzner
-
apt_repo_components:
- main
- contrib ## for zfs
diff --git a/inventory/host_vars/ch-mon.yml b/inventory/host_vars/ch-mon.yml
index 7671b155..64121848 100644
--- a/inventory/host_vars/ch-mon.yml
+++ b/inventory/host_vars/ch-mon.yml
@@ -58,6 +58,30 @@ spreadspace_apt_repo_components:
nftables_base_rules:
+ main: |
+ table inet global {
+ chain input_iot {
+ ip saddr != {{ network_zones.iot.prefix }} drop
+ ip protocol icmp accept
+ ip6 nexthdr ipv6-icmp accept
+ }
+
+ chain input_mgmt {
+ ip saddr != {{ network_zones.mgmt.prefix }} drop
+ ip protocol icmp accept
+ ip6 nexthdr ipv6-icmp accept
+ }
+
+ chain input {
+ type filter hook input priority filter; policy drop;
+ ct state vmap { established: accept, related: accept, invalid: drop }
+ iifname vmap { lo: accept, svc0: accept, iot0: jump input_iot, mgmt0: jump input_mgmt }
+ }
+
+ chain forward {
+ type filter hook forward priority 0; policy drop;
+ }
+ }
protect-grafana-auth-proxy: |
table inet filter {
chain protect-grafana-auth-proxy {
diff --git a/inventory/host_vars/ch-pan.yml b/inventory/host_vars/ch-pan.yml
index c364dd7f..d8e17277 100644
--- a/inventory/host_vars/ch-pan.yml
+++ b/inventory/host_vars/ch-pan.yml
@@ -77,7 +77,7 @@ dyndns:
rname: hostmaster.schaaas.at
refresh: 1200
retry: 900
- expire: 2592000
+ expire: 2419200
default_ttl: 60
static_records:
- "schaaas.at. 7200 IN NS ns0.chaos-at-home.org."
diff --git a/inventory/host_vars/ch-repo.yml b/inventory/host_vars/ch-repo.yml
new file mode 100644
index 00000000..8ff107a5
--- /dev/null
+++ b/inventory/host_vars/ch-repo.yml
@@ -0,0 +1,84 @@
+---
+## for installation only
+# apt_repo_provider: anexia
+install_jumphost: ch-jump
+
+install:
+ vm:
+ memory: 2G
+ numcpus: 2
+ autostart: True
+ disks:
+ primary: /dev/sda
+ scsi:
+ sda:
+ type: zfs
+ name: root
+ size: 10g
+ sdb:
+ type: zfs
+ name: data
+ size: 50g
+ properties:
+ 'syncoid:sync': 'false'
+ interfaces:
+ - bridge: br-svc
+ name: svc0
+
+network:
+ nameservers: "{{ network_zones.svc.dns }}"
+ domain: "{{ host_domain }}"
+ systemd_link:
+ interfaces: "{{ install.interfaces }}"
+ primary: &_network_primary_
+ name: svc0
+ address: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets[inventory_hostname]) }}"
+ gateway: "{{ network_zones.svc.gateway }}"
+ static_routes:
+ - destination: "{{ network_zones.lan.prefix }}"
+ gateway: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets['ch-gw-lan']) | ansible.utils.ipaddr('address') }}"
+ interfaces:
+ - *_network_primary_
+
+
+spreadspace_apt_repo_components:
+ - prometheus
+
+ntp_variant: systemd-timesyncd
+
+
+lvm_groups:
+ storage:
+ pvs:
+ - /dev/sdb
+
+
+approx_storage:
+ type: lvm
+ vg: storage
+ lv: approx
+ size: 15G
+ fs: ext4
+
+approx_hostname: apt.chaos-at-home.org
+
+approx_backends:
+ debian: http://debian.anexia.at/debian
+ debian-security: http://debian.anexia.at/debian-security
+ debian-archive: http://archive.debian.org/debian
+ ubuntu: http://ubuntu.anexia.at/ubuntu
+ kali: http://http.kali.org/kali
+ raspios: http://archive.raspberrypi.com/debian
+ spreadspace: http://build.spreadspace.org
+ kubernetes: "https://pkgs.k8s.io/core:/stable:"
+ docker-com: https://download.docker.com/linux
+
+
+prometheus_job_multitarget_blackbox__probe:
+ ch-mon:
+ - instance: "ssh-{{ inventory_hostname }}"
+ target: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets[inventory_hostname]) | ansible.utils.ipaddr('address') }}:{{ ansible_port | default(22) }}"
+ module: ssh_banner
+ - instance: "http-apt.chaos-at-home.org"
+ target: "http://{{ approx_hostname }}"
+ module: "http_2xx"
diff --git a/inventory/host_vars/ch-router.yml b/inventory/host_vars/ch-router.yml
index 9c07b42d..3f31bcbe 100644
--- a/inventory/host_vars/ch-router.yml
+++ b/inventory/host_vars/ch-router.yml
@@ -49,7 +49,6 @@ openwrt_packages_add:
- wireguard-tools
- iptraf-ng
- prometheus-node-exporter-lua
- - prometheus-node-exporter-lua-nat_traffic
- prometheus-node-exporter-lua-netstat
- prometheus-node-exporter-lua-openwrt
diff --git a/inventory/host_vars/ch-sw0.yml b/inventory/host_vars/ch-sw2.yml
index f2f6d3df..88a7a3c7 100644
--- a/inventory/host_vars/ch-sw0.yml
+++ b/inventory/host_vars/ch-sw2.yml
@@ -1,15 +1,13 @@
---
switch_interfaces_yaml: |
- - spec: Te1/0/1
- description: "sw1"
- switchport_mode: trunk
-
- - spec: Te1/0/2
- description: "RFU"
+ - spec: Te1/0/1-2
+ channel_group: 64
+ - spec: port-channel 64
+ description: "sw0"
switchport_mode: trunk
- spec: Te1/0/3
- description: "FRU"
+ description: "RFU"
vlan: {{ network_zones.lan.vlan }}
- spec: Te1/0/4
diff --git a/inventory/host_vars/ch-sw1.yml b/inventory/host_vars/ch-sw3.yml
index cf77edbf..39dbadf6 100644
--- a/inventory/host_vars/ch-sw1.yml
+++ b/inventory/host_vars/ch-sw3.yml
@@ -1,15 +1,13 @@
---
switch_interfaces_yaml: |
- - spec: Te1/0/1
+ - spec: Te1/0/1-2
+ channel_group: 64
+ - spec: port-channel 64
description: "sw0"
switchport_mode: trunk
- - spec: Te1/0/2
- description: "RFU"
- switchport_mode: trunk
-
- spec: Te1/0/3
- description: "epimetheus"
+ description: "RFU"
vlan: {{ network_zones.lan.vlan }}
- spec: Te1/0/4
diff --git a/inventory/host_vars/ch-tarvos.yml b/inventory/host_vars/ch-tarvos.yml
index f92255b3..1b457d84 100644
--- a/inventory/host_vars/ch-tarvos.yml
+++ b/inventory/host_vars/ch-tarvos.yml
@@ -12,6 +12,7 @@ debian_preseed_install_tasks:
install:
+ efi: no
disks:
primary: /dev/disk/by-id/ata-Samsung_SSD_850_PRO_128GB_S1SMNSAG201847J
system_lvm:
diff --git a/inventory/host_vars/ch-testvm-hcloud.yml b/inventory/host_vars/ch-testvm-hcloud.yml
index f9e59624..66a1ab01 100644
--- a/inventory/host_vars/ch-testvm-hcloud.yml
+++ b/inventory/host_vars/ch-testvm-hcloud.yml
@@ -5,6 +5,3 @@ install:
cloud:
credentials:
token: "{{ vault_hcloud_api_token }}"
-
-
-apt_repo_provider: hetzner
diff --git a/inventory/host_vars/ele-calypso.yml b/inventory/host_vars/ele-calypso.yml
index 5280da0c..2f5648ac 100644
--- a/inventory/host_vars/ele-calypso.yml
+++ b/inventory/host_vars/ele-calypso.yml
@@ -74,7 +74,7 @@ kubelet_storage:
size: 5G
fs: ext4
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 42
kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/ele-companion-raspi.yml b/inventory/host_vars/ele-companion-raspi.yml
index 5f30ce02..3f2a6c69 100644
--- a/inventory/host_vars/ele-companion-raspi.yml
+++ b/inventory/host_vars/ele-companion-raspi.yml
@@ -29,7 +29,7 @@ docker_pkg_provider: docker-com
docker_plugins:
- buildx
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 42
kubernetes_standalone_cni_variant: with-portmap
@@ -40,11 +40,11 @@ companion_storage:
type: directory
dest: /srv/companion
-companion_version: 3.2.2
+companion_version: 3.3.1
ontime_storage:
type: directory
dest: /srv/ontime
-ontime_version: 2.28.17
+ontime_version: 3.1.1
diff --git a/inventory/host_vars/ele-coturn.yml b/inventory/host_vars/ele-coturn.yml
index 4264a6a0..2186b775 100644
--- a/inventory/host_vars/ele-coturn.yml
+++ b/inventory/host_vars/ele-coturn.yml
@@ -27,7 +27,7 @@ acme_directory_server: "{{ acme_directory_server_le_live_v2 }}"
acme_client: acmetool
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 100
kubernetes_standalone_pod_cidr: 192.168.255.0/24
diff --git a/inventory/host_vars/ele-helene.yml b/inventory/host_vars/ele-helene.yml
index 750e9317..8d73ce80 100644
--- a/inventory/host_vars/ele-helene.yml
+++ b/inventory/host_vars/ele-helene.yml
@@ -91,7 +91,7 @@ kubelet_storage:
size: 5G
fs: ext4
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 42
kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/ele-jitsi.yml b/inventory/host_vars/ele-jitsi.yml
index 19c5b115..b242e0bc 100644
--- a/inventory/host_vars/ele-jitsi.yml
+++ b/inventory/host_vars/ele-jitsi.yml
@@ -32,7 +32,7 @@ acme_directory_server: "{{ acme_directory_server_le_live_v2 }}"
acme_client: acmetool
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 100
kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/ele-media.yml b/inventory/host_vars/ele-media.yml
index 741b73bb..09f08d63 100644
--- a/inventory/host_vars/ele-media.yml
+++ b/inventory/host_vars/ele-media.yml
@@ -72,7 +72,7 @@ kubelet_storage:
size: 5G
fs: ext4
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_cni_variant: with-portmap
@@ -133,7 +133,7 @@ elevate_media_nextcloud_storage:
elevate_media_nextcloud_instance_name: media.elev8.at
elevate_media_nextcloud_instance:
- version: 28.0.4
+ version: 29.0.1
port: 8100
hostnames:
- media.elev8.at
diff --git a/inventory/host_vars/ele-router-emc.yml b/inventory/host_vars/ele-router-emc.yml
index ae933d1a..9a1199ec 100644
--- a/inventory/host_vars/ele-router-emc.yml
+++ b/inventory/host_vars/ele-router-emc.yml
@@ -138,7 +138,6 @@ openwrt_packages_add:
- mtr
- iptraf-ng
- prometheus-node-exporter-lua
- - prometheus-node-exporter-lua-nat_traffic
- prometheus-node-exporter-lua-netstat
- prometheus-node-exporter-lua-openwrt
diff --git a/inventory/host_vars/ele-router-hmtsaal.yml b/inventory/host_vars/ele-router-hmtsaal.yml
index 426e4c02..827e207e 100644
--- a/inventory/host_vars/ele-router-hmtsaal.yml
+++ b/inventory/host_vars/ele-router-hmtsaal.yml
@@ -170,7 +170,6 @@ openwrt_packages_add:
- sqm-scripts
- openvpn-openssl
- prometheus-node-exporter-lua
- - prometheus-node-exporter-lua-nat_traffic
- prometheus-node-exporter-lua-netstat
- prometheus-node-exporter-lua-openwrt
diff --git a/inventory/host_vars/ele-router-orpheum.yml b/inventory/host_vars/ele-router-orpheum.yml
index 890bd293..9b0fad43 100644
--- a/inventory/host_vars/ele-router-orpheum.yml
+++ b/inventory/host_vars/ele-router-orpheum.yml
@@ -168,7 +168,6 @@ openwrt_packages_add:
- sqm-scripts
- openvpn-openssl
- prometheus-node-exporter-lua
- - prometheus-node-exporter-lua-nat_traffic
- prometheus-node-exporter-lua-netstat
- prometheus-node-exporter-lua-openwrt
diff --git a/inventory/host_vars/ele-thetys.yml b/inventory/host_vars/ele-thetys.yml
index af76d2e6..2144327c 100644
--- a/inventory/host_vars/ele-thetys.yml
+++ b/inventory/host_vars/ele-thetys.yml
@@ -76,7 +76,7 @@ kubelet_storage:
size: 5G
fs: ext4
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 42
kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/ele-tub.yml b/inventory/host_vars/ele-tub.yml
index 46d165e8..ff950a29 100644
--- a/inventory/host_vars/ele-tub.yml
+++ b/inventory/host_vars/ele-tub.yml
@@ -38,7 +38,6 @@ openwrt_packages_add:
- mtr
- iptraf-ng
- prometheus-node-exporter-lua
- - prometheus-node-exporter-lua-nat_traffic
- prometheus-node-exporter-lua-netstat
- prometheus-node-exporter-lua-openwrt
diff --git a/inventory/host_vars/glt-jitsi.yml b/inventory/host_vars/glt-jitsi.yml
index 28fa7906..f54997e4 100644
--- a/inventory/host_vars/glt-jitsi.yml
+++ b/inventory/host_vars/glt-jitsi.yml
@@ -27,7 +27,7 @@ acme_directory_server: "{{ acme_directory_server_le_live_v2 }}"
acme_client: acmetool
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 100
kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/s2-thetys.yml b/inventory/host_vars/s2-thetys.yml
index 809eade7..337b0f5d 100644
--- a/inventory/host_vars/s2-thetys.yml
+++ b/inventory/host_vars/s2-thetys.yml
@@ -53,7 +53,7 @@ kubelet_storage:
size: 5G
fs: ext4
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 42
kubernetes_standalone_cni_variant: with-portmap
diff --git a/inventory/host_vars/sk-cloudio/nextcloud.yml b/inventory/host_vars/sk-cloudio/nextcloud.yml
index 82ffca47..a795fbaf 100644
--- a/inventory/host_vars/sk-cloudio/nextcloud.yml
+++ b/inventory/host_vars/sk-cloudio/nextcloud.yml
@@ -8,7 +8,7 @@ nextcloud_zfs:
nextcloud_instances:
luzesombra.skillz.biz:
# new: true
- version: 28.0.4
+ version: 29.0.1
port: 8100
hostnames:
- luzesombra.skillz.biz
@@ -22,7 +22,7 @@ nextcloud_instances:
password: "{{ vault_nextcloud_database_passwords['luzesombra.skillz.biz'] }}"
insomnia.skillz.biz:
# new: true
- version: 28.0.4
+ version: 29.0.1
port: 8101
hostnames:
- insomnia.skillz.biz
@@ -36,7 +36,7 @@ nextcloud_instances:
password: "{{ vault_nextcloud_database_passwords['insomnia.skillz.biz'] }}"
nc.skillz.biz:
# new: true
- version: 28.0.4
+ version: 29.0.1
port: 8102
hostnames:
- nc.skillz.biz
@@ -58,7 +58,7 @@ nextcloud_instances:
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
visuals.pixeldada.com:
# new: true
- version: 28.0.4
+ version: 29.0.1
port: 8103
hostnames:
- visuals.pixeldada.com
@@ -80,7 +80,7 @@ nextcloud_instances:
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
wolke.elev8.at:
# new: true
- version: 28.0.4
+ version: 29.0.1
port: 8105
hostnames:
- wolke.elev8.at
diff --git a/inventory/host_vars/sk-cloudio/vars.yml b/inventory/host_vars/sk-cloudio/vars.yml
index 36c6dfe6..a6306161 100644
--- a/inventory/host_vars/sk-cloudio/vars.yml
+++ b/inventory/host_vars/sk-cloudio/vars.yml
@@ -73,7 +73,7 @@ kubelet_storage:
properties:
quota: 20G
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 100
kubernetes_standalone_pod_cidr: 192.168.255.0/24
diff --git a/inventory/host_vars/sk-testvm.yml b/inventory/host_vars/sk-testvm.yml
index 8ad7aba8..860be21d 100644
--- a/inventory/host_vars/sk-testvm.yml
+++ b/inventory/host_vars/sk-testvm.yml
@@ -56,7 +56,7 @@ kubelet_storage:
size: 1G
fs: ext4
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 100
kubernetes_standalone_pod_cidr: 192.168.255.0/24
diff --git a/inventory/host_vars/sk-tomnext-nc.yml b/inventory/host_vars/sk-tomnext-nc.yml
index b0e809aa..6d57f701 100644
--- a/inventory/host_vars/sk-tomnext-nc.yml
+++ b/inventory/host_vars/sk-tomnext-nc.yml
@@ -88,7 +88,7 @@ kubelet_storage:
properties:
quota: 15G
-kubernetes_version: 1.30.0
+kubernetes_version: 1.30.2
kubernetes_container_runtime: docker
kubernetes_standalone_max_pods: 15
kubernetes_standalone_cni_variant: with-portmap
@@ -117,7 +117,7 @@ nextcloud_zfs:
nextcloud_instances:
team.tomwaitz.eu:
# new: true
- version: 28.0.4
+ version: 29.0.1
port: 8100
hostnames:
- team.tomwaitz.eu
diff --git a/inventory/hosts.ini b/inventory/hosts.ini
index 4ab98ab6..01d3eae3 100644
--- a/inventory/hosts.ini
+++ b/inventory/hosts.ini
@@ -8,11 +8,7 @@ python_basename=python3
###############################
# environment: chaos-at-home
-[chaos-at-home:vars]
-host_domain=chaos-at-home.org
-env_group=chaos-at-home
-
-[chaos-at-home]
+[chaos-at-home_n28]
ch-phoebe host_name=phoebe
ch-testvm-phoebe host_name=testvm-phoebe
ch-router host_name=router
@@ -22,10 +18,9 @@ ch-jump host_name=jump ansible_port=2342 ansible_host=ch-jump
ch-nic host_name=nic
ch-gw-c3voc host_name=gw-c3voc
ch-equinox-ws host_name=equinox-ws
-ch-equinox-t450s host_name=equinox-t450s
-ch-chromebook host_name=chromebook
ch-prometheus host_name=prometheus
ch-apps host_name=apps
+ch-repo host_name=repo
ch-http-proxy host_name=http-proxy
ch-imap-proxy host_name=imap-proxy
ch-prometheus-legacy host_name=prometheus
@@ -42,14 +37,6 @@ ch-cm4-sensors1 host_name=cm4-sensors1
ch-mclr host_name=mclr
ch-mcbr host_name=mcbr
ch-octopi host_name=octopi
-ch-atlas host_name=atlas
-ch-pan-legacy host_name=pan
-ch-pan host_name=pan
-ch-testvm-atlas host_name=testvm-atlas
-ch-mimas-legacy host_name=mimas
-ch-mimas host_name=mimas
-ch-testvm-hcloud host_name=testvm-hcloud
-ch-testvm-edis host_name=testvm-edis
ch-telesto host_name=telesto
ch-calypso host_name=calypso
@@ -76,22 +63,51 @@ ch-hdmistick host_name=hdmistick
ch-companion-raspi
ch-rpi5-test
-[chaos-at-home:children]
-mz-chaos-at-home
+[chaos-at-home_n28:children]
chaos-at-home-switches
chaos-at-home-ap
chaos-at-home-sensors
chaos-at-home-ups
-[mz-chaos-at-home]
+[chaos-at-home_mz]
mz-router ansible_host=chmz-router
mz-ap ansible_host=chmz-ap
+[chaos-at-home_mur-at]
+ch-atlas host_name=atlas
+ch-pan-legacy host_name=pan
+ch-pan host_name=pan
+ch-testvm-atlas host_name=testvm-atlas
+
+[chaos-at-home_hetzner]
+ch-mimas-legacy host_name=mimas
+ch-mimas host_name=mimas
+ch-testvm-hcloud host_name=testvm-hcloud
+
+[chaos-at-home_edis]
+ch-testvm-edis host_name=testvm-edis
+
+
+[chaos-at-home:vars]
+host_domain=chaos-at-home.org
+env_group=chaos-at-home
+
+[chaos-at-home]
+ch-equinox-t450s host_name=equinox-t450s
+ch-chromebook host_name=chromebook
+[chaos-at-home:children]
+chaos-at-home_n28
+chaos-at-home_mz
+chaos-at-home_mur-at
+chaos-at-home_hetzner
+chaos-at-home_edis
+
+
[chaos-at-home-switches:vars]
ansible_port=22
[chaos-at-home-switches]
-ch-sw0 host_name=sw0 ansible_host=192.168.42.200
-ch-sw1 host_name=sw1 ansible_host=192.168.42.201
+ch-sw2 host_name=sw2 ansible_host=192.168.42.202
+ch-sw3 host_name=sw3 ansible_host=192.168.42.203
[chaos-at-home-ap]
ch-ap0 host_name=ap0
@@ -378,6 +394,7 @@ vmhost-ch-phoebe-guests
[vmhost-ch-prometheus-guests]
ch-apps
+ch-repo
ch-http-proxy
ch-imap-proxy
ch-prometheus-legacy
@@ -472,6 +489,7 @@ ch-iot
ch-http-proxy
ch-imap-proxy
ch-greenbone
+ch-repo
[promzone-chaos-at-home:children]
chaos-at-home-ap
chaos-at-home-ups
@@ -542,6 +560,7 @@ sk-torrent
r3-0x10
[hetzner:children]
+chaos-at-home_hetzner
hroot
hcloud
@@ -559,6 +578,7 @@ ch-testvm-edis
[edis:children]
edis-kvm
+chaos-at-home_edis
## misc
diff --git a/roles/approx/defaults/main.yml b/roles/approx/defaults/main.yml
new file mode 100644
index 00000000..d0894b58
--- /dev/null
+++ b/roles/approx/defaults/main.yml
@@ -0,0 +1,12 @@
+---
+approx_basepath: /srv/approx
+
+# approx_storage:
+# type: ...
+
+# approx_hostname: apt.example.com
+
+# apt_cacher_ng_remaps:
+# debian: http://deb.debian.org/debian
+# debian-security: http://security.debian.org
+# ubuntu: http://archive.ubuntu.com/ubuntu
diff --git a/roles/approx/handlers/main.yml b/roles/approx/handlers/main.yml
new file mode 100644
index 00000000..dfae79a6
--- /dev/null
+++ b/roles/approx/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart approx socket
+ systemd:
+ name: approx.socket
+ state: restarted
diff --git a/roles/approx/tasks/main.yml b/roles/approx/tasks/main.yml
new file mode 100644
index 00000000..26c8f8d4
--- /dev/null
+++ b/roles/approx/tasks/main.yml
@@ -0,0 +1,91 @@
+---
+- name: prepare storage volume for approx
+ when: approx_storage is defined
+ vars:
+ storage_volume: "{{ approx_storage | combine({'dest': approx_basepath}) }}"
+ include_role:
+ name: "storage/{{ approx_storage.type }}/volume"
+
+- name: install approx
+ apt:
+ name: approx
+ state: present
+
+- name: make sure cache and tmp directories exist
+ loop:
+ - cache
+ - tmp
+ file:
+ state: directory
+ path: "{{ approx_basepath }}/{{ item }}"
+ mode: 0700
+ owner: approx
+ group: approx
+
+- name: generate approx config
+ copy:
+ content: |
+ # ansible managed
+
+ {% for name, remote in approx_backends.items() %}
+ {{ name }} {{ remote }}
+ {% endfor %}
+
+ $cache {{ approx_basepath }}/cache
+ dest: /etc/approx/approx.conf
+
+- name: create override directories for approx systemd units
+ loop:
+ - approx@.service
+ - approx.socket
+ file:
+ state: directory
+ path: "/etc/systemd/system/{{ item }}.d"
+
+- name: create appprox service override
+ copy:
+ content: |
+ # ansible managed
+ [Unit]
+ CollectMode=inactive-or-failed
+
+ [Service]
+ Environment=TMPDIR="{{ approx_basepath }}/tmp"
+ dest: /etc/systemd/system/approx@.service.d/ansible.conf
+ notify: restart approx socket
+
+- name: create appprox socket override
+ copy:
+ content: |
+ # ansible managed
+ [Socket]
+ ListenStream=
+ ListenStream=127.0.0.1:19999
+ dest: /etc/systemd/system/approx.socket.d/ansible.conf
+ notify: restart approx socket
+
+- name: make sure approx socket is started
+ systemd:
+ daemon_reload: yes
+ name: approx.socket
+ state: started
+
+- name: fix path to cache directory for cleanup cron script
+ lineinfile:
+ path: /etc/cron.weekly/approx
+ regexp: '^cache='
+ line: 'cache={{ approx_basepath }}/cache'
+
+- name: configure nginx vhost
+ vars:
+ nginx_vhost:
+ default: yes
+ name: approx
+ template: generic
+ hostnames:
+ - "{{ approx_hostname }}"
+ locations:
+ '/':
+ proxy_pass: http://127.0.0.1:19999
+ include_role:
+ name: nginx/vhost
diff --git a/roles/apt-cacher-ng/defaults/main.yml b/roles/apt-cacher-ng/defaults/main.yml
new file mode 100644
index 00000000..e172d7da
--- /dev/null
+++ b/roles/apt-cacher-ng/defaults/main.yml
@@ -0,0 +1,23 @@
+---
+# apt_cacher_ng_storage:
+# type: ...
+
+# apt_cacher_ng_hostname: apt.example.com
+
+# apt_cacher_ng_remaps:
+# debrep:
+# path: /debian
+# backends:
+# - http://deb.debian.org/debian
+# debsec:
+# path: /debian-security
+# backends:
+# - http://security.debian.org
+# uburep:
+# path: /ubuntu
+# backends:
+# - http://archive.ubuntu.com/ubuntu
+
+# apt_cacher_ng_admin_auth:
+# username: admin
+# password: secret
diff --git a/roles/apt-cacher-ng/handlers/main.yml b/roles/apt-cacher-ng/handlers/main.yml
new file mode 100644
index 00000000..80718ec2
--- /dev/null
+++ b/roles/apt-cacher-ng/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart apt-cacher-ng
+ service:
+ name: apt-cacher-ng
+ state: restarted
diff --git a/roles/apt-cacher-ng/tasks/main.yml b/roles/apt-cacher-ng/tasks/main.yml
new file mode 100644
index 00000000..df47ee9e
--- /dev/null
+++ b/roles/apt-cacher-ng/tasks/main.yml
@@ -0,0 +1,100 @@
+---
+- name: create apt-cacher-ng user
+ user:
+ name: apt-cacher-ng
+ home: /var/cache/apt-cacher-ng
+ shell: /usr/sbin/nologin
+ create_home: no
+ system: yes
+ state: present
+
+- name: prepare storage volume for /var/cache/apt-cacher-ng
+ when: apt_cacher_ng_storage is defined
+ vars:
+ apt_cacher_ng_storage_override:
+ dest: /var/cache/apt-cacher-ng
+ owner: apt-cacher-ng
+ group: apt-cacher-ng
+ mode: '02755'
+ storage_volume: "{{ apt_cacher_ng_storage | combine(apt_cacher_ng_storage_override) }}"
+ include_role:
+ name: "storage/{{ apt_cacher_ng_storage.type }}/volume"
+
+- name: install apt-cacher-ng
+ apt:
+ name: apt-cacher-ng
+ state: present
+
+- name: fetch current remaps
+ slurp:
+ src: /etc/apt-cacher-ng/acng.conf
+ register: apt_cacher_ng_config_data
+
+- name: fetch current backend files
+ find:
+ paths: /etc/apt-cacher-ng
+ patterns: 'backends_*'
+ recurse: no
+ file_type: any
+ register: apt_cacher_ng_backends_files
+
+- name: remove superflous remaps
+ loop: "{{ (apt_cacher_ng_config_data.content | b64decode).splitlines() | select('match', '^Remap-') | map('regex_replace', '^Remap-([^:]*):.*$', '\\1') }}"
+ lineinfile:
+ path: /etc/apt-cacher-ng/acng.conf
+ regexp: '^Remap-{{ item }}:.*'
+ state: absent
+ notify: restart apt-cacher-ng
+
+- name: remove superflous backend files
+ loop: "{{ apt_cacher_ng_backends_files.files | map(attribute='path') | map('basename') | map('regex_replace', '^backends_(.*)$', '\\1') | difference(apt_cacher_ng_remaps | list) }}"
+ file:
+ path: "/etc/apt-cacher-ng/backends_{{ item }}"
+ state: absent
+
+- name: add ansible config
+ copy:
+ content: |
+ # ansible managed
+
+ BindAddress: 127.0.0.1
+
+ ForceManaged: 1
+ {% for name, config in apt_cacher_ng_remaps.items() %}
+ Remap-{{ name }}: {{ config.path }} ; file:backends_{{ name }}
+ {% endfor %}
+ dest: /etc/apt-cacher-ng/zzz_ansible.conf
+ notify: restart apt-cacher-ng
+
+- name: create backend files
+ loop: "{{ apt_cacher_ng_remaps | dict2items }}"
+ loop_control:
+ label: "{{ item.key }}"
+ copy:
+ content: |
+ {% for backend in item.value.backends %}
+ {{ backend }}
+ {% endfor %}
+ dest: "/etc/apt-cacher-ng/backends_{{ item.key }}"
+ notify: restart apt-cacher-ng
+
+- name: configure admin auth
+ lineinfile:
+ path: /etc/apt-cacher-ng/security.conf
+ regexp: '#\s*AdminAuth:'
+ line: "AdminAuth: {{ apt_cacher_ng_admin_auth.username }}:{{ apt_cacher_ng_admin_auth.password }}"
+ notify: restart apt-cacher-ng
+
+- name: configure nginx vhost
+ vars:
+ nginx_vhost:
+ default: yes
+ name: apt-cacher-ng
+ template: generic
+ hostnames:
+ - "{{ apt_cacher_ng_hostname }}"
+ locations:
+ '/':
+ proxy_pass: http://127.0.0.1:3142
+ include_role:
+ name: nginx/vhost
diff --git a/roles/apt-repo/aptly/tasks/main.yml b/roles/apt-repo/aptly/tasks/main.yml
index 11f3d44f..3bb7d4c1 100644
--- a/roles/apt-repo/aptly/tasks/main.yml
+++ b/roles/apt-repo/aptly/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/aptly.gpg
register: apt_repo_aptly_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/aptly.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/base/tasks/main.yml b/roles/apt-repo/base/tasks/main.yml
index 668f6453..27050b40 100644
--- a/roles/apt-repo/base/tasks/main.yml
+++ b/roles/apt-repo/base/tasks/main.yml
@@ -13,6 +13,11 @@
path: "/etc/apt/sources.list.d/{{ item }}"
state: absent
+- name: remove seperate raspi.list file (repo is part of the base config)
+ file:
+ path: "/etc/apt/sources.list.d/raspi.list"
+ state: absent
+
- name: update apt cache
when: apt_repo_base_sources is changed
command: apt-get update
diff --git a/roles/apt-repo/base/templates/Debian.list.j2 b/roles/apt-repo/base/templates/Debian.list.j2
index 91531f7e..d29ced50 100644
--- a/roles/apt-repo/base/templates/Debian.list.j2
+++ b/roles/apt-repo/base/templates/Debian.list.j2
@@ -5,3 +5,6 @@ deb http://{{ apt_repo_providers[apt_repo_provider].debian_security.host }}{{ ap
{% else %}
deb http://{{ apt_repo_providers[apt_repo_provider].debian_security.host }}{{ apt_repo_providers[apt_repo_provider].debian_security.path }} {{ ansible_distribution_release }}-security {{ apt_repo_components | default(apt_repo_base_components.debian) | join(' ') }}
{% endif %}
+{% if 'raspios' in group_names %}
+deb http://{{ apt_repo_providers[apt_repo_provider].raspios.host }}{{ apt_repo_providers[apt_repo_provider].raspios.path }} {{ ansible_distribution_release }} main
+{% endif %}
diff --git a/roles/apt-repo/blackmagic/tasks/main.yml b/roles/apt-repo/blackmagic/tasks/main.yml
index e376fe9f..a6060e36 100644
--- a/roles/apt-repo/blackmagic/tasks/main.yml
+++ b/roles/apt-repo/blackmagic/tasks/main.yml
@@ -5,16 +5,6 @@
dest: /etc/apt/keyrings/spreadspace.gpg
register: apt_repo_blackmagic_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old locations
- loop:
- - /etc/apt/trusted.gpg.d/blackmagic.gpg
- - /etc/apt/keyrings/blackmagic.gpg
- file:
- path: "{{ item }}"
- state: absent
-
-
- name: configure repo authentication
when:
- ansible_distribution == "Debian"
diff --git a/roles/apt-repo/docker-com/defaults/main.yml b/roles/apt-repo/docker-com/defaults/main.yml
new file mode 100644
index 00000000..a075c9cc
--- /dev/null
+++ b/roles/apt-repo/docker-com/defaults/main.yml
@@ -0,0 +1,2 @@
+---
+docker_com_apt_repo_baseurl: "https://download.docker.com/linux"
diff --git a/roles/apt-repo/docker-com/tasks/main.yml b/roles/apt-repo/docker-com/tasks/main.yml
index c63fdb37..648196f7 100644
--- a/roles/apt-repo/docker-com/tasks/main.yml
+++ b/roles/apt-repo/docker-com/tasks/main.yml
@@ -5,16 +5,10 @@
dest: /etc/apt/keyrings/docker-com.gpg
register: apt_repo_docker_com_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/docker-com.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
- deb [signed-by=/etc/apt/keyrings/docker-com.gpg] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable
+ deb [signed-by=/etc/apt/keyrings/docker-com.gpg] {{ docker_com_apt_repo_baseurl }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable
dest: /etc/apt/sources.list.d/docker-com.list
register: apt_repo_docker_com_sources
diff --git a/roles/apt-repo/element/tasks/main.yml b/roles/apt-repo/element/tasks/main.yml
index 6971baab..1f856500 100644
--- a/roles/apt-repo/element/tasks/main.yml
+++ b/roles/apt-repo/element/tasks/main.yml
@@ -5,16 +5,6 @@
dest: /etc/apt/keyrings/element.gpg
register: apt_repo_element_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- loop:
- - /etc/apt/trusted.gpg.d/element.gpg
- - /etc/apt/keyrings/riot.gpg
- - /etc/apt/sources.list.d/riot.list
- file:
- path: "{{ item }}"
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/freecad/files/repo.gpg b/roles/apt-repo/freecad/files/repo.gpg
deleted file mode 100644
index 79cc23e8..00000000
--- a/roles/apt-repo/freecad/files/repo.gpg
+++ /dev/null
Binary files differ
diff --git a/roles/apt-repo/freecad/tasks/main.yml b/roles/apt-repo/freecad/tasks/main.yml
deleted file mode 100644
index 2f6f48e1..00000000
--- a/roles/apt-repo/freecad/tasks/main.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- name: add repository key
- copy:
- src: repo.gpg
- dest: /etc/apt/keyrings/freecad.gpg
- register: apt_repo_freecad_key
-
-- name: add repository entry
- copy:
- content: |
- deb [signed-by=/etc/apt/keyrings/freecad.gpg] https://ppa.launchpadcontent.net/freecad-maintainers/freecad-stable/ubuntu {{ ansible_distribution_release }} main
- dest: /etc/apt/sources.list.d/freecad.list
- register: apt_repo_freecad_sources
-
-- name: update apt cache
- when: apt_repo_freecad_key is changed or
- apt_repo_freecad_sources is changed
- command: apt-get update
diff --git a/roles/apt-repo/grafana/tasks/main.yml b/roles/apt-repo/grafana/tasks/main.yml
index f5bf1275..1b3f10c6 100644
--- a/roles/apt-repo/grafana/tasks/main.yml
+++ b/roles/apt-repo/grafana/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/grafana.gpg
register: apt_repo_grafana_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/grafana.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/helsinki/tasks/main.yml b/roles/apt-repo/helsinki/tasks/main.yml
index fd8ac760..40e011ea 100644
--- a/roles/apt-repo/helsinki/tasks/main.yml
+++ b/roles/apt-repo/helsinki/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/helsinki.gpg
register: apt_repo_helsinki_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/helsinki.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/kicad6/files/repo.gpg b/roles/apt-repo/kicad6/files/repo.gpg
deleted file mode 100644
index 274698cd..00000000
--- a/roles/apt-repo/kicad6/files/repo.gpg
+++ /dev/null
Binary files differ
diff --git a/roles/apt-repo/kicad6/tasks/main.yml b/roles/apt-repo/kicad6/tasks/main.yml
deleted file mode 100644
index 7eea235e..00000000
--- a/roles/apt-repo/kicad6/tasks/main.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- name: add repository key
- copy:
- src: repo.gpg
- dest: /etc/apt/keyrings/kicad6.gpg
- register: apt_repo_kicad6_key
-
-- name: add repository entry
- copy:
- content: |
- deb [signed-by=/etc/apt/keyrings/kicad6.gpg] https://ppa.launchpadcontent.net/kicad/kicad-6.0-releases/ubuntu {{ ansible_distribution_release }} main
- dest: /etc/apt/sources.list.d/kicad6.list
- register: apt_repo_kicad6_sources
-
-- name: update apt cache
- when: apt_repo_kicad6_key is changed or
- apt_repo_kicad6_sources is changed
- command: apt-get update
diff --git a/roles/apt-repo/kodi/tasks/main.yml b/roles/apt-repo/kodi/tasks/main.yml
index f6fcbc5f..c7938b0d 100644
--- a/roles/apt-repo/kodi/tasks/main.yml
+++ b/roles/apt-repo/kodi/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/kodi.gpg
register: apt_repo_kodi_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/kodi.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/kubernetes/defaults/main.yml b/roles/apt-repo/kubernetes/defaults/main.yml
new file mode 100644
index 00000000..486c457a
--- /dev/null
+++ b/roles/apt-repo/kubernetes/defaults/main.yml
@@ -0,0 +1,2 @@
+---
+kubernetes_apt_repo_baseurl: "https://pkgs.k8s.io/core:/stable:"
diff --git a/roles/apt-repo/kubernetes/tasks/main.yml b/roles/apt-repo/kubernetes/tasks/main.yml
index e2f0444b..9198cb10 100644
--- a/roles/apt-repo/kubernetes/tasks/main.yml
+++ b/roles/apt-repo/kubernetes/tasks/main.yml
@@ -8,7 +8,7 @@
- name: add repository entry
copy:
content: |
- deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://pkgs.k8s.io/core:/stable:/v{{ ([0, 1] | map('extract', kubernetes_version.split('.'))) | join('.') }}/deb/ /
+ deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] {{ kubernetes_apt_repo_baseurl }}/v{{ ([0, 1] | map('extract', kubernetes_version.split('.'))) | join('.') }}/deb/ /
dest: /etc/apt/sources.list.d/kubernetes.list
register: apt_repo_kubernetes_sources
diff --git a/roles/apt-repo/kubic-project/files/repo.gpg b/roles/apt-repo/kubic-project/files/repo.gpg
deleted file mode 100644
index 9b827ee8..00000000
--- a/roles/apt-repo/kubic-project/files/repo.gpg
+++ /dev/null
Binary files differ
diff --git a/roles/apt-repo/kubic-project/tasks/main.yml b/roles/apt-repo/kubic-project/tasks/main.yml
deleted file mode 100644
index 386815bc..00000000
--- a/roles/apt-repo/kubic-project/tasks/main.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-- name: add repository key
- copy:
- src: repo.gpg
- dest: /etc/apt/keyrings/kubic-project.gpg
- register: apt_repo_kubic_project_key
-
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/kubic-project.gpg
- state: absent
-
-- name: add repository entry
- copy:
- content: |
- deb [signed-by=/etc/apt/keyrings/kubic-project.gpg] http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/{{ (ansible_distribution == 'Ubuntu') | ternary('xUbuntu', ansible_distribution) }}_{{ ansible_distribution_version }}/ /
- dest: /etc/apt/sources.list.d/kubic-project.list
- register: apt_repo_kubic_project_sources
-
-- name: update apt cache
- when: apt_repo_kubic_project_key is changed or
- apt_repo_kubic_project_sources is changed
- command: apt-get update
diff --git a/roles/apt-repo/nodejs/tasks/main.yml b/roles/apt-repo/nodejs/tasks/main.yml
index 5c59cf5a..69af27a1 100644
--- a/roles/apt-repo/nodejs/tasks/main.yml
+++ b/roles/apt-repo/nodejs/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/nodejs.gpg
register: apt_repo_nodejs_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/nodejs.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/nordvpn/tasks/main.yml b/roles/apt-repo/nordvpn/tasks/main.yml
index 32711ad0..923c2fb0 100644
--- a/roles/apt-repo/nordvpn/tasks/main.yml
+++ b/roles/apt-repo/nordvpn/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/nordvpn.gpg
register: apt_repo_nordvpn_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/nordvpn.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/obs-studio/tasks/main.yml b/roles/apt-repo/obs-studio/tasks/main.yml
index e3933596..9a966268 100644
--- a/roles/apt-repo/obs-studio/tasks/main.yml
+++ b/roles/apt-repo/obs-studio/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/obs-studio.gpg
register: apt_repo_obs_studio_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/obs-studio.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/percona/tasks/main.yml b/roles/apt-repo/percona/tasks/main.yml
index 59f7f2a9..51ed9426 100644
--- a/roles/apt-repo/percona/tasks/main.yml
+++ b/roles/apt-repo/percona/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/percona.gpg
register: apt_repo_percona_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/percona.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/apt-repo/spreadspace/defaults/main.yml b/roles/apt-repo/spreadspace/defaults/main.yml
index 4a497ae4..0de65a6a 100644
--- a/roles/apt-repo/spreadspace/defaults/main.yml
+++ b/roles/apt-repo/spreadspace/defaults/main.yml
@@ -1,3 +1,5 @@
---
+spreadspace_apt_repo_baseurl: "https://build.spreadspace.org/"
+
spreadspace_apt_repo_components:
- main
diff --git a/roles/apt-repo/spreadspace/tasks/main.yml b/roles/apt-repo/spreadspace/tasks/main.yml
index 0b4dac67..4c789efd 100644
--- a/roles/apt-repo/spreadspace/tasks/main.yml
+++ b/roles/apt-repo/spreadspace/tasks/main.yml
@@ -5,16 +5,10 @@
dest: /etc/apt/keyrings/spreadspace.gpg
register: apt_repo_spreadspace_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/spreadspace.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
- deb [signed-by=/etc/apt/keyrings/spreadspace.gpg] https://build.spreadspace.org/ {{ ansible_distribution_release }} {{ spreadspace_apt_repo_components | join(' ') }}
+ deb [signed-by=/etc/apt/keyrings/spreadspace.gpg] {{ spreadspace_apt_repo_baseurl }} {{ ansible_distribution_release }} {{ spreadspace_apt_repo_components | join(' ') }}
dest: /etc/apt/sources.list.d/spreadspace.list
register: apt_repo_spreadspace_sources
diff --git a/roles/apt-repo/tor-project/tasks/main.yml b/roles/apt-repo/tor-project/tasks/main.yml
index 6f465016..7c1669bc 100644
--- a/roles/apt-repo/tor-project/tasks/main.yml
+++ b/roles/apt-repo/tor-project/tasks/main.yml
@@ -5,12 +5,6 @@
dest: /etc/apt/keyrings/tor-project.gpg
register: apt_repo_tor_project_key
-## TODO: remove once all servers have been converted
-- name: remove repository key from old location
- file:
- path: /etc/apt/trusted.gpg.d/tor-project.gpg
- state: absent
-
- name: add repository entry
copy:
content: |
diff --git a/roles/installer/debian/preseed/templates/preseed_debian-bookworm.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_debian-bookworm.cfg.j2
index 3e86b048..c27ea93f 100644
--- a/roles/installer/debian/preseed/templates/preseed_debian-bookworm.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_debian-bookworm.cfg.j2
@@ -23,8 +23,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
diff --git a/roles/installer/debian/preseed/templates/preseed_debian-bullseye.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_debian-bullseye.cfg.j2
index 0649b18f..27986272 100644
--- a/roles/installer/debian/preseed/templates/preseed_debian-bullseye.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_debian-bullseye.cfg.j2
@@ -23,8 +23,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
diff --git a/roles/installer/debian/preseed/templates/preseed_debian-buster.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_debian-buster.cfg.j2
index 209cd1b7..b6257e0c 100644
--- a/roles/installer/debian/preseed/templates/preseed_debian-buster.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_debian-buster.cfg.j2
@@ -23,8 +23,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
diff --git a/roles/installer/debian/preseed/templates/preseed_debian-jessie.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_debian-jessie.cfg.j2
index 87a90060..f629df6d 100644
--- a/roles/installer/debian/preseed/templates/preseed_debian-jessie.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_debian-jessie.cfg.j2
@@ -23,8 +23,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
@@ -61,8 +61,8 @@ d-i base-installer/kernel/image string {{ debian_preseed_kernel_image }}
{% endif %}
d-i base-installer/install-recommends boolean false
-d-i apt-setup/security_host string
-#d-i apt-setup/security_host string
+d-i apt-setup/security_host string {{ apt_repo_providers[apt_repo_provider].debian_security.host }}
+d-i apt-setup/security_path string {{ apt_repo_providers[apt_repo_provider].debian_security.path }}
tasksel tasksel/first multiselect {{ debian_preseed_install_tasks | join(', ') }}
d-i pkgsel/include string openssh-server {{ python_basename }} {{ python_basename }}-apt
diff --git a/roles/installer/debian/preseed/templates/preseed_debian-stretch.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_debian-stretch.cfg.j2
index 3c682d81..95cd44a0 100644
--- a/roles/installer/debian/preseed/templates/preseed_debian-stretch.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_debian-stretch.cfg.j2
@@ -23,8 +23,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
diff --git a/roles/installer/debian/preseed/templates/preseed_kali-kali-rolling.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_kali-kali-rolling.cfg.j2
index 7e2fe535..261704f8 100644
--- a/roles/installer/debian/preseed/templates/preseed_kali-kali-rolling.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_kali-kali-rolling.cfg.j2
@@ -20,8 +20,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
diff --git a/roles/installer/debian/preseed/templates/preseed_ubuntu-bionic.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_ubuntu-bionic.cfg.j2
index 1446ab2c..69d87df6 100644
--- a/roles/installer/debian/preseed/templates/preseed_ubuntu-bionic.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_ubuntu-bionic.cfg.j2
@@ -27,8 +27,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
diff --git a/roles/installer/debian/preseed/templates/preseed_ubuntu-focal.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_ubuntu-focal.cfg.j2
index c2689623..f44ea32e 100644
--- a/roles/installer/debian/preseed/templates/preseed_ubuntu-focal.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_ubuntu-focal.cfg.j2
@@ -27,8 +27,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
diff --git a/roles/installer/debian/preseed/templates/preseed_ubuntu-xenial.cfg.j2 b/roles/installer/debian/preseed/templates/preseed_ubuntu-xenial.cfg.j2
index b8fd1110..e6580d0b 100644
--- a/roles/installer/debian/preseed/templates/preseed_ubuntu-xenial.cfg.j2
+++ b/roles/installer/debian/preseed/templates/preseed_ubuntu-xenial.cfg.j2
@@ -24,8 +24,8 @@ d-i netcfg/disable_dhcp boolean true
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string {{ network.primary.address | ansible.utils.ipaddr('address') }}
d-i netcfg/get_netmask string {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
-d-i netcfg/get_gateway string {{ network.primary.gateway }}
-d-i netcfg/get_nameservers string {{ network.nameservers | join(' ') }}
+d-i netcfg/get_gateway string {{ network.primary.gateway | default('') }}
+d-i netcfg/get_nameservers string {{ network.nameservers | default([]) | join(' ') }}
d-i netcfg/confirm_static boolean true
{% endif %}
diff --git a/roles/installer/raspios/image/templates/firstrun.sh.j2 b/roles/installer/raspios/image/templates/firstrun.sh.j2
index 96c74b39..ef90cf8b 100644
--- a/roles/installer/raspios/image/templates/firstrun.sh.j2
+++ b/roles/installer/raspios/image/templates/firstrun.sh.j2
@@ -76,8 +76,10 @@ EOF
{% if not (install_dhcp | default(false)) %}
cat <<EOF > /etc/resolv.conf
# Generated by ansible
+{% if 'domain' in network %}
search {{ network.domain }}
-{% for nameserver in network.nameservers %}
+{% endif %}
+{% for nameserver in (network.nameservers | default([])) %}
nameserver {{ nameserver }}
{% endfor %}
EOF
@@ -108,6 +110,13 @@ rm "$FW_LOC/firstrun.sh"
rm -f /etc/sudoers.d/010_pi-nopasswd
rm -f /etc/apt/sources.list.d/vscode.list
rm -f /etc/apt/trusted.gpg.d/microsoft.gpg
+rm -f /etc/apt/sources.list.d/raspi.list
+cat <<EOF > /etc/apt/sources.list
+deb http://{{ apt_repo_providers[apt_repo_provider].debian.host }}{{ apt_repo_providers[apt_repo_provider].debian.path }} {{ install_codename }} main non-free-firmware
+deb http://{{ apt_repo_providers[apt_repo_provider].debian.host }}{{ apt_repo_providers[apt_repo_provider].debian.path }} {{ install_codename }}-updates main non-free-firmware
+deb http://{{ apt_repo_providers[apt_repo_provider].debian_security.host }}{{ apt_repo_providers[apt_repo_provider].debian_security.path }} {{ install_codename }}-security main non-free-firmware
+deb http://{{ apt_repo_providers[apt_repo_provider].raspios.host }}{{ apt_repo_providers[apt_repo_provider].raspios.path }} {{ install_codename }} main
+EOF
apt-get update -q
apt-get dist-upgrade -y -q
diff --git a/roles/installer/ubuntu/autoinstall/templates/autoinstall.yml.j2 b/roles/installer/ubuntu/autoinstall/templates/autoinstall.yml.j2
index 9911f654..1de70b70 100644
--- a/roles/installer/ubuntu/autoinstall/templates/autoinstall.yml.j2
+++ b/roles/installer/ubuntu/autoinstall/templates/autoinstall.yml.j2
@@ -19,10 +19,14 @@ autoinstall:
{% else %}
addresses:
- {{ network.primary.address }}
- gateway4: {{ network.primary.gateway }}
+{% if 'gateway' in network.primary %}
+ routes:
+ - to: default
+ via: {{ network.primary.gateway }}
+{% endif %}
{% if (network.nameservers | default([]) | length) > 0 %}
nameservers:
- search: [ {{ host_domain }} ]
+ search: [ {{ network.domain }} ]
addresses: [ {{ network.nameservers | join(', ') }} ]
{% endif %}
{% endif %}
@@ -219,6 +223,7 @@ autoinstall:
write_files:
- content: |
#!/bin/bash
+ set -e
for i in $(seq 10 -1 1); do echo "waiting $i seconds for cloud-init to finish."; sleep 1; done
echo "******************************************************************************"
echo "***** getting rid of cloud-init and other crap we neither want nor need! *****"
@@ -267,7 +272,7 @@ autoinstall:
- curtin in-target --target=/target -- apt-get -y -q purge systemd-oomd
{% endif %}
{% if (install_codename | ubuntu_release_compare('>=', 'noble')) %}
- - curtin in-target --target=/target -- apt-get -y -q purge ubuntu-kernel-accessories
+ - curtin in-target --target=/target -- apt-get -y -q purge ubuntu-kernel-accessories ubuntu-pro-client lxd-installer
{% endif %}
{% if ubuntu_autoinstall_desktop is undefined %}
- curtin in-target --target=/target -- apt-mark manual iputils-ping isc-dhcp-client netcat-openbsd netplan.io sudo
diff --git a/roles/monitoring/grafana/files/dashboard-openwrt.json b/roles/monitoring/grafana/files/dashboard-openwrt.json
index 93104f79..b3bf4cea 100644
--- a/roles/monitoring/grafana/files/dashboard-openwrt.json
+++ b/roles/monitoring/grafana/files/dashboard-openwrt.json
@@ -1025,86 +1025,6 @@
"type": "stat"
},
{
- "datasource": {
- "type": "prometheus",
- "uid": "${DS_PROMETHEUS}"
- },
- "description": "Total NAT traffic (WAN)",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 2,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bits"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 3,
- "x": 15,
- "y": 7
- },
- "id": 311,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "10.4.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${DS_PROMETHEUS}"
- },
- "expr": "sum(node_nat_traffic{instance=~\"$instance\",job=~\"$job\"})",
- "intervalFactor": 1,
- "refId": "A",
- "step": 900
- }
- ],
- "title": "Total NAT Traffic",
- "type": "stat"
- },
- {
"collapsed": false,
"datasource": {
"type": "prometheus",
@@ -9497,150 +9417,6 @@
"type": "timeseries"
},
{
- "datasource": {
- "type": "prometheus",
- "uid": "${DS_PROMETHEUS}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "decmbytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byValue",
- "options": {
- "op": "gte",
- "reducer": "allIsZero",
- "value": 0
- }
- },
- "properties": [
- {
- "id": "custom.hideFrom",
- "value": {
- "legend": true,
- "tooltip": true,
- "viz": false
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byValue",
- "options": {
- "op": "gte",
- "reducer": "allIsNull",
- "value": 0
- }
- },
- "properties": [
- {
- "id": "custom.hideFrom",
- "value": {
- "legend": true,
- "tooltip": true,
- "viz": false
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 8,
- "w": 24,
- "x": 0,
- "y": 136
- },
- "id": 281,
- "interval": "1m",
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "10.4.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${DS_PROMETHEUS}"
- },
- "expr": "topk(15, node_nat_traffic{instance=~\"$instance\",job=~\"$job\"}/1024/1024)",
- "hide": false,
- "instant": false,
- "intervalFactor": 4,
- "legendFormat": "Dest= {{dest}} # Source= {{src}}",
- "refId": "A"
- }
- ],
- "title": "Top NAT Traffic",
- "type": "timeseries"
- },
- {
"collapsed": false,
"datasource": {
"type": "prometheus",
@@ -11864,4 +11640,4 @@
"uid": "fLi0yXAWk",
"version": 3,
"weekStart": ""
-} \ No newline at end of file
+}
diff --git a/roles/monitoring/prometheus/server/defaults/main/rules_node.yml b/roles/monitoring/prometheus/server/defaults/main/rules_node.yml
index fe6e781b..262f1af7 100644
--- a/roles/monitoring/prometheus/server/defaults/main/rules_node.yml
+++ b/roles/monitoring/prometheus/server/defaults/main/rules_node.yml
@@ -2,6 +2,14 @@
## https://awesome-prometheus-alerts.grep.to/rules#host-and-hardware
prometheus_server_rules_node_extra: []
prometheus_server_rules_node:
+ - alert: HostRebooted
+ expr: ((node_time_seconds - node_boot_time_seconds) / 60) < 15
+ labels:
+ severity: warning
+ annotations:
+ summary: Host has rebooted less then 15 minutes ago (instance {{ '{{' }} $labels.instance {{ '}}' }})
+ description: "The node has been rebootet {{ '{{' }} $value {{ '}}' }} minutes ago. If this was not done intentionally please check if everything is alright.\n VALUE = {{ '{{' }} $value {{ '}}' }}\n LABELS = {{ '{{' }} $labels {{ '}}' }}"
+
- alert: HostOutOfMemory
expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
for: 2m
diff --git a/roles/network/coredns/defaults/main.yml b/roles/network/coredns/defaults/main.yml
new file mode 100644
index 00000000..b5294aa2
--- /dev/null
+++ b/roles/network/coredns/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+# coredns_config: |
+# . {
+# whoami
+# }
diff --git a/roles/network/coredns/handlers/main.yml b/roles/network/coredns/handlers/main.yml
new file mode 100644
index 00000000..13f60711
--- /dev/null
+++ b/roles/network/coredns/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: reload coredns
+ service:
+ name: coredns
+ state: reloaded
diff --git a/roles/network/coredns/tasks/main.yml b/roles/network/coredns/tasks/main.yml
new file mode 100644
index 00000000..a0cfa6c5
--- /dev/null
+++ b/roles/network/coredns/tasks/main.yml
@@ -0,0 +1,40 @@
+---
+- name: install coredns
+ apt:
+ name: coredns
+ state: present
+
+- name: create coredns user
+ user:
+ name: coredns
+ home: /nonexistent
+ shell: /usr/sbin/nologin
+ create_home: no
+ system: yes
+ state: present
+
+- name: create coredns config directory
+ file:
+ path: /etc/coredns
+ state: directory
+
+- name: generate Corefile
+ copy:
+ content: |
+ # ansible managed
+
+ {{ coredns_config }}
+ dest: /etc/coredns/Corefile
+ notify: reload coredns
+
+- name: install systemd service unit
+ template:
+ src: coredns.service.j2
+ dest: /etc/systemd/system/coredns.service
+
+- name: make sure coredns is enabled started
+ systemd:
+ daemon_reload: yes
+ name: coredns.service
+ enabled: yes
+ state: started
diff --git a/roles/network/coredns/templates/coredns.service.j2 b/roles/network/coredns/templates/coredns.service.j2
new file mode 100644
index 00000000..327f930b
--- /dev/null
+++ b/roles/network/coredns/templates/coredns.service.j2
@@ -0,0 +1,32 @@
+[Unit]
+Description=Coredns
+After=network-online.target
+Wants=network-online.target
+
+[Service]
+Restart=always
+User=coredns
+ExecStart=/usr/bin/coredns -conf /etc/coredns/Corefile
+ExecReload=/bin/kill -USR1 $MAINPID
+
+# systemd hardening-options
+AmbientCapabilities=CAP_NET_BIND_SERVICE
+CapabilityBoundingSet=CAP_NET_BIND_SERVICE
+DeviceAllow=/dev/null rw
+DevicePolicy=strict
+LockPersonality=true
+MemoryDenyWriteExecute=true
+NoNewPrivileges=true
+PrivateTmp=true
+ProtectControlGroups=true
+ProtectHome=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectSystem=strict
+RemoveIPC=true
+RestrictNamespaces=true
+RestrictRealtime=true
+SystemCallArchitectures=native
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/ws/flatpak/defaults/main.yml b/roles/ws/flatpak/defaults/main.yml
index e66d4118..77f1f39d 100644
--- a/roles/ws/flatpak/defaults/main.yml
+++ b/roles/ws/flatpak/defaults/main.yml
@@ -6,5 +6,8 @@ ws_flatpak_apps: []
# ws_flatpak_apps:
# - name: com.example.foo
# remote: foo
-# link: foo
+# shortcuts:
+# - name: foo
+# - name: foo-blub
+# command: blub
# - name: com.example.bar
diff --git a/roles/ws/flatpak/filter_plugins/flatpak.py b/roles/ws/flatpak/filter_plugins/flatpak.py
new file mode 100644
index 00000000..0ed372ee
--- /dev/null
+++ b/roles/ws/flatpak/filter_plugins/flatpak.py
@@ -0,0 +1,28 @@
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from ansible import errors
+
+
+def flatpak_app_shortcuts(apps):
+ try:
+ shortcuts = []
+ for app in apps:
+ if 'shortcuts' not in app:
+ continue
+ for shortcut in app['shortcuts']:
+ shortcut['app'] = app['name']
+ shortcuts.append(shortcut)
+ return shortcuts
+ except Exception as e:
+ raise errors.AnsibleFilterError("flatpak_app_shortcuts(): %s" % str(e))
+
+
+class FilterModule(object):
+
+ filter_map = {
+ 'flatpak_app_shortcuts': flatpak_app_shortcuts,
+ }
+
+ def filters(self):
+ return self.filter_map
diff --git a/roles/ws/flatpak/tasks/main.yml b/roles/ws/flatpak/tasks/main.yml
index 5229996c..904d4cca 100644
--- a/roles/ws/flatpak/tasks/main.yml
+++ b/roles/ws/flatpak/tasks/main.yml
@@ -23,13 +23,12 @@
state: present
- name: install simple run script to /usr/local/bin
- loop: "{{ ws_flatpak_apps | selectattr('link', 'defined') }}"
+ loop: "{{ ws_flatpak_apps | flatpak_app_shortcuts }}"
loop_control:
- label: "{{ item.name }}"
+ label: "{{ item.name }} -> {{ item.app }}"
copy:
content: |
#!/bin/sh
-
- exec flatpak run "{{ item.name }}"
- dest: "/usr/local/bin/{{ item.link }}"
+ exec flatpak run{% if 'command' in item %} "--command={{ item.command }}"{% endif %} "{{ item.app }}" "$@"
+ dest: "/usr/local/bin/{{ item.name }}"
mode: 0755