Files
computer-playbook/templates/roles/web-app/config
Kevin Veen-Birkenbach ff7b7aeb2d feat(filters): add active_docker_container_count filter and use it for fair resource splits
Compute per-container CPU/RAM shares based on active services (web-/svc-*, enabled=true or undefined). Cast host facts to numbers, add safe min=1, and output compose-ready values. Include robust unit test.

Also: include resource.yml.j2 in base template and minor formatting tidy-up.

https://chatgpt.com/share/68d2d96c-9bf4-800f-bbec-d4f2c0051c06
2025-09-23 21:35:12 +02:00
..

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Config

The domains defined here can be customized by the system administrator. By default, theyre loaded from `../../group_vars/all/04_applications.yml`, but you can override them per application in your repository:

```yaml
applications:
  {{ application_id }}:
    variable_a: "test string"  # Replaces the default value
    variable_b: {}             # Merges with the existing content
    variable_c: []             # Replaces the default value (use caution with domains)
```

## Placeholder Logic with `<< >>`

You can reference values from the generated `defaults_applications` dictionary at build time by embedding `<< ... >>` placeholders inside your template. For example:

```yaml
url: "{{ WEB_PROTOCOL }}://<< defaults_applications.web-svc-file.domains.canonical[0] >>/assets"
```

- The `<< ... >>` placeholders are resolved by the [`DictRenderer`](../../../utils/dict_renderer.py) helper class.
- The CLI uses the [`DefaultsGenerator`](../../../cli/build/defaults/applications.py) class to merge all role configurations into a single YAML and then calls the renderer to substitute each `<< ... >>` occurrence.
- Use the `--verbose` flag on the CLI script to log every replacement step, and rely on the builtin timeout (default: 10 seconds) to prevent infinite loops.