Compare commits

..

No commits in common. "5185b00b84fc2fb7b26e6a4584e1ef92fa2da1e2" and "0cb34f5faa0f8cf07619a5221d7879bafdda7413" have entirely different histories.

9 changed files with 41 additions and 57 deletions

View File

@ -1,19 +1,8 @@
version: "{{ compose_version }}" version: "{{ compose_version }}"
x-defaults:
worker: &worker
image: {{ cojedzie_image_base }}/worker:{{ cojedzie_worker_version }}
env_file:
- ./api.env
- ./sentry.env
volumes:
- db_data:/var/db
depends_on:
- api
services: services:
api: api:
image: {{ cojedzie_image_base }}/api:{{ cojedzie_api_version }} image: {{ cojedzie_image_base }}/api:{{ cojedzie_version }}
networks: networks:
- "{{ ingress_network }}" - "{{ ingress_network }}"
- default - default
@ -38,14 +27,25 @@ services:
- traefik.http.routers.{{ service }}-api.tls.certresolver=lets-encrypt - traefik.http.routers.{{ service }}-api.tls.certresolver=lets-encrypt
- traefik.http.services.{{ service }}-api.loadbalancer.server.port=8080 - traefik.http.services.{{ service }}-api.loadbalancer.server.port=8080
schedule: cron:
<<: *worker image: {{ cojedzie_image_base }}/cron:{{ cojedzie_version }}
environment: env_file:
COJEDZIE_WORKER_OPTS: '-vv' - ./api.env
COJEDZIE_WORKER_QUEUES: 'scheduler_default scheduler_hub' - ./sentry.env
volumes:
- db_data:/var/db
depends_on:
- api
worker: worker:
<<: *worker image: {{ cojedzie_image_base }}/worker:{{ cojedzie_version }}
env_file:
- ./api.env
- ./sentry.env
volumes:
- db_data:/var/db
depends_on:
- api
mercure: mercure:
image: dunglas/mercure:{{ cojedzie_mercure_version|default('latest') }} image: dunglas/mercure:{{ cojedzie_mercure_version|default('latest') }}
@ -71,7 +71,7 @@ services:
- traefik.http.services.{{ service }}-mercure.loadbalancer.server.port=80 - traefik.http.services.{{ service }}-mercure.loadbalancer.server.port=80
front: front:
image: {{ cojedzie_image_base }}/front:{{ cojedzie_front_version }} image: {{ cojedzie_image_base }}/front:{{ cojedzie_version }}
networks: networks:
- "{{ ingress_network }}" - "{{ ingress_network }}"
- default - default

View File

@ -6,9 +6,10 @@
source: pull source: pull
force_source: yes force_source: yes
with_items: with_items:
- "{{ cojedzie_image_base }}/front:{{ cojedzie_front_version }}" - "{{ cojedzie_image_base }}/front:{{ cojedzie_version }}"
- "{{ cojedzie_image_base }}/api:{{ cojedzie_api_version }}" - "{{ cojedzie_image_base }}/api:{{ cojedzie_version }}"
- "{{ cojedzie_image_base }}/worker:{{ cojedzie_worker_version }}" - "{{ cojedzie_image_base }}/worker:{{ cojedzie_version }}"
- "{{ cojedzie_image_base }}/cron:{{ cojedzie_version }}"
loop_control: loop_control:
loop_var: image loop_var: image
notify: notify:

View File

@ -2,7 +2,7 @@ MERCURE_URL=http://mercure/.well-known/mercure
MERCURE_PUBLIC_URL=https://{{ cojedzie_domain }}/.well-known/mercure MERCURE_PUBLIC_URL=https://{{ cojedzie_domain }}/.well-known/mercure
MERCURE_JWT_SECRET={{ cojedzie_mercure_jwt_key }} MERCURE_JWT_SECRET={{ cojedzie_mercure_jwt_key }}
DATABASE_URL=mysql://{{ cojedzie_database.user }}:{{ cojedzie_database.password }}@{{ database_mysql_host }}/{{ cojedzie_database.name }} DATABASE_URL=mysql://{{ cojedzie_database.user }}:{{ cojedzie_database.password }}@{{ database_mysql_host }}/{{ cojedzie_database.name }}?serverVersion=mariadb-10.7.1
SENTRY_DSN={{ sentry_dsn_api }} SENTRY_DSN={{ sentry_dsn_api }}
SENTRY_SAMPLE_RATE={{ sentry_sample_rate_api }} SENTRY_SAMPLE_RATE={{ sentry_sample_rate_api }}

View File

@ -13,9 +13,6 @@ cojedzie_mercure_jwt_key: !vault |
cojedzie_maptiler: 8GX5FRUNgk4lB83GZT8Q cojedzie_maptiler: 8GX5FRUNgk4lB83GZT8Q
cojedzie_image_base: docker.io/cojedzie cojedzie_image_base: docker.io/cojedzie
cojedzie_version: latest cojedzie_version: latest
cojedzie_front_version: "{{ cojedzie_version }}"
cojedzie_api_version: "{{ cojedzie_version }}"
cojedzie_worker_version: "{{ cojedzie_version }}"
sentry_dsn_api: https://fd114053dd724e0eb16011ac0da16ba1@o4505224124891136.ingest.sentry.io/4505224126332928 sentry_dsn_api: https://fd114053dd724e0eb16011ac0da16ba1@o4505224124891136.ingest.sentry.io/4505224126332928
sentry_dsn_front: https://2815d4e0251240fcb9cd8c81c31e86fe@o4505224124891136.ingest.sentry.io/4505224128233472 sentry_dsn_front: https://2815d4e0251240fcb9cd8c81c31e86fe@o4505224124891136.ingest.sentry.io/4505224128233472
sentry_sample_rate_api: 0.05 sentry_sample_rate_api: 0.05

