mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-09-24 19:16:26 +02:00
Refactor resource configuration:
- Introduce new resource_filter plugin (mandatory hard_default, auto entity_name fallback) - Replace get_app_conf calls with resource_filter in resource.yml.j2 - Add WEBSERVER_CPUS_EFFECTIVE, WEBSERVER_WORKER_PROCESSES, WEBSERVER_WORKER_CONNECTIONS to 05_webserver.yml - Update Nginx templates (sys-svc-webserver, web-app-magento, web-app-nextcloud) to use new vars - Extend svc-prx-openresty config with cpus/mem limits - Add unit tests for resource_filter Details: https://chatgpt.com/share/68d3a493-9a5c-800f-8cd2-bd2e7a3e3fda
This commit is contained in:
@@ -29,4 +29,31 @@ NGINX:
|
||||
IMAGE: "/tmp/cache_nginx_image/" # Directory which nginx uses to cache images
|
||||
USER: "http" # Default nginx user in ArchLinux
|
||||
|
||||
# Effective CPUs (float) across proxy and the current app
|
||||
WEBSERVER_CPUS_EFFECTIVE: >-
|
||||
{{
|
||||
[
|
||||
(applications | resource_filter('svc-prx-openresty', 'cpus', service_name | default(''), RESOURCE_CPUS)) | float,
|
||||
(applications | resource_filter(application_id, 'cpus', service_name | default(''), RESOURCE_CPUS)) | float
|
||||
] | min
|
||||
}}
|
||||
|
||||
# Nginx requires an integer for worker_processes:
|
||||
# - if cpus < 1 → 1
|
||||
# - else → floor to int
|
||||
WEBSERVER_WORKER_PROCESSES: >-
|
||||
{{
|
||||
1 if WEBSERVER_CPUS_EFFECTIVE < 1
|
||||
else (WEBSERVER_CPUS_EFFECTIVE | int)
|
||||
}}
|
||||
|
||||
# worker_connections from pids_limit (use the smaller one), with correct key/defaults
|
||||
WEBSERVER_WORKER_CONNECTIONS: >-
|
||||
{{
|
||||
[
|
||||
(applications | resource_filter('svc-prx-openresty', 'pids_limit', service_name | default(''), RESOURCE_PIDS_LIMIT)) | int,
|
||||
(applications | resource_filter(application_id, 'pids_limit', service_name | default(''), RESOURCE_PIDS_LIMIT)) | int
|
||||
] | min
|
||||
}}
|
||||
|
||||
# @todo It propably makes sense to distinguish between target and source mount path, so that the config files can be stored in the openresty volumes folder
|
Reference in New Issue
Block a user