#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 inst.exposed_ports | default(droneci_autoscaler_exposed_ports) | length > 0 %} ports: {% for port in inst.exposed_ports | default(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 %} {% if inst.runner_volumes | default(droneci_autoscaler_runner_volumes) | default(False) %} - DRONE_RUNNER_VOLUMES={{ inst.runner_volumes | default(droneci_autoscaler_runner_volumes) | join(",") }} {% endif %} - DRONE_RUNNER_PRIVILEGED={{ inst.runner_privileged | default(droneci_autoscaler_runner_privileged) | join(",") }} {% if inst.runner_env_file | default(droneci_autoscaler_runner_env_file) is defined %} - DRONE_RUNNER_ENVFILE={{ inst.runner_env_file | default(droneci_autoscaler_runner_env_file) }} {% endif %} - 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 %}