Skip to content

Commit

Permalink
Watchtower: First pass at metrics support.
Browse files Browse the repository at this point in the history
Closes #318
  • Loading branch information
owine committed Jan 8, 2024
1 parent 895bf71 commit 6220432
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions roles/watchtower/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ watchtower_instances: ["watchtower"]
# Settings
################################

watchtower_metrics_enable: "false"
watchtower_metrics_external: "false"
watchtower_poll_interval: "43200"

################################
Expand All @@ -28,6 +30,42 @@ watchtower_paths_location: "{{ server_appdata_path }}/{{ watchtower_paths_folder
watchtower_paths_folders_list:
- "{{ watchtower_paths_location }}"

################################
# Web
################################

watchtower_metrics_web_subdomain: "{{ watchtower_name }}-metrics"
watchtower_metrics_web_domain: "{{ user.domain }}"
watchtower_metrics_web_port: "8080"
watchtower_metrics_host: "{{ lookup('vars', watchtower_name + '_metrics_web_subdomain', default=watchtower_metrics_web_subdomain)
+ '.' + lookup('vars', watchtower_name + '_metrics_web_domain', default=watchtower_metrics_web_domain) }}"

################################
# DNS
################################

watchtower_metrics_dns_record: "{{ lookup('vars', watchtower_name + '_metrics_web_subdomain', default=watchtower_metrics_web_subdomain) }}"
watchtower_metrics_dns_zone: "{{ lookup('vars', watchtower_name + '_metrics_web_domain', default=watchtower_metrics_web_domain) }}"
watchtower_metrics_dns_proxy: "{{ dns.proxied }}"

################################
# Traefik
################################

watchtower_metrics_traefik_sso_middleware: ""
watchtower_metrics_traefik_middleware_default: "{{ traefik_default_middleware
+ (',' + lookup('vars', watchtower_name + '_metrics_traefik_sso_middleware', default=watchtower_metrics_traefik_sso_middleware)
if (lookup('vars', watchtower_name + '_metrics_traefik_sso_middleware', default=watchtower_metrics_traefik_sso_middleware) | length > 0)
else '') }}"
watchtower_metrics_traefik_middleware_custom: ""
watchtower_metrics_traefik_middleware: "{{ watchtower_metrics_traefik_middleware_default
+ (',' + watchtower_metrics_traefik_middleware_custom
if (not watchtower_metrics_traefik_middleware_custom.startswith(',') and watchtower_metrics_traefik_middleware_custom | length > 0)
else watchtower_metrics_traefik_middleware_custom) }}"
watchtower_metrics_traefik_certresolver: "{{ traefik_default_certresolver }}"
watchtower_metrics_traefik_router: "{{ lookup('vars', watchtower_name + '_metrics_web_subdomain', default=watchtower_metrics_web_subdomain) }}"


################################
# Docker
################################
Expand All @@ -47,6 +85,7 @@ watchtower_docker_envs_default:
TZ: "{{ tz }}"
WATCHTOWER_CLEANUP: "true"
WATCHTOWER_POLL_INTERVAL: "{{ watchtower_poll_interval }}"
WATCHTOWER_HTTP_API_METRICS: "{{ 'true' if watchtower_metrics_enable else omit }}"
watchtower_docker_envs_custom: {}
watchtower_docker_envs: "{{ lookup('vars', watchtower_name + '_docker_envs_default', default=watchtower_docker_envs_default)
| combine(lookup('vars', watchtower_name + '_docker_envs_custom', default=watchtower_docker_envs_custom)) }}"
Expand Down Expand Up @@ -81,9 +120,24 @@ watchtower_docker_hosts: "{{ docker_hosts_common

# Labels
watchtower_docker_labels_default: {}
watchtower_docker_labels_metrics:
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}-http.entrypoints": "web" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}-http.service": "{{ lookup("vars", watchtower_name + "_metrics_web_subdomain", default=watchtower_metrics_web_subdomain) }}" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}-http.rule": "Host(`{{ watchtower_metrics_host }}`)" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}-http.middlewares": "{{ traefik_default_middleware_http }}" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}-http.priority": "20" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}.entrypoints": "websecure" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}.service": "{{ lookup("vars", watchtower_name + "_metrics_web_subdomain", default=watchtower_metrics_web_subdomain) }}" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}.rule": "Host(`{{ watchtower_metrics_host }}`)" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}.tls.options": "securetls@file" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}.tls.certresolver": "{{ watchtower_metrics_traefik_certresolver }}" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}.middlewares": "{{ watchtower_metrics_traefik_middleware }}" }'
- '{ "traefik.http.routers.{{ watchtower_metrics_traefik_router }}.priority": "20" }'
- '{ "traefik.http.services.{{ watchtower_metrics_traefik_router }}.loadbalancer.server.port": "{{ watchtower_metrics_web_port }}" }'
watchtower_docker_labels_custom: {}
watchtower_docker_labels: "{{ docker_labels_common
| combine(lookup('vars', watchtower_name + '_docker_labels_default', default=watchtower_docker_labels_default))
| combine(lookup('vars', watchtower_name + '_docker_labels_metrics', default=watchtower_docker_labels_metrics) if (watchtower_metrics_enable and watchtower_metrics_external))
| combine(lookup('vars', watchtower_name + '_docker_labels_custom', default=watchtower_docker_labels_custom)) }}"

# Hostname
Expand Down

0 comments on commit 6220432

Please sign in to comment.