infra issueshttps://git.fsmpi.rwth-aachen.de/groups/infra/-/issues2024-01-19T15:20:45+01:00https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/webservices/-/issues/19php-fpm unter bullseye2024-01-19T15:20:45+01:00Hinrikus Wolfphp-fpm unter bullseyeLeider darf ich diesem repo keine merge-requests mehr stellen. deshalb hier ein patch
`
commit 2c61c1e43dfc6a68215264ae6676d8b048365196 (HEAD -> bookworm-fpm)
Author: Hinrikus Wolf <hinrikus@fsmpi.rwth-aachen.de>
Date: Fri Jan 19 14:4...Leider darf ich diesem repo keine merge-requests mehr stellen. deshalb hier ein patch
`
commit 2c61c1e43dfc6a68215264ae6676d8b048365196 (HEAD -> bookworm-fpm)
Author: Hinrikus Wolf <hinrikus@fsmpi.rwth-aachen.de>
Date: Fri Jan 19 14:48:57 2024 +0100
php-fpm: add support for bookworm.
Probably this configuration could be determined automatically.
However, this fix was the easiest
diff --git a/php-fpm/vars/bookworm.yml b/php-fpm/vars/bookworm.yml
new file mode 100644
index 0000000..f5eea10
--- /dev/null
+++ b/php-fpm/vars/bookworm.yml
@@ -0,0 +1,3 @@
+---
+php_fpm_pkgs: ["php-fpm"]
+php_version: "8.2"
`https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/common/-/issues/15ssh-server: “ensure our and only our keys are authorized for root” task broken2023-12-13T14:42:00+01:00Thomas Schneiderthomas@fsmpi.rwth-aachen.dessh-server: “ensure our and only our keys are authorized for root” task broken?????
```
TASK [common/ssh-server : ensure our and only our keys are authorized for root] ***
task path: /home/qsx/RWTH/FSMPI/ansible/shared-roles/common/ssh-server/tasks/main.yml:158
The full traceback is:
Traceback (most recent call la...?????
```
TASK [common/ssh-server : ensure our and only our keys are authorized for root] ***
task path: /home/qsx/RWTH/FSMPI/ansible/shared-roles/common/ssh-server/tasks/main.yml:158
The full traceback is:
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/ansible/executor/task_executor.py", line 165, in run
res = self._execute()
^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/ansible/executor/task_executor.py", line 641, in _execute
result = self._handler.run(task_vars=vars_copy)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/ansible/plugins/action/assemble.py", line 144, in run
diff = self._get_diff_data(dest, path, task_vars)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: ActionBase._get_diff_data() missing 1 required positional argument: 'content'
fatal: [rt]: FAILED! => {
"msg": "Unexpected failure during module execution: ActionBase._get_diff_data() missing 1 required positional argument: 'content'",
"stdout": ""
}
```https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/communication/-/issues/7Interner Mailverkehr2023-10-02T10:08:48+02:00Lars BeckersInterner Mailverkehrmy_networks ist prinzipiell das Zauberwort. Generell Kommunikation mit nullmailer.my_networks ist prinzipiell das Zauberwort. Generell Kommunikation mit nullmailer.RWTH-Kompatibilitäthttps://git.fsmpi.rwth-aachen.de/infra/ansible-shared/zabbix/-/issues/1zabbix-agent extra packages broken on Debian Bullseye bare-metal hosts2023-07-14T18:09:36+02:00Thomas Schneiderthomas@fsmpi.rwth-aachen.dezabbix-agent extra packages broken on Debian Bullseye bare-metal hostsThe `zabbix-check-disk-performance` and `zabbix-check-smart` extra packages from CHR’s repository seem to be broken on Debian Bullseye (and likely later as well) bare-metal hosts:
```
Jul 14 18:05:07 undulatus.fsmpi.rwth-aachen.de syste...The `zabbix-check-disk-performance` and `zabbix-check-smart` extra packages from CHR’s repository seem to be broken on Debian Bullseye (and likely later as well) bare-metal hosts:
```
Jul 14 18:05:07 undulatus.fsmpi.rwth-aachen.de systemd[1]: Starting Zabbix Agent...
Jul 14 18:05:07 undulatus.fsmpi.rwth-aachen.de zabbix_agentd[3142947]: zabbix_agentd [3142947]: ERROR: cannot add user parameter "smart.raw[*],sudo /usr/sbin/zabbix_check_smart_get.py $1 $2": key "smart.raw" already exists
Jul 14 18:05:07 undulatus.fsmpi.rwth-aachen.de systemd[1]: zabbix-agent.service: Control process exited, code=exited, status=1/FAILURE
Jul 14 18:05:07 undulatus.fsmpi.rwth-aachen.de systemd[1]: zabbix-agent.service: Failed with result 'exit-code'.
Jul 14 18:05:07 undulatus.fsmpi.rwth-aachen.de systemd[1]: Failed to start Zabbix Agent.
Jul 14 18:05:10 undulatus.fsmpi.rwth-aachen.de systemd[1]: Stopped Zabbix Agent.
Jul 14 18:05:10 undulatus.fsmpi.rwth-aachen.de systemd[1]: Starting Zabbix Agent...
Jul 14 18:05:10 undulatus.fsmpi.rwth-aachen.de zabbix_agentd[3143691]: zabbix_agentd [3143691]: ERROR: cannot add user parameter "vfs.discover,/usr/lib/zabbix-check/bin/zabbix-check-disk-performance-discover.py": key "vfs.discover" already exists
Jul 14 18:05:10 undulatus.fsmpi.rwth-aachen.de systemd[1]: zabbix-agent.service: Control process exited, code=exited, status=1/FAILURE
Jul 14 18:05:10 undulatus.fsmpi.rwth-aachen.de systemd[1]: zabbix-agent.service: Failed with result 'exit-code'.
Jul 14 18:05:10 undulatus.fsmpi.rwth-aachen.de systemd[1]: Failed to start Zabbix Agent.
Jul 14 18:05:21 undulatus.fsmpi.rwth-aachen.de systemd[1]: zabbix-agent.service: Scheduled restart job, restart counter is at 8.
Jul 14 18:05:21 undulatus.fsmpi.rwth-aachen.de systemd[1]: Stopped Zabbix Agent.
```https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/common/-/issues/12hostkey-provider: ansible-lint ignore_errors2023-06-23T00:05:55+02:00Thomas Schneiderthomas@fsmpi.rwth-aachen.dehostkey-provider: ansible-lint ignore_errors```
% ansible-lint -t ignore-errors hostkey-provider
WARNING Listing 1 violation(s) marked as ignored, likely already known
ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors. # ignored
hostkey-pr...```
% ansible-lint -t ignore-errors hostkey-provider
WARNING Listing 1 violation(s) marked as ignored, likely already known
ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors. # ignored
hostkey-provider/tasks/main.yml:3 Task/Handler: ensure host keys are centrally collected
Passed with production profile: 0 failure(s), 1 warning(s) on 4 files.
```
Warum werden hier die Fehler ignoriert, lässt sich das dokumentieren oder weglassen?
Kommt (ursprünglich) aus a0fdcb2, ping @larsb.https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/common/-/issues/14shell: Task “ensure that pcspeaker remains silent” is broken2023-06-16T14:55:07+02:00Thomas Schneiderthomas@fsmpi.rwth-aachen.deshell: Task “ensure that pcspeaker remains silent” is broken```
TASK [common/shell : ensure that pcspeaker remains silent] ***
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: Exception: Error while setting attributes: /usr/bin/chattr: Operation not...```
TASK [common/shell : ensure that pcspeaker remains silent] ***
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: Exception: Error while setting attributes: /usr/bin/chattr: Operation not supported while reading flags on /tmp/tmprklj38gx
task path: /home/qsx/RWTH/FSMPI/ansible/shared-roles/common/shell/tasks/shell.yml:161
fatal: [cl-deb]: FAILED! => {"changed": false, "details": "Error while setting attributes: /usr/bin/chattr: Operation not supported while reading flags on /tmp/tmprklj38gx\n", "gid": 0, "group": "root", "mode": "0644", "msg": "chattr failed", "owner": "root", "path": "/tmp/tmprklj38gx", "size": 0, "state": "file", "uid": 0}
```
The [community.general.kernel_blacklist module](https://docs.ansible.com/ansible/latest/collections/community/general/kernel_blacklist_module.html) tries to set some attribute on a temporary file (not directly from a quick inspection, but through some library calls), but the `tmpfs` on `/tmp` does not support that.https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/common/-/issues/13shell: ansible-lint schema[moves]2023-06-13T14:13:44+02:00Thomas Schneiderthomas@fsmpi.rwth-aachen.deshell: ansible-lint schema[moves]```
% ansible-lint -t schema shell
WARNING Listing 2 violation(s) marked as ignored, likely already known
schema[moves]: with_filetree was moved to with_community.general.flattened in 2.10 # ignored
shell/tasks/shell.yml:145 Returned e...```
% ansible-lint -t schema shell
WARNING Listing 2 violation(s) marked as ignored, likely already known
schema[moves]: with_filetree was moved to with_community.general.flattened in 2.10 # ignored
shell/tasks/shell.yml:145 Returned errors will not include exact line numbers, but they will mention
the schema name being used as a tag, like ``schema[playbook]``,
``schema[tasks]``.
This rule is not skippable and stops further processing of the file.
If incorrect schema was picked, you might want to either:
* move the file to standard location, so its file is detected correctly.
* use ``kinds:`` option in linter config to help it pick correct file type.
schema[moves]: with_filetree was moved to with_community.general.flattened in 2.10 # ignored
shell/tasks/shell.yml:162 Returned errors will not include exact line numbers, but they will mention
the schema name being used as a tag, like ``schema[playbook]``,
``schema[tasks]``.
This rule is not skippable and stops further processing of the file.
If incorrect schema was picked, you might want to either:
* move the file to standard location, so its file is detected correctly.
* use ``kinds:`` option in linter config to help it pick correct file type.
Passed with production profile: 0 failure(s), 2 warning(s) on 12 files.
```
Joa, müsste man mal.https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/common/-/issues/11ssh-server: ansible-lint no-changed-when2023-06-13T14:07:02+02:00Thomas Schneiderthomas@fsmpi.rwth-aachen.dessh-server: ansible-lint no-changed-when```
% ansible-lint -t no-changed-when ssh-server
WARNING Listing 2 violation(s) marked as ignored, likely already known
no-changed-when: Commands should not change things if nothing needs doing. # ignored
ssh-server/tasks/main.yml:112 T...```
% ansible-lint -t no-changed-when ssh-server
WARNING Listing 2 violation(s) marked as ignored, likely already known
no-changed-when: Commands should not change things if nothing needs doing. # ignored
ssh-server/tasks/main.yml:112 Task/Handler: ensure pam creates a home directory
no-changed-when: Commands should not change things if nothing needs doing. # ignored
ssh-server/tasks/main.yml:121 Task/Handler: ensure pam doesn't create a home directory
Passed with production profile: 0 failure(s), 2 warning(s) on 18 files.
```
Ist das mit vertretbarem Aufwand fixbar?
Das kam in 19f0da56 rein, ping @robin.https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/webservices/-/issues/18uwsgi-python: Git vs Repository-Owner2023-04-28T10:29:26+02:00Thomas Schneiderthomas@fsmpi.rwth-aachen.deuwsgi-python: Git vs Repository-OwnerSeit [Git 2.36](https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/RelNotes/2.36.0.txt?id=f85cd430b12b0d3e4f1a30ef3239a1b73d5f6331#n16) redet das nicht mehr mit Repos, die anderen Usern gehören:
```
task path: /Users/thomas/R...Seit [Git 2.36](https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/RelNotes/2.36.0.txt?id=f85cd430b12b0d3e4f1a30ef3239a1b73d5f6331#n16) redet das nicht mehr mit Repos, die anderen Usern gehören:
```
task path: /Users/thomas/RWTH/FSMPI/ansible/shared-roles/webservices/uwsgi-python/tasks/app.yml:165
fatal: [printsrv]: FAILED! =>
{
"changed": false,
"msg": "Could not determine branch data - received ",
"stderr": "fatal: detected dubious ownership in repository at '/var/www/printercount/program'\nTo add an exception for this directory, call:\n\n\tgit config --global --add safe.directory /var/www/printercount/program\n",
"stderr_lines": [
"fatal: detected dubious ownership in repository at '/var/www/printercount/program'",
"To add an exception for this directory, call:",
"",
"\tgit config --global --add safe.directory /var/www/printercount/program"
],
"stdout": "",
"stdout_lines": []
}
```https://git.fsmpi.rwth-aachen.de/infra/ansible-shared/webservices/-/issues/17webserver: Failt im Check Mode bei neuer Server-Instanz2023-04-28T10:07:39+02:00Thomas Schneiderthomas@fsmpi.rwth-aachen.dewebserver: Failt im Check Mode bei neuer Server-InstanzWenn man einen neuen Eintrag in `webservers` hat und die Rolle im Check Mode ausführt, schlägt der Task `enable our active proxied sites` fehl, da die Quelle für den Symlink in `proxy-sites-enabled/` – eben wegen Check Mode – nicht exist...Wenn man einen neuen Eintrag in `webservers` hat und die Rolle im Check Mode ausführt, schlägt der Task `enable our active proxied sites` fehl, da die Quelle für den Symlink in `proxy-sites-enabled/` – eben wegen Check Mode – nicht existiert. Und prinzipiell äquivalent für `sites-enabled/`, das kommt aber erst später und da ist es halt schon gefailt.
Vielleicht gibt es so ein “ignore failure when in check mode” Mechanismus?https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/16Push statt Cron2022-04-03T01:38:55+02:00Lars BeckersPush statt CronDas ist mehr eine theoretische Überlegung, die wir immer wieder hatten. Natürlich könnte ein Service ein inotify auf lokale Dateien machen, aber bei der Datenbank wird es dann schon schwieriger. Falsch ist das bisherige Vorgehen ja prinz...Das ist mehr eine theoretische Überlegung, die wir immer wieder hatten. Natürlich könnte ein Service ein inotify auf lokale Dateien machen, aber bei der Datenbank wird es dann schon schwieriger. Falsch ist das bisherige Vorgehen ja prinzipiell nicht.https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/15Fehler bei >20% Änderung2022-04-03T01:36:34+02:00Lars BeckersFehler bei >20% ÄnderungDas ITC weißt Updates mit >20% Änderung ab. Das Skript könnte selbst einen Diff machen und eine Fehlermeldung ausgeben, wenn zu viel geändert wurde. Deutlich komplizierter wäre eine adaptive Anpassung der Änderungen. Wir hatten den Fall ...Das ITC weißt Updates mit >20% Änderung ab. Das Skript könnte selbst einen Diff machen und eine Fehlermeldung ausgeben, wenn zu viel geändert wurde. Deutlich komplizierter wäre eine adaptive Anpassung der Änderungen. Wir hatten den Fall bisher noch nicht, insofern reicht ein Reporting. Ich rechne nicht damit, dass das vom ITC kommen würde.https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/2Output-Datei2022-04-03T01:32:44+02:00Lars BeckersOutput-DateiBisher wurden die Adressen (u.U.) kollektiv in eine Datei gesammelt geschrieben. Wenn ich die Output-Datei so konfigurieren würde, würden aber nicht alle Adressen in diese Datei geschrieben, sondern nur die der letzten Domain, da die Dat...Bisher wurden die Adressen (u.U.) kollektiv in eine Datei gesammelt geschrieben. Wenn ich die Output-Datei so konfigurieren würde, würden aber nicht alle Adressen in diese Datei geschrieben, sondern nur die der letzten Domain, da die Datei überschrieben wird. Entweder sollte das Skript prüfen, dass die Datei nicht überschrieben wird, oder die Adressen für diese Datei mergen. Das alles ungeachtet dessen, dass verschiedene Dateien pro Domain nicht unsinnvoll sind. Weiterhin wäre es gut, wenn sich definieren ließe, welche Domain(s) denn die Adressen ohne Domainangabe erhalten soll(en).https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/13Exception-Handling2022-04-03T01:26:36+02:00Lars BeckersException-HandlingHabe ich in #1 bzgl. dem Konfigurationsdictionary schon angerissen. Prinzipiell macht das Projekt liberalen Gebrauch von Exceptions und lässt sie (fast) alle propagieren. Wenn wir die alle als Programmier-/Konfigurationsfehler betrachten...Habe ich in #1 bzgl. dem Konfigurationsdictionary schon angerissen. Prinzipiell macht das Projekt liberalen Gebrauch von Exceptions und lässt sie (fast) alle propagieren. Wenn wir die alle als Programmier-/Konfigurationsfehler betrachten und sie uns per Cron schicken wollen, geht das. Vielleicht geht es auch schöner, insb. bei nicht existierenden Pfaden? Vor allem, ist das im Verhalten "Crash -> alte Ausgabe" bleibt bestehen, das was wir haben wollen?https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/14Python in Debian2022-04-03T01:24:20+02:00Lars BeckersPython in DebianEs muss zu Beginn des Skripts `#!/usr/bin/env python3` heißen. Sonst versucht Debian eines in Version 2 zu finden.Es muss zu Beginn des Skripts `#!/usr/bin/env python3` heißen. Sonst versucht Debian eines in Version 2 zu finden.https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/1Konfiguration2022-04-03T01:21:08+02:00Lars BeckersKonfigurationGrundsätzlich kann ich die Wahl von JSON verstehen, da es in der Standard-Library vorhanden ist. Allerdings ist es keine besonders geeignete Wahl, da es durch ein paar Eigenheiten (z.B. trailing comma) und dem Fehlen von Kommentaren unha...Grundsätzlich kann ich die Wahl von JSON verstehen, da es in der Standard-Library vorhanden ist. Allerdings ist es keine besonders geeignete Wahl, da es durch ein paar Eigenheiten (z.B. trailing comma) und dem Fehlen von Kommentaren unhandlich für Menschen ist. Klar, im Regelfall kommt es direkt aus dem Konfigurationsmanagement. Aber gerade beim Mailsetup kann ich mir gut die Situation vorstellen, in der mal eben vor Ort etwas gefixt wird. Mögliche Alternativen:
- TOML, soll ja auch in die Standard-Library wandern, könnte man solange vendorn
- ConfigParser, ist in der Standard-Library, INI-like, etwas eigene API
- XML, würde zum Zeitalter des Systems, das wir hier bedienen passen, würde ich aber eher von abraten
- YAML, bräuchte eine extra Library, ist nicht das beste aller Formate, aber hätte in Ansible frist-class Support
Momentan wird direkt auf die im JSON hinterlegten Daten zugegriffen, d.h. es wird erwartet, dass sie vollständig und passend existiert. Eine vollständige Prüfung ist hier nicht unbedingt nötig. Es wäre aber schon gut, wenn es graziler agieren als mit einem KeyError fehlschlagen würde. In vielen Fällen könnte ich mir auch einen sinnvollen Default vorstellen. Vielleicht, also eine Default-Config haben und sonst mit `.get("key", "default")` zugreifen?
Nach diesen allgemeinen Überlegungen, noch ein konkreter Punkt: Das f-String-Templating in der Output-Option ist weird und für eine sonst statische Konfiguration unerwartet/unpassend. Einfachste Möglichkeiten wären hier aus den Domains ein Dictionary zu machen oder die Domain-Ausgabe zu erzwingen und nur ein Verzeichnis abzufragen.https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/12Mailman-Integration2022-04-03T01:16:22+02:00Lars BeckersMailman-IntegrationMomentan haben wir das in einem zweiten Skript separiert, `rzMailinglists.sh`. Inhaltlich würde es natürlich in dieses Projekt hier passen. Die Implementation ist denkbar einfach: `list_lists -b`, pro Liste einmal die Basisversion und di...Momentan haben wir das in einem zweiten Skript separiert, `rzMailinglists.sh`. Inhaltlich würde es natürlich in dieses Projekt hier passen. Die Implementation ist denkbar einfach: `list_lists -b`, pro Liste einmal die Basisversion und die diversen Anhängselvarianten. Dann könnten wir dort auch ggf. lokale Aliase angeben.
Die Ablösung von `aliasesOldMailinglists` und den diversen Einträgen in der Datenbank wäre natürlich schön, aber umfangreicher.https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/11Iteratoren der Backends2022-04-03T01:12:42+02:00Lars BeckersIteratoren der BackendsDie definieren momentan alle eine `iter_all()`-Methode und machen darin ihre Abfrage/ihr Parsing.
- Es wäre schöner, wenn das Parsing/die Abfrage getrennt von der Iteration wäre. Macht momentan keinen praktischen Unterschied, da nur einm...Die definieren momentan alle eine `iter_all()`-Methode und machen darin ihre Abfrage/ihr Parsing.
- Es wäre schöner, wenn das Parsing/die Abfrage getrennt von der Iteration wäre. Macht momentan keinen praktischen Unterschied, da nur einmal iteriert wird und sich dabei die Daten _vermutlich_ nicht ändern.
- Semantisch macht die Methode das, was ich per `__iter__()` erwarten würde.https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/10Typen in der Address-Dataclass2022-04-03T01:09:31+02:00Lars BeckersTypen in der Address-DataclassDie Typen bei den Attributen werden natürlich für die Dataclass gebraucht. Die Typen in den Methoden sind aber nicht zwingend nötig. Wie andere Typ-Annotationen auch, werden sie von CPython ignoriert. Natürlich könnte man die Annotatione...Die Typen bei den Attributen werden natürlich für die Dataclass gebraucht. Die Typen in den Methoden sind aber nicht zwingend nötig. Wie andere Typ-Annotationen auch, werden sie von CPython ignoriert. Natürlich könnte man die Annotationen auch durchziehen und eine der Type-Checker-Implementationen in die CI werfen. Der Bekannteste ist mypy, es gäbe weitere, es ist zu beachten, dass die alle ihre eigene Semantik mitbringen.https://git.fsmpi.rwth-aachen.de/infra/rezelist/-/issues/9Passwd-Datenbank: Max UID2022-04-03T01:06:28+02:00Lars BeckersPasswd-Datenbank: Max UIDWar zwar bisher kein Feature, also wohl auch kein dringender Bedarf. Aber die analoge Option zur Min UID, also Max UID, viel mir auf.War zwar bisher kein Feature, also wohl auch kein dringender Bedarf. Aber die analoge Option zur Min UID, also Max UID, viel mir auf.