Commit Graph
450 Commits
Author SHA1 Message Date
kevinveenbirkenbachandClaude Sonnet 4.6 9d863f1ef4 feat(inventory): add SERVICES_DISABLED env var support and environment test flow
- Add services_disabler.py: parse SERVICES_DISABLED, disable services in host_vars,
  remove provider roles from inventory
- Wire apply_services_disabled_from_env into cli/create/inventory/cli.py after deploy
- Add unit tests for all services_disabler functions
- Update hardware.md and variables.md with SERVICES_DISABLED documentation
- Update environment.sh: deploy dashboard with SERVICES_DISABLED=matomo first,
  assert dashboard reachable + matomo not reachable, then deploy matomo and assert
  reachable; extract assert_http_status / assert_http_status_not helpers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 15:00:24 +02:00
kevinveenbirkenbach c491df98e2 fix compose ca shell handling 2026-03-28 17:13:19 +01:00
kevinveenbirkenbach 2b0ed2eacf Merge branch 'feature/pixelfed-playwright' into feature/taiga-ldap 2026-03-28 09:22:30 +01:00
kevinveenbirkenbach 67fadb57b8 refactor: normalize inventory filename to devices 2026-03-28 05:40:13 +01:00
kevinveenbirkenbach 2f0edbb2fc Fix oauth2 proxy cookie secret generation 2026-03-26 01:15:08 +01:00
kevinveenbirkenbach 66bbffe963 Fix docker image reference scan hints 2026-03-25 19:24:53 +01:00
kevinveenbirkenbach 903fc897f4 Merge branch 'main' into feature/playwright-e2e-test 2026-03-24 21:44:11 +01:00
kevinveenbirkenbach 2e37a3689f Merge branch 'main' into feature/lint
# Conflicts:
#	Dockerfile
#	scripts/administration/ghcr/cleanup_ci_images.sh
#	scripts/meta/wait/image.sh
2026-03-22 21:51:23 +01:00
kevinveenbirkenbach d8999e2ef5 Merge branch 'main' into feature/playwright-e2e-test 2026-03-22 21:17:47 +01:00
kevinveenbirkenbach fe764735c3 Stabilize webserver and tree unit tests 2026-03-21 11:56:18 +01:00
kevinveenbirkenbach e8b69b8239 Refine min_storage validation warnings 2026-03-21 10:54:02 +01:00
kevinveenbirkenbach d8218babfc Fix DNS hosts fallback and domains CLI 2026-03-21 09:12:24 +01:00
kevinveenbirkenbach 189267496d Rename module_utils package to utils 2026-03-21 02:05:39 +01:00
kevinveenbirkenbach 003a3a0b84 Merge branch 'main' into feature/lint
Resolve merge conflicts, keep the cleanup script move to scripts/image, and fix the resulting lint regressions.
2026-03-21 01:36:58 +01:00
kevinveenbirkenbach de4d485d86 Refactor domain helpers and DNS fallback generation 2026-03-21 01:19:49 +01:00
kevinveenbirkenbach 38ecde6525 Merged main into playwright 2026-03-20 13:08:20 +01:00
kevinveenbirkenbach 44ea2df452 Fix dev workflow image build and docker repo bootstrap 2026-03-19 19:11:51 +01:00
kevinveenbirkenbach ad3f159548 Require Docker Compose in dev packaging 2026-03-19 11:25:49 +01:00
kevinveenbirkenbach de555f6bc3 add get_url_retry plugin and migrate get_url usages 2026-03-19 01:58:11 +01:00
kevinveenbirkenbach c6f5fdea15 refactor plugins layout and migrate uri calls to uri_retry 2026-03-19 01:41:07 +01:00
kevinveenbirkenbach 9f169321ed Merge branch 'main' into feature/playwright-e2e-test 2026-03-18 02:18:44 +01:00
kevinveenbirkenbach 1f9a0d9778 feat(test-e2e-playwright): finalize role-based playwright runner and tests 2026-03-17 03:57:35 +01:00
kevinveenbirkenbach 4e602dbb41 Adjust dashboard frame-ancestors token and update CSP unit test 2026-03-16 23:45:00 +01:00
kevinveenbirkenbach a0477f1bcf refactor(sys-stk-backend): move service load condition into role lookup plugin 2026-03-16 11:29:29 +01:00
kevinveenbirkenbach 846444effa fix(tls): unify self-signed CA env for health services 2026-02-23 23:53:18 +01:00
kevinveenbirkenbach 165a7136c6 Strip sys-ctl- prefix in unit_name lookup 2026-02-22 22:26:33 +01:00
kevinveenbirkenbach e8d3e8091e Solved tests 2026-02-22 03:36:40 +01:00
kevinveenbirkenbach 1dc350e9f9 Use command_path lookup for pip-installed CLI binaries 2026-02-22 02:27:40 +01:00
kevinveenbirkenbach 384e590388 added linebreak 2026-02-21 23:46:17 +01:00
kevinveenbirkenbach b95a231a37 refactor(webserver): remove explicit fs owner/group handling 2026-02-21 21:41:14 +01:00
kevinveenbirkenbach ec30948546 fix(deploy): use bash -lc for commands with pipefail 2026-02-21 16:05:42 +01:00
kevinveenbirkenbach 0710c41f91 fix(ci): run mirror resolver with venv python in container 2026-02-20 11:25:46 +01:00
kevinveenbirkenbach 1fb252fc7d refactor(inventories,roles): migrate util-* to bundle inventories and unify AUR handling
Migrates large parts of the legacy util-* role structure to inventory-driven
bundles and standardizes AUR installation via central system roles.

- Adds `web-svc-legal`, `web-svc-asset`, and `web-app-dashboard` to all server bundles.
- Removes `util-srv-corporate-identity` entirely.
- Introduces new workstation bundle inventories:
  `admin`, `admin-network`, `browser`, `design`, `dev-*`, `game-*`, `office`.
- Uses bundle variables `SYS_PACKAGES` and `SYS_AUR_PACKAGES` as the primary
  installation mechanism.
- Removes/replaces obsolete util-desk/util-dev roles where fully covered.
- Renames dev roles:
  `util-desk-dev-core` -> `dev-core`,
  `util-desk-dev-python` -> `dev-python`,
  `util-desk-dev-arduino` -> `dev-arduino`.
- Adds missing `application_id` vars for renamed roles.
- Removes the entire `util` section from `roles/categories.yml`.
- Replaces direct `kewlfft.aur.aur` calls in desktop/driver roles with
  a centralized wrapper role.
- Introduces new role `sys-aur-install` as AUR installation wrapper.
- Migrates `dev-yay` to `sys-aur` and adds `SYS_AUR_PACKAGES: []` default.
- Extends constructor stage:
  auto-load `sys-package` when `SYS_PACKAGES` is set,
  and `sys-aur` + `sys-aur-install` when `SYS_AUR_PACKAGES` is set.
- Cleans up stage loading:
  removes util-srv from `02_server.yml`,
  reduces workstation loading to `desk-roles.yml` + `drv-non-free`.
- Updates integration/unit tests for the new invokable and include behavior.
- Integration test now accepts static `include_tasks` references.
- Fixes recursion risk between `sys-aur` and `sys-aur-install` by setting
  `run_once_sys_aur` at the beginning of `sys-aur/tasks/01_core.yml`.

BREAKING CHANGE:
- `util-*` categories and bundle paths are no longer part of stage loading.
- Multiple `util-desk-*`, `util-dev-*`, and `util-srv-*` roles were removed.
- Deployment groups must be migrated to the new bundle/role naming.
2026-02-19 14:10:59 +01:00
kevinveenbirkenbach dc05daea17 fix(unit_name): resolve templated vars and version lookup fallback 2026-02-17 16:56:29 +01:00
kevinveenbirkenbach fd1c0254a5 refactor(sys-service, unit_name): switch to SOFTWARE_DOMAIN and add version-based unit pruning
- Change unit_name lookup plugin to use SOFTWARE_DOMAIN instead of SOFTWARE_NAME
  for versioned systemd unit generation
