Files
computer-playbook/roles/web-app-seaweedfs/meta/services.yml

101 lines
3.9 KiB
YAML

---
# nocheck: tor-contract — object-storage backend; consumed server-side over the
# internal network (matrix S3 media etc.), never a Tor-browser surface, so it
# rides no node onion.
# nocheck: dynamic-flag — role-local browser UI, never consumed by other roles; shared stays literal.
# nocheck: variants-coverage — the onion gate is a hard invariant; no variant may force the frontend on a tor node.
# nocheck: bond-baseline — same reason: variant 0 must not pin the frontend on.
frontend:
bond: 1
enabled: "{{ 'svc-net-tor' not in group_names }}"
shared: false
domains:
- filer
- master
# nocheck: variants-coverage the onion gate is a hard invariant; no variant may force this consumer on a tor node.
# nocheck: bond-baseline same reason: variant 0 must not pin this consumer on.
sso:
bond: 1
enabled: "{{ ('web-app-keycloak' in group_names) and ('svc-net-tor' not in group_names) }}"
shared: "{{ ('web-app-keycloak' in group_names) and ('svc-net-tor' not in group_names) }}"
flavor: oauth2
oauth2:
origin:
host: proxy
port: "80"
allowed_groups:
- "{{ lookup('rbac_group_path', application_id='web-app-seaweedfs', role='administrator') }}"
# nocheck: dynamic-flag — LDAP is disabled for this role; the literal false is intentional, not group-gated.
ldap:
enabled: false
shared: false
# nocheck: variants-coverage — the onion gate is a hard invariant; no variant may force this consumer on a tor node.
# nocheck: bond-baseline — same reason: variant 0 must not pin this consumer on.
logout:
bond: 1
enabled: "{{ ('web-svc-logout' in group_names) and ('svc-net-tor' not in group_names) }}"
shared: "{{ ('web-svc-logout' in group_names) and ('svc-net-tor' not in group_names) }}"
# nocheck: variants-coverage — the onion gate is a hard invariant; no variant may force this consumer on a tor node.
# nocheck: bond-baseline — same reason: variant 0 must not pin this consumer on.
dashboard:
bond: 1
enabled: "{{ ('web-app-dashboard' in group_names) and ('svc-net-tor' not in group_names) }}"
shared: "{{ ('web-app-dashboard' in group_names) and ('svc-net-tor' not in group_names) }}"
# nocheck: variants-coverage — the onion gate is a hard invariant; no variant may force this consumer on a tor node.
# nocheck: bond-baseline — same reason: variant 0 must not pin this consumer on.
prometheus:
bond: 1
enabled: "{{ ('web-app-prometheus' in group_names) and ('svc-net-tor' not in group_names) }}"
shared: "{{ ('web-app-prometheus' in group_names) and ('svc-net-tor' not in group_names) }}"
# nocheck: playwright-service-flag — central object-store provider entity
seaweedfs:
healthcheck:
flavor: curl
path: status
modes:
compose:
enabled: true
swarm:
enabled: true
# nocheck: default-placement-manager /data IS the storage engine: leveldb2 filer LSM, master raft metadata, needle blob volumes; all NFS-unsafe, so the central provider stays node-local like the svc-db-* engines
placement: manager
# nocheck: single-replica
replicas: 1
bond: 1
enabled: true
shared: true
image: chrislusf/seaweedfs
version: "4.52"
name: seaweedfs
api_port: 8333
region: us-east-1
min_storage: 304MB
cpus: "1.0"
mem_reservation: 1g
mem_limit: 2g
pids_limit: 2048
run_after:
- web-app-keycloak
lifecycle: beta
ports:
local:
http: 8085
sso: 16507
internal:
http: 8333
# nocheck: image-healthcheck no internal port declared, so no probe can address it
proxy:
name: seaweedfs-proxy
image: nginx
version: 1.31-alpine
cpus: "0.2"
mem_reservation: 64m
mem_limit: 128m
pids_limit: 128
# nocheck: dynamic-flag — LDAP is disabled for this role; the literal false is intentional, not group-gated.
# nocheck: playwright-service-flag, dynamic-flag infrastructure backup consumer
container_backup: # nocheck: bond-baseline backup host joins outside the variant topology
bond: 1
enabled: "{{ 'svc-bkp-volume-2-local' in group_names }}"
shared: true