diff options
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 Binary files differindex 080aaa2c..1888e61e 100644 --- a/gpg/vault-keyring-chaos-at-home.gpg +++ b/gpg/vault-keyring-chaos-at-home.gpg diff --git a/gpg/vault-keyring-dan.gpg b/gpg/vault-keyring-dan.gpg Binary files differindex fba3486e..5514efc9 100644 --- a/gpg/vault-keyring-dan.gpg +++ b/gpg/vault-keyring-dan.gpg diff --git a/gpg/vault-keyring-spreadspace.gpg b/gpg/vault-keyring-spreadspace.gpg Binary files differindex 91e6e112..c832c1a5 100644 --- a/gpg/vault-keyring-spreadspace.gpg +++ b/gpg/vault-keyring-spreadspace.gpg 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 Binary files differdeleted file mode 100644 index 79cc23e8..00000000 --- a/roles/apt-repo/freecad/files/repo.gpg +++ /dev/null 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 Binary files differdeleted file mode 100644 index 274698cd..00000000 --- a/roles/apt-repo/kicad6/files/repo.gpg +++ /dev/null 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 Binary files differdeleted file mode 100644 index 9b827ee8..00000000 --- a/roles/apt-repo/kubic-project/files/repo.gpg +++ /dev/null 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 |