- Update unit tests to reflect SOFTWARE_DOMAIN requirement
- Introduce sys-service prune phase to remove old-version services and timers:
  - stop and disable outdated units
  - delete old unit files
  - trigger daemon-reload when necessary
- Reorder sys-service core flow: prune → lockdown → reset
- Rename and reindex task files for clearer execution order
- Update internal includes accordingly

https://chatgpt.com/share/e/69945873-c4b4-8013-98e3-eb7f7a879853
2026-02-17 13:00:38 +01:00
kevinveenbirkenbach b878f5d2a0 refactor(systemd): replace get_service_name filter with unit_name lookup plugin
https://chatgpt.com/share/e/699449d6-580c-8013-8bcc-6a8545c6762f
2026-02-17 11:58:25 +01:00
kevinveenbirkenbach bb0174625a feat(version): introduce controller-side version lookup plugin
- Remove legacy FILE_VERSION path usage
- Add custom lookup plugin `version` to read pyproject.toml
- Resolve version via [project].version with poetry fallback
- Refactor sys-version role to use lookup('version')
- Add unit tests for version lookup plugin

https://chatgpt.com/share/e/699433f7-1278-8013-af8e-da1b7f303886
2026-02-17 10:52:55 +01:00
kevinveenbirkenbach 535ff88189 fix(domains): robust recursive flattening in generate_all_domains and remove json workaround
* replace shallow flatten logic with recursive _add helper to correctly handle nested dict/list structures
* prevent unhashable _AnsibleLazyTemplateList from reaching set(flat)
* remove unnecessary to_json/from_json roundtrip in constructor
* add unittest coverage for mixed str/list/dict domain inputs and deduplication behavior

https://chatgpt.com/share/698e598e-3284-800f-9917-ca1eaa4e6572
2026-02-12 23:51:37 +01:00
kevinveenbirkenbach 92946ee008 refactor(core): introduce SOFTWARE_DOMAIN and unify homepage, tls, service, and oidc defaults
* add SOFTWARE_DOMAIN derived from SOFTWARE_NAME lowercased
* introduce DOMAIN_HOMEPAGE defaulting to dashboard domain if present, otherwise SOFTWARE_DOMAIN
* add automatic primary → homepage redirect mapping in constructor
* migrate TLS and CA paths from SOFTWARE_NAME|lower to SOFTWARE_DOMAIN
* update systemd unit suffix and timer/service discovery globs to SOFTWARE_DOMAIN
* switch OIDC default realm and client id to SOFTWARE_DOMAIN
* adjust SuiteCRM well-known software name to SOFTWARE_DOMAIN
* update unit tests to use SOFTWARE_DOMAIN for strict Jinja expansion

https://chatgpt.com/share/698db094-22bc-800f-8454-10d97f817659
2026-02-12 11:50:55 +01:00
kevinveenbirkenbach 6efde55647 refactor(dashboard): rename web-app-desktop to web-app-dashboard and update service toggle
* replace compose.services.desktop with compose.services.dashboard across all roles
* rename role web-app-desktop to web-app-dashboard
* rename sys-front-inj-desktop to sys-front-inj-dashboard
* update resolver mapping to include web-app-dashboard when dashboard is enabled
* adjust CSP filters to reference dashboard for frame-ancestors handling
* update lookup plugins, filter plugins, templates, vars and run_once flags
* migrate all tests to dashboard naming and service key
* update role dependencies and port mappings
* remove legacy desktop role and variables

BREAKING CHANGE:
The service key compose.services.desktop has been renamed to compose.services.dashboard.
All custom configs, inventories, or overrides must be updated accordingly.