View File

@ -11,7 +11,7 @@ storage:
{{ registry_storage|to_nice_yaml(indent=2, width=140)|indent(2) }} {{ registry_storage|to_nice_yaml(indent=2, width=140)|indent(2) }}
redis: redis:
addrs: [redis:6379] addr: redis:6379
http: http:
addr: :5000 addr: :5000

View File

@ -9,28 +9,20 @@ services:
memory: 256M memory: 256M
registry: registry:
image: registry:3.0.0 image: registry:2
secrets: secrets:
- source: htpasswd_{{ registry_htpasswd.stat.checksum }} - source: htpasswd_{{ registry_htpasswd.stat.checksum }}
target: /etc/docker/registry/htpasswd target: /etc/docker/registry/htpasswd
configs: configs:
- source: registry_{{ registry_config.checksum }} - source: registry_{{ registry_config.checksum }}
target: /etc/distribution/config.yml target: /etc/docker/registry/config.yml
environment: environment:
- REGISTRY_STORAGE_DELETE_ENABLED=true - REGISTRY_STORAGE_DELETE_ENABLED=true
deploy: deploy:
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
labels: networks: ['default']
- traefik.enable=true
- traefik.http.routers.{{ service }}-api.rule=Host(`{{ service }}.{{ main_domain }}`) && PathPrefix(`/v2`)
- traefik.http.routers.{{ service }}-api.priority=100
- traefik.http.routers.{{ service }}-api.tls=true
- traefik.http.routers.{{ service }}-api.tls.certresolver=lets-encrypt
- traefik.http.routers.{{ service }}-api.service={{ service }}-api
- traefik.http.services.{{ service }}-api.loadbalancer.server.port=5000
networks: ['{{ ingress_network }}', 'default']
ui: ui:
image: joxit/docker-registry-ui:2.5.6 image: joxit/docker-registry-ui:2.5.6
@ -50,14 +42,14 @@ services:
networks: ['{{ ingress_network }}', 'default'] networks: ['{{ ingress_network }}', 'default']
image-cleanup-job: image-cleanup-job:
image: registry:3.0.0 image: registry:2
command: ["registry", "garbage-collect", "/etc/distribution/config.yml", "-m"] command: ["registry", "garbage-collect", "/etc/docker/registry/config.yml", "-m"]
secrets: secrets:
- source: htpasswd_{{ registry_htpasswd.stat.checksum }} - source: htpasswd_{{ registry_htpasswd.stat.checksum }}
target: /etc/docker/registry/htpasswd target: /etc/docker/registry/htpasswd
configs: configs:
- source: registry_{{ registry_config.checksum }} - source: registry_{{ registry_config.checksum }}
target: /etc/distribution/config.yml target: /etc/docker/registry/config.yml
deploy: deploy:
placement: placement:
constraints: constraints:

View File

@ -7,17 +7,16 @@
tags: tags:
- config - config
# Registry checks the bcrypt hash on every request, so a low cost keeps it fast.
# Salt is derived from the user name to keep the file stable between runs.
- name: 'Generate passwords file for "{{ service }}"' - name: 'Generate passwords file for "{{ service }}"'
ansible.builtin.copy: community.general.htpasswd:
dest: "{{ remote_service_path }}/config/htpasswd" path: "{{ remote_service_path }}/config/htpasswd"
content: | name: "{{ registry_user.name }}"
{% for registry_user in registry_users %} crypt_scheme: bcrypt
{{ registry_user.name }}:{{ registry_user.password | password_hash('bcrypt', salt=((service ~ ':' ~ registry_user.name) | hash('sha256'))[:22], rounds=registry_bcrypt_rounds) }} password: "{{ registry_user.password }}"
{% endfor %} loop: "{{ registry_users }}"
mode: "0600" loop_control:
no_log: true loop_var: registry_user
label: "{{ registry_user.name }}"
tags: tags:
- config - config

View File

@ -1,2 +0,0 @@
---
registry_bcrypt_rounds: 5

View File

@ -180,10 +180,7 @@ service_config:
62643132313336356365313465353263626565616434633963343764653330316566613633633638 62643132313336356365313465353263626565616434633963343764653330316566613633633638
623838613832393239343036396439383561 623838613832393239343036396439383561
cojedzie: cojedzie:
# releases are deployed by CI pinned by digest, see the Release workflow in cojedzie/cojedzie; cojedzie_version: "2023.1.5"
# full playbook runs fall back to the latest release
cojedzie_version: latest
cojedzie_image_base: registry.kadet.net/cojedzie
cojedzie_gtm: GTM-TQNX386 cojedzie_gtm: GTM-TQNX386
cojedzie_database: cojedzie_database: