mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
Cluster 2a (hlth-msmtp failed=65 in universal single-app deploys): the health-check script sent "To: administrator" but the administrator Unix user is only provisioned in server-pass, so postfix rejected the recipient. Replace the inline Jinja conditional with a role-local lookup plugin that picks administrator.email (external), "administrator" (local + user exists) or "root" (local + missing). Side change: SIM105 cleanup in utils/install/lint/__main__.py. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
import pwd
|
|
from typing import Any
|
|
|
|
from ansible.plugins.lookup import LookupBase
|
|
|
|
from plugins.lookup.email import LookupModule as EmailLookup
|
|
from plugins.lookup.email import _as_bool
|
|
from plugins.lookup.users import LookupModule as UsersLookup
|
|
|
|
|
|
def _instantiate(cls: type, templar: Any) -> Any:
|
|
inst = cls()
|
|
inst._templar = templar
|
|
return inst
|
|
|
|
|
|
class LookupModule(LookupBase):
|
|
def run(
|
|
self,
|
|
terms: list[Any],
|
|
variables: dict[str, Any] | None = None,
|
|
**kwargs: Any,
|
|
) -> list[str]:
|
|
email_cfg = _instantiate(EmailLookup, self._templar).run(
|
|
[], variables=variables
|
|
)[0]
|
|
if _as_bool(email_cfg.get("external")):
|
|
admin = _instantiate(UsersLookup, self._templar).run(
|
|
["administrator"], variables=variables
|
|
)[0]
|
|
return [str(admin.get("email", "root"))]
|
|
try:
|
|
pwd.getpwnam("administrator")
|
|
except KeyError:
|
|
return ["root"]
|
|
return ["administrator"]
|