https://chatgpt.com/share/698da7ad-1978-800f-82b4-4755b17be026
2026-02-12 11:12:49 +01:00
kevinveenbirkenbach efe2ea3357 **test: align deployment type tests with invokable-based semantics**
Update unit tests to reflect the new invokable-driven classification logic by mocking invokable path discovery, removing legacy alias expectations, and adding coverage for universal and mixed cases. Also relocate CLI deploy tests into the unit test hierarchy for consistency.
2026-02-10 21:38:02 +01:00
kevinveenbirkenbach 7a3c44b013 refactor(invokable): derive deployment types from invokable roles via DEFAULT_RULES
- Remove alias-based group name handling from get_deployment_types_from_groups
- Make DEFAULT_RULES the single source of truth for server/workstation/universal
- Determine "universal" strictly as invokable roles not matched by server/workstation
- Update unit tests to reflect invokable-based semantics

This aligns Ansible filters and CLI behavior and avoids inventory-specific heuristics.

https://chatgpt.com/share/698b8125-d2a0-800f-9fbd-f3f9c8bc5023
2026-02-10 20:04:00 +01:00
kevinveenbirkenbach 5acce545e1 refactor(cli): remove sound, alarm and server-type flags
Drop the sound/alarm subsystem and deprecated CLI flags.

* Remove --sound, --no-signal and --alarm-timeout
* Remove server-type flag (-T / TEST_DEPLOY_TYPE)
* Delete sound-related modules
* Simplify RunConfig and runner error handling
* Update help output, scripts and tests
* Remove optional audio extras from pyproject.toml

https://chatgpt.com/share/698b74f1-0c0c-800f-98c4-183697d6a2a0
2026-02-10 19:10:37 +01:00
kevinveenbirkenbach 449781fa73 fix(ci): make sufficient_storage JSON-safe and stabilize test matrix generation
Switch sufficient_storage CLI to support JSON output and update CI matrix
generation to use JSON-only pipelines, preventing roles from collapsing
into a single matrix entry.
2026-02-10 14:06:54 +01:00
kevinveenbirkenbach df9a23ceed feat(ci): unify invokable app discovery and add lifecycle filtering
- Move server/workstation/universal resolution into Python CLI
- Add optional --lifecycles filter to cli.meta.applications.type
- Gate invokable roles by galaxy_info.lifecycle in module_utils.invokable
- Replace legacy resolve-invokable-roles.sh with CLI-based implementation
- Apply global hard excludes consistently across all deploy types
- Fix SC2086 issues and make lifecycle argument handling shell-safe
- Extend unit tests to cover lifecycle forwarding and normalization

https://chatgpt.com/share/698b0039-c4c4-800f-b962-7033324c07a8
2026-02-10 11:50:09 +01:00
kevinveenbirkenbach 84782f3b22 refactor(invokable): centralize app discovery, add type grouping, and derive deploy stages from inventory groups
https://chatgpt.com/share/698b0039-c4c4-800f-b962-7033324c07a8
2026-02-10 10:53:53 +01:00
kevinveenbirkenbach fcb4353d63 refactor(sys-svc-compose): move compose pull retries to Ansible and simplify pull.py
- Remove internal retry logic, transient error heuristics, and backoff from pull.py
- Let Ansible handlers control retries (10x, 30s delay) for compose pull/build
- Simplify pull.py to single-attempt run_or_fail execution with locking preserved
- Drop redundant timeout CLI flags; rely on environment variables instead
- Keep intelligent --ignore-buildable detection via `docker compose pull --help`
- Update unit tests to reflect new deterministic behavior and remove retry tests

https://chatgpt.com/share/6989ce5a-7f40-800f-950a-e108d6f4c070
2026-02-09 13:08:46 +01:00
kevinveenbirkenbach 88c3bbb721 test: fix templating env lookup fallback and unify unittest.mock import usage
https://chatgpt.com/share/698992ef-215c-800f-a93e-5d8e75b81f23
2026-02-09 08:55:17 +01:00
kevinveenbirkenbach 4fe03975fc Merge remote-tracking branch 'origin/alert-autofix-168' into merge-autofix 2026-02-09 08:42:28 +01:00
kevinveenbirkenbach 80f457de9e Merge remote-tracking branch 'origin/alert-autofix-139' into merge-autofix 2026-02-09 08:42:06 +01:00