xoxys.droneci_autoscaler/templates/services/droneci_autoscaler_compose.yml.j2
Robert Kaussow faebc9aa12
All checks were successful
continuous-integration/drone/push Build is passing
add options to enable dockerhub auth
2020-12-06 13:35:42 +01:00

102 lines
5.4 KiB
Django/Jinja

#jinja2:lstrip_blocks: True
{{ ansible_managed | comment }}
version: "2.4"
services:
droneci_autoscaler_{{ inst.name }}:
container_name: {{ inst.name }}
image: {{ droneci_autoscaler_image }}
restart: {{ droneci_autoscaler_restart_policy }}
{% if droneci_autoscaler_exposed_ports | default([]) %}
ports:
{% for port in droneci_autoscaler_exposed_ports %}
- {{ port | quote }}
{% endfor %}
{% endif %}
volumes:
- "{{ __droneci_autoscaler_workdir }}/userdata.yml:/etc/scaler/userdata.yml:Z"
- "{{ __droneci_autoscaler_workdir }}/ssh_key:/root/.ssh/id_rsa:ro,Z"
{% for volume in droneci_autoscaler_volumes %}
- "{{ volume.name }}:{{ volume.dest }}"
{% endfor %}
{% if droneci_autoscaler_networks_applied | default([]) %}
networks:
{% for network in droneci_autoscaler_networks_applied %}
- {{ network }}
{% endfor %}
{% endif %}
environment:
- DRONE_INTERVAL={{ inst.interval | default(droneci_autoscaler_interval) }}
{% if (inst.slack_webhook | default(droneci_autoscaler_slack_webhook)) is defined %}
- DRONE_SLACK_WEBHOOK={{ inst.slack_webhook | default(droneci_autoscaler_slack_webhook) }}
- DRONE_SLACK_CREATE={{ (inst.slack_create | default(droneci_autoscaler_slack_create)) | bool | lower }}
- DRONE_SLACK_DESTROY={{ (inst.slack_destroy | default(droneci_autoscaler_slack_destroy)) | bool | lower }}
- DRONE_SLACK_ERROR={{ (inst.slack_error | default(droneci_autoscaler_slack_error)) | bool | lower }}
{% endif %}
- DRONE_LOGS_COLOR={{ (inst.logs_color | default(droneci_autoscaler_logs_color)) | bool | lower }}
- DRONE_LOGS_PRETTY={{ (inst.logs_pretty | default(droneci_autoscaler_logs_pretty)) | bool | lower }}
- DRONE_LOGS_DEBUG={{ (inst.logs_debug | default(droneci_autoscaler_logs_debug)) | bool | lower }}
- DRONE_POOL_MIN={{ inst.pool_min | default(droneci_autoscaler_pool_min) }}
- DRONE_POOL_MAX={{ inst.pool_max | default(droneci_autoscaler_pool_max) }}
- DRONE_POOL_MIN_AGE={{ inst.pool_ttl | default(droneci_autoscaler_pool_ttl) }}
- DRONE_SERVER_HOST={{ droneci_autoscaler_server_host }}
- DRONE_SERVER_PROTO={{ droneci_autoscaler_server_proto }}
- DRONE_SERVER_TOKEN={{ droneci_autoscaler_server_token }}
- DRONE_AGENT_TOKEN={{ inst.agent_token | default(droneci_autoscaler_agent_token) }}
- DRONE_AGENT_IMAGE={{ inst.agent_image | default(droneci_autoscaler_agent_image) }}
- DRONE_AGENT_CONCURRENCY={{ inst.agent_concurrency | default(droneci_autoscaler_agent_concurrency) }}
- DRONE_AGENT_OS={{ inst.agent_os | default(droneci_autoscaler_agent_os) }}
- DRONE_AGENT_ARCH={{ inst.agent_architecture | default(droneci_autoscaler_agent_architecture) }}
{% if inst.agent_volumes | default(droneci_autoscaler_agent_volumes) | default(False) %}
- DRONE_AGENT_VOLUMES={{ inst.agent_volumes | default(droneci_autoscaler_agent_volumes) | join(",") }}
{% endif %}
{% if inst.agent_environ | default(droneci_autoscaler_agent_environ) | default(False) %}
- DRONE_AGENT_ENVIRON={{ inst.agent_environ | default(droneci_autoscaler_agent_environ) | join(",") }}
{% endif %}
{% if inst.api_host is defined %}
- DRONE_HTTP_HOST={{ inst.api_host }}
{% endif %}
- DRONE_RUNNER_VOLUMES={{ (__droneci_autoscaler_runner_volumes + (inst.runner_volumes | default(droneci_autoscaler_runner_volumes))) | join(",") }}
- DRONE_RUNNER_PRIVILEGED_IMAGES={{ inst.runner_privileged | default(droneci_autoscaler_runner_privileged) | join(",") }}
- DRONE_RUNNER_ENV_FILE={{ inst.runner_env_file | default(droneci_autoscaler_runner_env_file) }}
- DRONE_GC_ENABLED={{ (inst.gc_enabled | default(droneci_autoscaler_gc_enabled)) | bool | lower }}
- DRONE_GC_DEBUG=false
- DRONE_REAPER_ENABLED=true
- DRONE_REAPER_INTERVAL=30m
- DRONE_WATCHTOWER_ENABLED={{ (inst.watchtower_enabled | default(droneci_autoscaler_watchtower_enabled)) | bool | lower }}
{% if (inst.prometheus_token | default(droneci_autoscaler_prometheus_token)) is defined %}
- DRONE_PROMETHEUS_AUTH_TOKEN={{ inst.prometheus_token | default(droneci_autoscaler_prometheus_token) }}
{% endif %}
{% if droneci_autoscaler_db_type == "pgsql" %}
- DRONE_DATABASE_DRIVER=postgres
- DRONE_DATABASE_DATASOURCE=postgres://{{ droneci_autoscaler_db_user }}:{{ droneci_autoscaler_db_password }}@{{ droneci_autoscaler_db_server }}/{{ droneci_autoscaler_db_name }}?sslmode={{ droneci_autoscaler_db_ssl_mode }}
{% endif %}
{% for item in inst.provider_config %}
- {{ item.name | upper }}={{ item.value }}
{% endfor %}
{% if droneci_autoscaler_memory_limit is defined %}
mem_limit: {{ droneci_autoscaler_memory_limit }}
{% endif %}
{% if droneci_autoscaler_memory_reservation is defined %}
mem_reservation: {{ droneci_autoscaler_memory_reservation }}
{% endif %}
{% if droneci_autoscaler_volumes | default([]) | rejectattr("bind") | list | length > 0 %}
volumes:
{% for volume in droneci_autoscaler_volumes | rejectattr("bind") %}
{{ volume.name }}:
{% endfor %}
{% endif %}
{% if droneci_autoscaler_networks | default([]) | length > 0 %}
networks:
{% for network in droneci_autoscaler_networks %}
{{ network.name }}:
{% if network.external | default(False) | bool %}
external: true
{% else %}
driver: {{ network.backend | default("bridge") }}
{% endif %}
{% endfor %}
{% endif %}