Support a dynamic primary_web_role instead of assuming it's 'web'.

This allows for more meaningful naming in roles.

The only caution here is that we don't support the renaming of roles, so
any migration is left to the user.
This commit is contained in:
Matthew Kent
2023-11-10 16:35:25 -08:00
parent 97ba6b746b
commit 47f8725cf3
2 changed files with 18 additions and 4 deletions

View File

@@ -1,7 +1,7 @@
class Kamal::Commands::Healthcheck < Kamal::Commands::Base class Kamal::Commands::Healthcheck < Kamal::Commands::Base
def run def run
web = config.role(:web) web = config.role(config.primary_web_role)
docker :run, docker :run,
"--detach", "--detach",

View File

@@ -90,14 +90,21 @@ class Kamal::Configuration
end end
def primary_web_host def primary_web_host
role(:web).primary_host role(primary_web_role)&.primary_host
end
def traefik_roles
roles.select(&:running_traefik?)
end
def traefik_role_names
traefik_roles.flat_map(&:name)
end end
def traefik_hosts def traefik_hosts
roles.select(&:running_traefik?).flat_map(&:hosts).uniq traefik_roles.flat_map(&:hosts).uniq
end end
def repository def repository
[ raw_config.registry["server"], image ].compact.join("/") [ raw_config.registry["server"], image ].compact.join("/")
end end
@@ -199,6 +206,9 @@ class Kamal::Configuration
raw_config.asset_path raw_config.asset_path
end end
def primary_web_role
raw_config.primary_web_role || "web"
end
def valid? def valid?
ensure_destination_if_required && ensure_required_keys_present && ensure_valid_kamal_version ensure_destination_if_required && ensure_required_keys_present && ensure_valid_kamal_version
@@ -253,6 +263,10 @@ class Kamal::Configuration
end end
end end
unless traefik_role_names.include?(primary_web_role)
raise ArgumentError, "Role #{primary_web_role} needs to have traefik enabled"
end
true true
end end