Files
fizzy/saas/config/deploy.beta.yml
T
Rosa Gutierrez 025d70dd13 Use separate cache namespaces for each beta instance
Otherwise we end up with views including URLs from all the betas,
leading to some confusion and problems with the CSP.
2026-01-12 20:28:18 +01:00

127 lines
3.5 KiB
YAML

<%
raise "The BETA_NUMBER environment variable must be given" unless ENV["BETA_NUMBER"]
@data = {
"1" => {
"hosts" => {
"web" => ["fizzy-beta-app-101.df-iad-int.37signals.com"],
"jobs" => ["fizzy-beta-jobs-101.df-iad-int.37signals.com"],
"lb" => "fizzy-beta-lb-101.df-iad-int.37signals.com"
},
"dbs" => {
"solidqueue" => "fizzy-beta-solidqueue-db-101.df-iad-int.37signals.com"
}
},
"2" => {
"hosts" => {
"web" => ["fizzy-beta-app-102.df-iad-int.37signals.com"],
"jobs" => ["fizzy-beta-jobs-102.df-iad-int.37signals.com"],
"lb" => "fizzy-beta-lb-102.df-iad-int.37signals.com"
},
"dbs" => {
"solidqueue" => "fizzy-beta-solidqueue-db-102.df-iad-int.37signals.com"
}
},
"3" => {
"hosts" => {
"web" => ["fizzy-beta-app-103.df-iad-int.37signals.com"],
"jobs" => ["fizzy-beta-jobs-103.df-iad-int.37signals.com"],
"lb" => "fizzy-beta-lb-103.df-iad-int.37signals.com"
},
"dbs" => {
"solidqueue" => "fizzy-beta-solidqueue-db-103.df-iad-int.37signals.com"
}
},
"4" => {
"hosts" => {
"web" => ["fizzy-beta-app-104.df-iad-int.37signals.com"],
"jobs" => ["fizzy-beta-jobs-104.df-iad-int.37signals.com"],
"lb" => "fizzy-beta-lb-104.df-iad-int.37signals.com"
},
"dbs" => {
"solidqueue" => "fizzy-beta-solidqueue-db-104.df-iad-int.37signals.com"
}
}
}
@beta_number = ENV["BETA_NUMBER"]
raise "Beta #{@beta_number} doesn't appear to be defined" unless @data[@beta_number]
@web_hosts = @data[@beta_number]["hosts"]["web"]
@job_hosts = @data[@beta_number]["hosts"]["jobs"]
@lb_host = @data[@beta_number]["hosts"]["lb"]
@solidqueue_db = @data[@beta_number]["dbs"]["solidqueue"]
%>
retain_containers: 1
servers:
web:
hosts:
- <%= @web_hosts[0] %>: df_iad
labels:
otel_scrape_enabled: true
jobs:
hosts:
- <%= @job_hosts[0] %>: df_iad
labels:
otel_scrape_enabled: true
proxy:
ssl: false
ssh:
user: app
env:
clear:
APP_FQDN: beta<%= @beta_number %>.fizzy-beta.com
CACHE_NAMESPACE: <%= @beta_number %>
RAILS_ENV: beta
RAILS_LOG_LEVEL: fatal # suppress unstructured log lines
MYSQL_DATABASE_HOST: fizzy-mysql-primary
MYSQL_DATABASE_REPLICA_HOST: fizzy-mysql-replica
MYSQL_SOLID_CABLE_HOST: fizzy-mysql-primary
MYSQL_SOLID_QUEUE_HOST: <%= @solidqueue_db %>
MYSQL_SOLID_CACHE_HOST: fizzy-beta-solidcache-db-101.df-iad-int.37signals.com
secret:
- RAILS_MASTER_KEY
- MYSQL_ALTER_PASSWORD
- MYSQL_ALTER_USER
- MYSQL_APP_PASSWORD
- MYSQL_APP_USER
- MYSQL_READONLY_PASSWORD
- MYSQL_READONLY_USER
- SECRET_KEY_BASE
- VAPID_PUBLIC_KEY
- VAPID_PRIVATE_KEY
- ACTIVE_STORAGE_ACCESS_KEY_ID
- ACTIVE_STORAGE_SECRET_ACCESS_KEY
- QUEENBEE_API_TOKEN
- SIGNAL_ID_SECRET
- SENTRY_DSN
- ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY
- ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY
- ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT
- STRIPE_MONTHLY_V1_PRICE_ID
- STRIPE_MONTHLY_EXTRA_STORAGE_V1_PRICE_ID
- STRIPE_SECRET_KEY
- STRIPE_WEBHOOK_SECRET
tags:
df_iad:
PRIMARY_DATACENTER: true
accessories:
load-balancer:
image: basecamp/kamal-proxy:lb
host: <%= @lb_host %>
labels:
otel_role: load-balancer
otel_service: fizzy-load-balancer
otel_scrape_enabled: true
options:
publish:
- 80:80
- 443:443
volumes:
- load-balancer:/home/kamal-proxy/.config/kamal-proxy