From 4d3a5933c044d0418d874c4932697cfb091c1d30 Mon Sep 17 00:00:00 2001 From: uumas Date: Sat, 5 Jul 2025 16:52:10 +0300 Subject: [PATCH] service: Better organize vars --- roles/service/tasks/additional.yaml | 41 ----------- roles/service/vars/main.yaml | 96 ------------------------- roles/service/vars/main/additional.yaml | 54 ++++++++++++++ roles/service/vars/main/general.yaml | 24 +++++++ roles/service/vars/main/mounts.yaml | 38 ++++++++++ roles/service/vars/main/secrets.yaml | 22 ++++++ 6 files changed, 138 insertions(+), 137 deletions(-) delete mode 100644 roles/service/vars/main.yaml create mode 100644 roles/service/vars/main/additional.yaml create mode 100644 roles/service/vars/main/general.yaml create mode 100644 roles/service/vars/main/mounts.yaml create mode 100644 roles/service/vars/main/secrets.yaml diff --git a/roles/service/tasks/additional.yaml b/roles/service/tasks/additional.yaml index e6e20f9..62ab7ef 100644 --- a/roles/service/tasks/additional.yaml +++ b/roles/service/tasks/additional.yaml @@ -3,47 +3,6 @@ ansible.builtin.include_role: name: container vars: - _service_additional_volume_mounts: "{{ _service_additional_container.mounts | selectattr('type', '==', 'volume') }}" - _service_additional_template_mounts: "{{ _service_additional_container.mounts | selectattr('type', '==', 'template') }}" - _service_additional_host_directory: "/srv/{{ service_name }}" - - _service_additional_container_volume_mounts: >- - {{ - _service_additional_volume_mounts | - zip( - _service_additional_volume_mounts | - map(attribute='source') | - map('regex_replace', '^', service_name ~ '-') | - map('community.general.dict_kv', 'source') - ) | - map('combine') - }} - _service_additional_container_bind_mounts: "{{ _service_additional_container.mounts | selectattr('type', '==', 'bind') }}" - _service_additional_container_template_mounts: >- - {{ - ([{'readonly': true}] * _service_additional_template_mounts | length) | - zip( - _service_additional_template_mounts, - _service_additional_template_mounts | - map(attribute='source') | - map('regex_replace', '\.j2$', '') | - map('regex_replace', '^', _service_host_directory ~ '/mounts/') | - map('community.general.dict_kv', 'source'), - ([{'type': 'bind'}] * _service_additional_template_mounts | length) - ) | - map('combine') - }} - - _service_additional_container_mounts: >- - {{ - _service_additional_container_volume_mounts + - _service_additional_container_bind_mounts + - _service_additional_container_template_mounts - if _service_additional_container.mounts is defined - else - _service_container_mounts - }} - container_name: "{{ _service_additional_container.name }}" container_image: "{{ _service_additional_container.image | default(service_container_image) }}" container_image_creds: "{{ service_container_image_creds }}" diff --git a/roles/service/vars/main.yaml b/roles/service/vars/main.yaml deleted file mode 100644 index 01f206c..0000000 --- a/roles/service/vars/main.yaml +++ /dev/null @@ -1,96 +0,0 @@ ---- -_service_volume_mounts: "{{ service_container_mounts | selectattr('type', '==', 'volume') }}" -_service_template_mounts: "{{ service_container_mounts | selectattr('type', '==', 'template') }}" -_service_host_directory: "/srv/{{ service_name }}" - -_service_container_volume_mounts: >- - {{ - _service_volume_mounts | - zip( - _service_volume_mounts | - map(attribute='source') | - map('regex_replace', '^', service_name ~ '-') | - map('community.general.dict_kv', 'source') - ) | - map('combine') - }} -_service_container_bind_mounts: "{{ service_container_mounts | selectattr('type', '==', 'bind') }}" -_service_container_template_mounts: >- - {{ - ([{'readonly': true}] * _service_template_mounts | length) | - zip( - _service_template_mounts, - _service_template_mounts | - map(attribute='source') | - map('regex_replace', '\.j2$', '') | - map('regex_replace', '^', _service_host_directory ~ '/mounts/') | - map('community.general.dict_kv', 'source'), - ([{'type': 'bind'}] * _service_template_mounts | length) - ) | - map('combine') - }} - -_service_container_mounts: >- - {{ - _service_container_volume_mounts + - _service_container_bind_mounts + - _service_container_template_mounts - }} - -_service_setup_database: "{{ service_database_type != 'none' }}" -_service_database_name: "{{ service_name }}-{{ service_database_type }}" - -_service_container_networks: "{{ [service_name] + service_container_additional_networks }}" - -_service_container_secrets: >- - {{ - service_container_secrets - | map(attribute='name') - | map('community.general.dict_kv', 'target') - | zip( - service_container_secrets, - service_container_secrets - | map(attribute='name') - | map('regex_replace', '^', service_name ~ '-') - | map('community.general.dict_kv', 'name') - ) - | map('combine') - + ( - [{ - 'name': _service_database_name, - 'type': service_database_secret_type, - 'target': service_database_secret_target - }] if _service_setup_database else [] - ) - }} - -_service_additional_containers: >- - {{ - service_additional_containers - | zip( - service_additional_containers - | map(attribute='name') - | map('regex_replace', '^', service_name ~ '-') - | map('community.general.dict_kv', 'name') - ) - | map('combine') - }} - -_service_container_requires: >- - {{ - service_requires - + ([_service_database_name + '.service'] if _service_setup_database else []) - + ([service_name + '-redis.service'] if service_redis else []) - }} -_service_container_wants: >- - {{ - service_wants - + ([service_name + '-socat.socket'] if service_domains | length > 0 else []) - + _service_additional_containers - | map(attribute='name') - | map('regex_replace', '$', '.service') - }} - -_service_replacement_host_header: - Host: "{{ service_name }}:{{ service_container_http_port }}" -_service_proxy_headers: "{{ _service_replacement_host_header if not service_proxy_pass_host_header else {} }}" diff --git a/roles/service/vars/main/additional.yaml b/roles/service/vars/main/additional.yaml new file mode 100644 index 0000000..bf4e54f --- /dev/null +++ b/roles/service/vars/main/additional.yaml @@ -0,0 +1,54 @@ +--- +_service_additional_containers: >- + {{ + service_additional_containers + | zip( + service_additional_containers + | map(attribute='name') + | map('regex_replace', '^', service_name ~ '-') + | map('community.general.dict_kv', 'name') + ) + | map('combine') + }} + + +_service_additional_volume_mounts: "{{ _service_additional_container.mounts | selectattr('type', '==', 'volume') }}" +_service_additional_template_mounts: "{{ _service_additional_container.mounts | selectattr('type', '==', 'template') }}" +_service_additional_host_directory: "/srv/{{ service_name }}" + +_service_additional_container_volume_mounts: >- + {{ + _service_additional_volume_mounts | + zip( + _service_additional_volume_mounts | + map(attribute='source') | + map('regex_replace', '^', service_name ~ '-') | + map('community.general.dict_kv', 'source') + ) | + map('combine') + }} +_service_additional_container_bind_mounts: "{{ _service_additional_container.mounts | selectattr('type', '==', 'bind') }}" +_service_additional_container_template_mounts: >- + {{ + ([{'readonly': true}] * _service_additional_template_mounts | length) | + zip( + _service_additional_template_mounts, + _service_additional_template_mounts | + map(attribute='source') | + map('regex_replace', '\.j2$', '') | + map('regex_replace', '^', _service_host_directory ~ '/mounts/') | + map('community.general.dict_kv', 'source'), + ([{'type': 'bind'}] * _service_additional_template_mounts | length) + ) | + map('combine') + }} + +_service_additional_container_mounts: >- + {{ + _service_additional_container_volume_mounts + + _service_additional_container_bind_mounts + + _service_additional_container_template_mounts + if _service_additional_container.mounts is defined + else + _service_container_mounts + }} diff --git a/roles/service/vars/main/general.yaml b/roles/service/vars/main/general.yaml new file mode 100644 index 0000000..2bed91b --- /dev/null +++ b/roles/service/vars/main/general.yaml @@ -0,0 +1,24 @@ +--- +_service_setup_database: "{{ service_database_type != 'none' }}" +_service_database_name: "{{ service_name }}-{{ service_database_type }}" + +_service_container_networks: "{{ [service_name] + service_container_additional_networks }}" + +_service_container_requires: >- + {{ + service_requires + + ([_service_database_name + '.service'] if _service_setup_database else []) + + ([service_name + '-redis.service'] if service_redis else []) + }} +_service_container_wants: >- + {{ + service_wants + + ([service_name + '-socat.socket'] if service_domains | length > 0 else []) + + _service_additional_containers + | map(attribute='name') + | map('regex_replace', '$', '.service') + }} + +_service_replacement_host_header: + Host: "{{ service_name }}:{{ service_container_http_port }}" +_service_proxy_headers: "{{ _service_replacement_host_header if not service_proxy_pass_host_header else {} }}" diff --git a/roles/service/vars/main/mounts.yaml b/roles/service/vars/main/mounts.yaml new file mode 100644 index 0000000..3120917 --- /dev/null +++ b/roles/service/vars/main/mounts.yaml @@ -0,0 +1,38 @@ +--- +_service_volume_mounts: "{{ service_container_mounts | selectattr('type', '==', 'volume') }}" +_service_template_mounts: "{{ service_container_mounts | selectattr('type', '==', 'template') }}" +_service_host_directory: "/srv/{{ service_name }}" + +_service_container_volume_mounts: >- + {{ + _service_volume_mounts | + zip( + _service_volume_mounts | + map(attribute='source') | + map('regex_replace', '^', service_name ~ '-') | + map('community.general.dict_kv', 'source') + ) | + map('combine') + }} +_service_container_bind_mounts: "{{ service_container_mounts | selectattr('type', '==', 'bind') }}" +_service_container_template_mounts: >- + {{ + ([{'readonly': true}] * _service_template_mounts | length) | + zip( + _service_template_mounts, + _service_template_mounts | + map(attribute='source') | + map('regex_replace', '\.j2$', '') | + map('regex_replace', '^', _service_host_directory ~ '/mounts/') | + map('community.general.dict_kv', 'source'), + ([{'type': 'bind'}] * _service_template_mounts | length) + ) | + map('combine') + }} + +_service_container_mounts: >- + {{ + _service_container_volume_mounts + + _service_container_bind_mounts + + _service_container_template_mounts + }} diff --git a/roles/service/vars/main/secrets.yaml b/roles/service/vars/main/secrets.yaml new file mode 100644 index 0000000..d27337b --- /dev/null +++ b/roles/service/vars/main/secrets.yaml @@ -0,0 +1,22 @@ +--- +_service_container_secrets: >- + {{ + service_container_secrets + | map(attribute='name') + | map('community.general.dict_kv', 'target') + | zip( + service_container_secrets, + service_container_secrets + | map(attribute='name') + | map('regex_replace', '^', service_name ~ '-') + | map('community.general.dict_kv', 'name') + ) + | map('combine') + + ( + [{ + 'name': _service_database_name, + 'type': service_database_secret_type, + 'target': service_database_secret_target + }] if _service_setup_database else [] + ) + }}