8000 Feature domains management by daniele-20tab · Pull Request #199 · 20tab/talos · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
8000

Feature domains management #199

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
May 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,9 +281,9 @@ If you don't want DigitalOcean DNS configuration the following args are required
If you want DigitalOcean DNS configuration the following args are required

`--project-domain=project-domain.com`<br/>
`--domain-prefix-dev=dev`<br/>
`--domain-prefix-stage=test`<br/>
`--domain-prefix-prod=www`
`--subdomain-dev=dev`<br/>
`--subdomain-stage=test`<br/>
`--subdomain-prod=www`

#### Kubernetes cluster DigitalOcean region

Expand All @@ -303,7 +303,7 @@ For enabling monitoring the following arguments are needed:

if project domain is managed use

`--domain-prefix-monitoring=logs`
`--subdomain-monitoring=logs`

else use

Expand Down
193 changes: 69 additions & 124 deletions bootstrap/collector.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,16 @@ def collect(
kubernetes_token,
environment_distribution,
project_domain,
domain_prefix_dev,
domain_prefix_stage,
domain_prefix_prod,
domain_prefix_monitoring,
subdomain_dev,
subdomain_stage,
subdomain_prod,
subdomain_monitoring,
project_url_dev,
project_url_stage,
project_url_prod,
project_url_monitoring,
letsencrypt_certificate_email,
digitalocean_domain_create,
digitalocean_dns_records_create,
digitalocean_k8s_cluster_region,
digitalocean_database_cluster_region,
digitalocean_database_cluster_node_size,
Expand Down Expand Up @@ -162,42 +162,40 @@ def collect(
)
(
project_domain,
domain_prefix_dev,
domain_prefix_stage,
domain_prefix_prod,
domain_prefix_monitoring,
subdomain_dev,
subdomain_stage,
subdomain_prod,
subdomain_monitoring,
project_url_dev,
project_url_stage,
project_url_prod,
project_url_monitoring,
letsencrypt_certificate_email,
) = clean_project_urls(
deployment_type,
) = clean_domains(
project_slug,
project_domain,
use_monitoring,
domain_prefix_dev,
domain_prefix_stage,
domain_prefix_prod,
domain_prefix_monitoring,
subdomain_dev,
subdomain_stage,
subdomain_prod,
subdomain_monitoring,
project_url_dev,
project_url_stage,
project_url_prod,
project_url_monitoring,
letsencrypt_certificate_email,
)
use_redis = click.confirm(warning("Do you want to use Redis?"), default=False)
if digitalocean_enabled:
(
digitalocean_domain_create,
digitalocean_dns_records_create,
digitalocean_k8s_cluster_region,
digitalocean_database_cluster_region,
digitalocean_database_cluster_node_size,
digitalocean_redis_cluster_region,
digitalocean_redis_cluster_node_size,
) = clean_digitalocean_options(
project_domain,
digitalocean_domain_create,
digitalocean_dns_records_create,
digitalocean_k8s_cluster_region,
digitalocean_database_cluster_region,
digitalocean_database_cluster_node_size,
Expand Down Expand Up @@ -303,16 +301,16 @@ def collect(
"kubernetes_token": kubernetes_token,
"environment_distribution": environment_distribution,
"project_domain": project_domain,
"domain_prefix_dev": domain_prefix_dev,
"domain_prefix_stage": domain_prefix_stage,
"domain_prefix_prod": domain_prefix_prod,
"domain_prefix_monitoring": domain_prefix_monitoring,
"subdomain_dev": subdomain_dev,
"subdomain_stage": subdomain_stage,
"subdomain_prod": subdomain_prod,
"subdomain_monitoring": subdomain_monitoring,
"project_url_dev": project_url_dev,
"project_url_stage": project_url_stage,
"project_url_prod": project_url_prod,
"project_url_monitoring": project_url_monitoring,
"letsencrypt_certificate_email": letsencrypt_certificate_email,
"digitalocean_domain_create": digitalocean_domain_create,
"digitalocean_dns_records_create": digitalocean_dns_records_create,
"digitalocean_k8s_cluster_region": digitalocean_k8s_cluster_region,
"digitalocean_database_cluster_region": digitalocean_database_cluster_region,
"digitalocean_database_cluster_node_size": (
Expand Down Expand Up @@ -584,112 +582,53 @@ def clean_kubernetes_credentials(
return kubernetes_cluster_ca_certificate, kubernetes_host, kubernetes_token


def clean_project_domain(project_domain):
"""Return the project domain."""
return (
project_domain
or (
project_domain is None
and click.confirm(
warning(
"Do you want to configure DNS records? "
"(BEWARE: NS must be set accordingly)"
)
)
and validate_or_prompt_domain("Project domain", project_domain)
)
or None
)


def clean_project_urls(
deployment_type,
def clean_domains(
project_slug,
project_domain,
use_monitoring,
domain_prefix_dev,
domain_prefix_stage,
domain_prefix_prod,
domain_prefix_monitoring,
subdomain_dev,
subdomain_stage,
subdomain_prod,
subdomain_monitoring,
project_url_dev,
project_url_stage,
project_url_prod,
project_url_monitoring,
letsencrypt_certificate_email,
):
"""Return project URLs."""
if deployment_type == DEPLOYMENT_TYPE_DIGITALOCEAN and (
project_domain := clean_project_domain(project_domain)
):
domain_prefix_dev = domain_prefix_dev or click.prompt(
"Development domain prefix", default="dev"
)
project_url_dev = f"https://{domain_prefix_dev}.{project_domain}"
domain_prefix_stage = domain_prefix_stage or click.prompt(
"Staging domain prefix", default="stage"
)
project_url_stage = f"https://{domain_prefix_stage}.{project_domain}"
domain_prefix_prod = domain_prefix_prod or click.prompt(
"Production domain prefix", default="www"
project_domain = validate_or_prompt_domain(
"Project domain", project_domain, default=f"{project_slug}.com"
)
subdomain_dev = subdomain_dev or click.prompt(
"Development domain prefix", default="dev"
)
project_url_dev = f"https://{subdomain_dev}.{project_domain}"
subdomain_stage = subdomain_stage or click.prompt(
"Staging domain prefix", default="stage"
)
project_url_stage = f"https://{subdomain_stage}.{project_domain}"
subdomain_prod = subdomain_prod or click.prompt(
"Production domain prefix", default="www"
)
project_url_prod = f"https://{subdomain_prod}.{project_domain}"
if use_monitoring:
subdomain_monitoring = subdomain_monitoring or click.prompt(
"Monitorng domain prefix", default="logs"
)
project_url_prod = f"https://{domain_prefix_prod}.{project_domain}"
if use_monitoring:
domain_prefix_monitoring = domain_prefix_monitoring or click.prompt(
"Monitorng domain prefix", default="logs"
)
project_url_monitoring = (
f"https://{domain_prefix_monitoring}.{project_domain}"
)
else:
domain_prefix_monitoring = None
project_url_monitoring = None
letsencrypt_certificate_email = None
else:
project_domain = None
domain_prefix_dev = None
domain_prefix_stage = None
domain_prefix_prod = None
domain_prefix_monitoring = None
project_url_dev = validate_or_prompt_url(
"Development environment complete URL",
project_url_dev or None,
default=f"https://dev.{project_slug}.com",
required=False,
)
project_url_stage = validate_or_prompt_url(
"Staging environment complete URL",
project_url_stage or None,
default=f"https://stage.{project_slug}.com",
required=False,
)
project_url_prod = validate_or_prompt_url(
"Production environment complete URL",
project_url_prod or None,
default=f"https://www.{project_slug}.com",
required=False,
)
if use_monitoring:
project_url_monitoring = validate_or_prompt_url(
"Monitoring complete URL",
project_url_monitoring or None,
default=f"https://logs.{project_slug}.com",
required=False,
)
else:
project_url_monitoring = None
letsencrypt_certificate_email = clean_letsencrypt_certificate_email(
letsencrypt_certificate_email
)
subdomain_monitoring = None
letsencrypt_certificate_email = clean_letsencrypt_certificate_email(
letsencrypt_certificate_email
)
return (
project_domain,
domain_prefix_dev,
domain_prefix_stage,
domain_prefix_prod,
domain_prefix_monitoring,
subdomain_dev,
subdomain_stage,
subdomain_prod,
subdomain_monitoring,
project_url_dev,
project_url_stage,
project_url_prod,
project_url_monitoring,
letsencrypt_certificate_email,
)

Expand Down Expand Up @@ -784,8 +723,8 @@ def clean_frontend_sentry_dsn(frontend_type, frontend_sentry_dsn):


def clean_digitalocean_options(
project_domain,
digitalocean_domain_create,
digitalocean_dns_records_create,
digitalocean_k8s_cluster_region,
digitalocean_database_cluster_region,
digitalocean_database_cluster_node_size,
Expand All @@ -795,17 +734,22 @@ def clean_digitalocean_options(
):
"""Return DigitalOcean configuration options."""
# TODO: ask these settings for each stack
if project_domain:
digitalocean_domain_create = (
digitalocean_domain_create
if digitalocean_domain_create is not None
else click.confirm(
f"Do you want to create DigitalOcean domain '{project_domain}'?",
default=True,
)
digitalocean_domain_create = (
digitalocean_domain_create
if digitalocean_domain_create is not None
else click.confirm(
"Do you want to create the DigitalOcean domain?",
default=True,
)
else:
digitalocean_domain_create = None
)
digitalocean_dns_records_create = (
digitalocean_dns_records_create
if digitalocean_dns_records_create is not None
else click.confirm(
"Do you want to create DigitalOcean DNS records?",
default=True,
)
)
digitalocean_k8s_cluster_region = digitalocean_k8s_cluster_region or click.prompt(
"Kubernetes cluster DigitalOcean region", default="fra1" 6E09 ;
)
Expand Down Expand Up @@ -836,6 +780,7 @@ def clean_digitalocean_options(
)
return (
digitalocean_domain_create,
digitalocean_dns_records_create,
digitalocean_k8s_cluster_region,
digitalocean_database_cluster_region,
digitalocean_database_cluster_node_size,
Expand Down
Loading
0