service: Support publishing arbitary ports through sockets
This commit is contained in:
@@ -18,6 +18,35 @@ _service_additional_container_ip: >-
|
||||
if _service_static_ip else ''
|
||||
}}
|
||||
|
||||
_service_additional_container_publish_ports_with_defaults: >-
|
||||
{{
|
||||
([{ 'type': 'port', 'host_address': '0.0.0.0' }] * _service_additional_container.publish_ports | length)
|
||||
| zip(_service_additional_container.publish_ports)
|
||||
| map('combine')
|
||||
}}
|
||||
_service_additional_container_publish_socket_ports: >-
|
||||
{{
|
||||
_service_additional_container_publish_ports_with_defaults | selectattr('type', '==', 'socket')
|
||||
if _service_additional_container.publish_ports is defined
|
||||
else
|
||||
[]
|
||||
}}
|
||||
_service_additional_container_publish_port_ports: >-
|
||||
{{
|
||||
_service_additional_container_publish_ports_with_defaults | selectattr('type', '==', 'port')
|
||||
if _service_additional_container.publish_ports is defined
|
||||
else
|
||||
[]
|
||||
}}
|
||||
|
||||
_service_additional_container_publish_ports: >-
|
||||
{{
|
||||
_service_additional_container_publish_port_ports | map(attribute='host_address') |
|
||||
zip(
|
||||
_service_additional_container_publish_port_ports | map(attribute='host_port'),
|
||||
_service_additional_container_publish_port_ports | map(attribute='container_port')
|
||||
) | map('join', ':')
|
||||
}}
|
||||
|
||||
_service_additional_volume_mounts: "{{ _service_additional_container.mounts | selectattr('type', '==', 'volume') }}"
|
||||
_service_additional_template_mounts: "{{ _service_additional_container.mounts | selectattr('type', '==', 'template') }}"
|
||||
|
||||
@@ -14,6 +14,10 @@ _service_container_wants: >-
|
||||
service_wants
|
||||
+ ([service_name + '-socat.socket'] if service_container_http_port > 0 else [])
|
||||
+ ([service_name + '-oauth2-proxy-socat.socket'] if _service_oauth2_proxy else [])
|
||||
+ _service_container_publish_socket_ports
|
||||
| map(attribute='name')
|
||||
| map('regex_replace', '^', service_name ~ '-')
|
||||
| map('regex_replace', '$', '-socat.socket')
|
||||
+ _service_additional_containers
|
||||
| map(attribute='name')
|
||||
| map('regex_replace', '$', '.service')
|
||||
|
||||
21
roles/service/vars/main/publish_ports.yaml
Normal file
21
roles/service/vars/main/publish_ports.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
_service_container_publish_ports_with_defaults: >-
|
||||
{{
|
||||
([{ 'type': 'port', 'host_address': '0.0.0.0' }] * service_container_publish_ports | length)
|
||||
| zip(service_container_publish_ports)
|
||||
| map('combine')
|
||||
}}
|
||||
|
||||
_service_container_publish_socket_ports: >-
|
||||
{{ _service_container_publish_ports_with_defaults | selectattr('type', '==', 'socket') }}
|
||||
_service_container_publish_port_ports: >-
|
||||
{{ _service_container_publish_ports_with_defaults | selectattr('type', '==', 'port') }}
|
||||
|
||||
_service_container_publish_ports: >-
|
||||
{{
|
||||
_service_container_publish_port_ports | map(attribute='host_address') |
|
||||
zip(
|
||||
_service_container_publish_port_ports | map(attribute='host_port'),
|
||||
_service_container_publish_port_ports | map(attribute='container_port')
|
||||
) | map('join', ':')
|
||||
}}
|
||||
Reference in New Issue
Block a user