1961 Commits
Author SHA1 Message Date
Janik von Rotz 9364910c8c feat: unify docker backup verification across services using restic stat checks
- Replace `command -v` with `ansible.builtin.stat` for verifying backup tool existence to improve idempotency and error handling
- Update `docker-postgres-dump` condition to `docker-postgres-backup` for consistency
- Correct `docker-volume` condition to `docker-volume-backup` in volume backup tasks
- Add Odoo backup task inclusion in `roles/odoo/tasks/odoo.yml` to integrate with the unified restic backup mechanism
- Standardize variable registration and failure conditions across all backup verification tasks
2026-10-15 12:37:09 +02:00
Janik von Rotz ee635dc784 feat: refactor docker volume role management, update hostname parsing, fix init script demo flag logic, and remove unused prompt.md 2026-10-13 21:45:51 +02:00
Janik von Rotz 147bfd3ff9 feat: remove redundant docker_volume role and unify backup handling across services through restic 2026-10-13 21:29:27 +02:00
Janik von Rotz fbfbc50bfa fix: improve hostname parsing logic to correctly identify and free available hostnames
- Replace `sed`-based hostname extraction with `grep -oE` to accurately isolate numeric suffixes
- Ensure consistent variable quoting in loops and `printf` commands to prevent word splitting
- Update the free hostname check to use anchored `grep` patterns for precise matching
2026-10-13 17:52:15 +02:00
Janik von Rotz f712afe2fa fix: correct Odoo init script demo flag logic to enable demo data
- Fix variable naming in `roles/odoo/files/docker-odoo-init` from `without_demo` to `with_demo` to accurately reflect the intended behavior
- Update the `-w` flag handling to set `with_demo` to `--with-demo` instead of clearing the `without_demo` variable
- Ensure the Odoo initialization command correctly passes the demo flag when the `-w` option is provided
- Add `snippet` to `enabledCssSnippets` in `.obsidian/appearance.json` to activate the custom CSS snippet
2026-10-13 17:11:45 +02:00
Janik von Rotz 6547ed9e6f feat: add Obsidian appearance configuration and update gitignore
- Add `.obsidian/appearance.json` to configure Ubuntu Mono as the default font family
- Remove `.obsidian/appearance.json` and `.obsidian/graph.json` from `.gitignore` to track appearance settings
- Ensure `.vercel` is properly listed in `.gitignore` with a trailing newline
2026-10-13 16:34:26 +02:00
Janik von Rotz 626cea9762 fix: revert postgres volume mount to parent directory to align with backup script logic
- Revert `roles/postgres/defaults/main.yml` to mount the volume to `/var/lib/postgresql` instead of `/var/lib/postgresql/data`
- Align the volume configuration with the backup and restore scripts which expect the parent directory mount
- Remove unused CSS snippet in `.obsidian/snippets/snippet.css`
2026-10-13 14:52:33 +02:00
Janik von Rotz dbabc45397 fix: correct postgres volume mount path to prevent data loss
- Fix `roles/postgres/defaults/main.yml` and `README.md` to mount the named volume directly to `/var/lib/postgresql/data` instead of the parent directory
- Prevent Docker from creating an anonymous volume that causes data loss during backup and restore operations
- Update `prompt.md` with a detailed explanation of the volume declaration issue and the fix
2026-10-12 10:12:48 +02:00
Janik von Rotz 126f358ae1 fix: resolve CI failures in docker volume backup and restore scripts
- Fix `docker-volume-backup` to correctly parse volume names by filtering for `Type == "volume"` and using proper newline separation instead of concatenating names
- Replace fragile manual array conversion with `mapfile` and `IFS` handling for robust volume list processing
- Fix `docker-volume-restore` to prevent word splitting errors by passing the filename via environment variable and using single quotes for the inner shell command
- Update `prompt.md` to reflect the completed task and token usage
2026-10-12 08:34:40 +02:00
Janik von Rotz e92338bcdc feat: integrate logo resize and convert scripts into task CLI and update documentation 2026-10-12 08:18:34 +02:00
Janik von Rotz 326038114a feat: move restic role to dedicated docker_restic role with S3 support and update documentation 2026-10-10 17:50:00 +02:00
Janik von Rotz b6c8215a95 feat: add S3 support to restic role with dedicated Docker backup/restore scripts and enhanced configuration 2026-10-09 22:07:40 +02:00
Janik von Rotz 20829c8f17 feat: move Vuepress documentation to docs folder and update workflows
- Rename GitHub Actions workflows to `deploy-docs.yml` and `test-project.yml` with specific job names
- Configure `deploy-docs.yml` to trigger only on markdown file changes
- Create `docs/` directory and move `roles.md`, `scripts.md`, and `upgrade-odoo.md` into it
- Add symlinks in `docs/` for `README.md` and `roles/` to maintain root-level access
- Update `.vuepress/config.js` to resolve absolute paths for `dest`, `public`, `temp`, and `cache`
- Update `package.json` scripts to build and dev from the `docs` folder
- Mark the migration task in `prompt.md` as completed with model and token details
2026-10-06 14:19:05 +02:00
Janik von Rotz 8b883a9b2d feat: restructure prompts directory and add Vuepress migration task
- Add `prompt.md` file documenting the task to move Vuepress pages into a `docs` folder
- Remove obsolete prompt files (`prompts/01` through `prompts/23`) as their tasks have been completed
- Consolidate historical task records to maintain a clean repository state
2026-10-06 14:10:31 +02:00
Janik von Rotz 4ff16c69ed feat: update docker-import log message to reflect streaming approach
- Change log message in `roles/docker/files/docker-import` from "Importing content" to "Stream content" to accurately describe the streaming tar operation
- Aligns with previous refactoring that eliminated intermediate file transfers
2026-09-24 15:40:33 +02:00
Janik von Rotz ec276fb4d4 feat: remove redundant free disk space logging in upgrade script
- Delete unused "Free disk space:" echo statements in `bin/upgrade-odoo`
- Clean up console output during source and target environment display
2026-09-24 15:40:04 +02:00
Janik von Rotz 9b2656ba6d feat: clean up temporary dump and filestore artifacts on target server
- Add command to remove the temporary PostgreSQL dump file after successful restore
- Add command to remove the temporary filestore tar archive after successful import
- Ensure no residual artifacts remain on the target server post-upgrade
2026-09-24 15:37:44 +02:00
Janik von Rotz 61d9cbee5a feat: refactor docker export/import to use streaming and standardize user variables
- Replace `USERNAME` and `TARGET_USERNAME` with `USER` and `TARGET_USER` in `bin/upgrade-odoo` to align with existing environment variable conventions
- Update SSH command construction in `upgrade-odoo` to use the standardized user variables
- Refactor `roles/docker/files/docker-export` to stream tar content directly to the destination file, eliminating temporary file creation inside the container
- Refactor `roles/docker/files/docker-import` to stream tar content directly from the source file, removing the need for intermediate file transfer and cleanup
- Update log messages in both scripts to reflect the streaming approach
2026-09-24 15:34:48 +02:00
Janik von Rotz 15d16bc573 feat: add postgres_volumes vars for legacy Postgres versions and update docs
- Add `postgres_volumes` configuration with legacy mount path `/var/lib/postgresql/data` to 56 existing host vars files for Postgres versions <= 17
- Skip updates for hosts already using Postgres 18+ or those with existing volume configurations
- Update `AGENTS.md` with session info details for the pi harness
- Fix `roles/odoo/README.md` Ansible command to target `inventories/mint_system`
- Create prompt file documenting the volume configuration migration task
2026-09-23 15:02:10 +02:00
Janik von Rotz c6a3083f5c breaking(postgres): update PostgreSQL volume mount path and default image version
- Change PostgreSQL volume mount path from `/var/lib/postgresql/data` to `/var/lib/postgresql` across README files and role defaults
- Upgrade default PostgreSQL Docker image from `postgres:14-alpine` to `postgres:18-alpine`
- Update documentation and configuration defaults in `README.md`, `roles/docker_compose/README.md`, `roles/postgres/README.md`, and `roles/postgres/defaults/main.yml`
2026-09-23 14:45:33 +02:00
Janik von Rotz 6f3cffb0b2 feat: update Ansible vault identity examples in documentation
- Replace `sozialinfo` vault identity with `example` in README.md
- Update both TOML configuration and environment variable examples
2026-09-22 18:45:01 +02:00
Janik von Rotz 257fb4dd01 feat: update Matrix chat link to public room
- Replace private user room link with public `#ansible-build` room in `.vuepress/config.js`
- Update Matrix badge URL in `README.md` to match the new public room link
2026-09-21 10:42:59 +02:00
Janik von Rotz eb31717925 feat: display free disk space in upgrade-odoo script
- Add "Free disk space" label to the current environment output section
- Add "Free disk space" label to the target environment output section
- Maintain existing output formatting and variable usage
2026-09-18 11:36:24 +02:00
Janik von Rotz 0e8b94701d feat: add odoo_apps role to odoo playbook
- Introduce `odoo_apps` role to the `plays/odoo.yml` playbook
- Assign the `odoo_apps` tag to the new role for selective execution
- Ensure the role is included after `packages` in the play sequence
2026-09-16 17:27:16 +02:00
Janik von Rotz 49dd64276e refactor: correct repository paths for role-specific script downloads
- Update `cron` role installation script to fetch from `$repository/cron/` instead of `$repository/postgres/`
- Update `docker` role installation script to fetch from `$repository/docker/` instead of `$repository/docker_volume/`
- Update `firehol` role installation script to fetch from `$repository/firehol/` instead of `$repository/cron/`
- Update `nginx` role installation script to fetch from `$repository/nginx/` instead of the generic `$repository/`
- Ensure all installation scripts target the correct directory structure within the repository for their respective roles
2026-09-16 11:12:37 +02:00
Janik von Rotz 1c5a9cc171 chore: optimize VuePress build configuration and memory limits
- Disable sourcemaps and compressed size reporting in the Vite bundler to reduce build output size
- Increase Node.js memory limit to 768MB for the build script to prevent out-of-memory errors
- Configure `viteOptions` within `viteBundler` to apply build optimizations globally
2026-09-16 11:02:47 +02:00
Janik von Rotz 00b1a30f9b refactor: remove redundant comments from DNS normalization logic
- Eliminate explanatory comments regarding record normalization and formatting rules
- Retain the functional logic for normalizing MX and TXT records in the `infomaniak_desired_records` fact
- Clean up the `infomaniak_dns.yml` file to reduce visual noise while preserving the single source of truth for record formatting
2026-09-14 13:56:14 +02:00
Janik von Rotz 991cc1f356 refactor: standardize DNS record keying and normalize target formatting
- Replace repetitive per-task target formatting logic with a single normalization step
- Introduce `infomaniak_desired_records` fact to store structured objects (key, id, source, type, target, ttl)
- Apply specific formatting rules for MX (priority prefix) and TXT (quote wrapping) records during normalization
- Simplify Create, Update, and Delete tasks to operate on the pre-normalized list
- Remove redundant variable definitions and conditional logic from individual URI tasks
- Ensure consistent key generation across all DNS record operations
2026-09-14 11:32:14 +02:00
Janik von Rotz d5c990b90b chore: upgrade VuePress dependencies to rc.31 and update README link
- Update VuePress ecosystem packages (bundler-vite, client, plugins, theme, utils) from rc.112/rc.115/rc.24 to rc.134/rc.31
- Upgrade Vue from 3.5.18 to 3.5.42 and Sass from 1.90.0 to 1.104.0
- Update Vite to 8.2.2 and Shiki to 4.4.3
- Refresh `pnpm-lock.yaml` to reflect new dependency tree and resolved versions
- Remove redundant `[task](./task.md)` link in `README.md` as `task help` is sufficient
2026-09-10 14:51:25 +02:00
Janik von Rotz 1c8c142415 docs: restrict documentation build to specific role and script files
- Update `.vuepress/config.js` page patterns to explicitly include only `roles/**/*.md`, `README.md`, `roles.md`, `scripts.md`, and `upgrade-odoo.md`
- Remove generic glob patterns and excluded directories to focus the documentation build on core operational guides
2026-09-10 14:36:19 +02:00
Janik von Rotz bd30aa88c4 refactor: standardize DNS record keying and remove delay wrappers
- Replace string-based DNS record identification with structured objects containing key, id, source, type, target, and ttl
- Update DNS creation, update, and deletion logic to use the new composite key for matching records
- Refine TTL update logic to only trigger when the desired TTL differs from the existing one
- Remove `open-url-with-delay` calls in favor of `open-url` in `upgrade-odoo` and `task` scripts
- Simplify URL opening logic by removing unnecessary delay arguments
2026-09-10 13:45:40 +02:00
Janik von Rotz 35a392e7d8 fix: make venv activation non-fatal in task script
- Add `|| true` to `activate-venv` call to prevent script failure if virtual environment is not available
- Ensure task execution continues even when venv activation is skipped
2026-09-10 11:32:31 +02:00
Janik von Rotz 2ce0d8b012 feat: add user-mode installation support to cron script and fix repository URL
- Add `--user` flag support to install scripts in `~/.local/bin` instead of `/usr/local/bin`
- Remove `sudo` requirement for script installation and execution
- Fix repository URL from `cron` to `postgres` for script downloads
- Update installation directory logic to handle both system and user contexts
- Create target directory automatically when installing in user mode
2026-09-10 11:29:01 +02:00
Janik von Rotz 2af5447d65 docs: add troubleshooting guide for expired Debian repositories in update role
- Add section for "Hetzner InRelease repo expired" with problem description, workaround using archive repo, and solution to upgrade distro
- Add section for "Debian InRelease repo expired" with similar workaround and solution steps
- Include specific commands for backing up sources.list, modifying repo URLs, and disabling validity checks
- Update `roles/update/README.md` to assist users encountering apt cache expiration errors
2026-09-10 08:23:27 +02:00
Janik von Rotz bc4f0ce816 feat: merge opsone inventory into mint_system with scoped host renaming
- Rename opsone inventory folders and hosts to follow `clio_odoo_*` scoping pattern
- Merge `clio` and `clio_odoo_*` groups into `inventories/mint_system/hosts.yml`
- Move scoped `host_vars` from opsone to mint_system directory
- Remove `inventories/opsone` folder after successful merge
- Validate merged inventory structure using `ansible-inventory`
- Document the task execution, scope, and worklog in `prompts/22_merge-opsone-inventory.md`
2026-09-03 16:50:18 +02:00
Janik von Rotz 30f0ee8517 docs: add admin account creation instructions to Greenlight README
- Add section detailing how to create an admin account using `docker exec`
- Provide the specific `rake admin:create` command and explain the output
- Note that the command returns credentials for accessing the admin panel
2026-09-01 17:06:18 +02:00
Janik von Rotz d69605929a fix: replace bbb_install tasks with single script execution and remove cleanup steps
- Replace verbose package installation tasks in Ubuntu 18.04 and 22.04 roles with a single `fail` task executing the official bbb-install script
- Update Ubuntu 22.04 script URL to v3.0.x-release and add `-g` flag for Greenlight integration
- Remove `greenlight_container` removal and extensive file cleanup tasks from `roles/cleanup/tasks/bbb_install.yml` as the installation is now handled externally
- Update task names to reflect the shift from manual configuration to script execution
2026-08-26 16:42:29 +02:00
Janik von Rotz 00bad04c85 fix: add pod readiness check after deletion in deployment workflow
- Rename "Deploy to Kubernetes" step to "Delete existing pods" for clarity
- Add "Wait for pod to be running" step to ensure new pods are ready before proceeding
- Add missing newlines to separate workflow steps
2026-08-26 10:16:48 +02:00
Janik von Rotz a4293d6efd fix: reset infomaniak_dns_present fact between zones to prevent record inheritance
- Add `set_fact` task to initialize `infomaniak_dns_present` to an empty list at the start of `infomaniak_dns.yml`
- Remove redundant `| default([])` filter in the fact accumulation step as the list is now explicitly reset
- Document the fix in `prompts/21_fix-infomaniak-dns-task.md` with context, task details, and worklog
2026-08-26 08:21:21 +02:00
Janik von Rotz 940ae5af71 feat: update build script to copy role files recursively and add pnpm workspace config
- Change `cp` commands in `task` build-vuepress function to `cp -r` to correctly copy directory contents from roles
- Add `pnpm-workspace.yaml` to project root and update `.gitignore` to track it
- Update README.md to replace Vercel badge with GitHub Actions deploy workflow badge
- Add default values for PORT and TARGET_PORT variables in `bin/upgrade-odoo` script
2026-08-25 14:16:38 +02:00
Janik von Rotz 6076c41be9 feat: add GitHub Actions deployment workflow and adjust Ansible logging path
- Add `.github/workflows/deploy.yml` to automate Kubernetes pod deletion on main branch push
- Change Ansible log path from `/var/log/ansible.log` to `/var/tmp/ansible.log` in `ansible.cfg.template`
- Remove manual log file setup steps from the `task` install function as the log path no longer requires root permissions
2026-08-25 13:45:46 +02:00
Janik von Rotz c842cb28ed feat: add packages role to odoo playbook and tag restic 2026-08-24 16:21:09 +02:00
Janik von Rotz 5b4378a52e feat: rename bigbluebutton role to bbb_install and update inventory variables 2026-08-20 11:46:11 +02:00
Janik von Rotz 965af44ef2 feat: rename bigbluebutton role to bbb_install and update inventory variables 2026-08-20 11:37:46 +02:00
Janik von Rotz dfb13f7d8b fix: refactor setup play order and update docker role to use get_url for GPG key
- Reorder roles in `plays/setup.yml` to move `iam` to the end and remove `restic_server` and `dozzle`
- Update `roles/docker` to use `ansible.builtin.get_url` for GPG key retrieval, aligning with modern Ansible best practices
- Add troubleshooting documentation for public key verification errors in `roles/docker/README.md`
2026-08-20 11:25:30 +02:00
Janik von Rotz 98f7c9ed6a BREAKING CHANGE: merge inventories and restructure playbooks for modular deployment
- Merge `odoo` and `nextcloud` inventories into `mint_system` with scoped host and group variables
- Rename host_vars folders and apply `_odoo`/`_nextcloud` suffixes to hosts for clear separation
- Restructure `mint_system/hosts.yml` to group hosts under `setup`, `odoo`, and `nextcloud` children
- Update playbooks (`all`, `nextcloud`, `odoo`, `setup`) to target specific host groups instead of `all`
- Remove redundant `postgres` and `mariadb` dependencies from `nextcloud` role meta
- Refactor `list-hosts` script to support flattened inventory structures and improved column sorting
- Mark inventory merge task as completed in documentation
2026-08-20 08:20:31 +02:00
Janik von Rotz b0b91319a2 feat: split bigbluebutton and greenlight 2026-08-18 17:11:50 +02:00
Janik von Rotz 6e5fc8b342 fix(upgrade): correct variable expansion for USE_OPENUPGRADE and skip update on OpenUpgrade
- Fix missing variable expansion in the upgrade-production step by adding the `$` prefix to `USE_OPENUPGRADE`
- Add conditional logic to the update step to skip module updates when OpenUpgrade is enabled, preventing unnecessary operations during the upgrade process
2026-08-18 14:53:23 +02:00
Janik von Rotz 97835a6c11 fix(upgrade): correct server variable typo in stop-container step 2026-08-18 14:30:10 +02:00
Janik von Rotz 8ece15763a feat(upgrade): add postgres role with odoo tag for unified installation
- Include the postgres role in the odoo play to ensure database dependencies are met
- Apply the `odoo` tag to the postgres role to enable selective execution via Ansible filtering
2026-08-18 14:21:46 +02:00