This commit is contained in:
@@ -4,6 +4,7 @@ import sys
|
||||
import ansible_runner
|
||||
import typer
|
||||
|
||||
from core.enums import IOC_ENV
|
||||
from core.utils import get_git_root
|
||||
|
||||
ioc = typer.Typer(no_args_is_help=True)
|
||||
@@ -11,7 +12,11 @@ ioc = typer.Typer(no_args_is_help=True)
|
||||
REPO_ROOT = get_git_root(__file__)
|
||||
|
||||
|
||||
def run_playbook(playbook: str, vars: list[str]):
|
||||
def run_playbook(playbook: str, env: IOC_ENV, vars: list[str]):
|
||||
env_str = str(env)
|
||||
if env_str not in ["dev", "prod"]:
|
||||
raise ValueError("env must be 'dev' or 'prod'")
|
||||
|
||||
current_env = os.environ.copy()
|
||||
current_env["ANSIBLE_CONFIG"] = f"{REPO_ROOT}/ansible/ansible.cfg"
|
||||
|
||||
@@ -21,7 +26,7 @@ def run_playbook(playbook: str, vars: list[str]):
|
||||
cmdline_args=[
|
||||
playbook,
|
||||
"-i",
|
||||
f"{REPO_ROOT}/ansible/hosts.yml",
|
||||
f"{REPO_ROOT}/ansible/inventories/{env_str}/hosts.yml",
|
||||
*extra_vars,
|
||||
"-v",
|
||||
],
|
||||
|
||||
+10
-1
@@ -3,4 +3,13 @@ from enum import Enum
|
||||
|
||||
class ServiceStatus(str, Enum):
|
||||
ACTIVE = "active"
|
||||
DISABLED = "disabled"
|
||||
DISABLED = "disabled"
|
||||
|
||||
|
||||
class IOC_ENV(str, Enum):
|
||||
PROD = "prod"
|
||||
DEV = "dev"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.value
|
||||
|
||||
|
||||
+15
-17
@@ -1,6 +1,7 @@
|
||||
import typer
|
||||
|
||||
from core.ansible import run_playbook
|
||||
from core.enums import IOC_ENV
|
||||
from core.models import ServiceRegistry
|
||||
from core.utils import get_git_root
|
||||
|
||||
@@ -13,29 +14,25 @@ IOC_PLAYBOOK_INSTALL = ANSIBLE_PLAYBOOKS_DIR / "ioc-install.yml"
|
||||
IOC_PLAYBOOK_RESTART = ANSIBLE_PLAYBOOKS_DIR / "ioc-restart.yml"
|
||||
IOC_PLAYBOOK_START = ANSIBLE_PLAYBOOKS_DIR / "ioc-start.yml"
|
||||
|
||||
# TODO: make sure dev/prod works correctly for all commands
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def install(
|
||||
env: str = typer.Option(..., "--env"),
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
service_name_lower: str = typer.Option(..., "--service-name", "-s"),
|
||||
branch_name: str | None = typer.Option(None, "--branch-name", "-b"),
|
||||
):
|
||||
env_var = f"agebd_env={env}"
|
||||
if branch_name is None:
|
||||
branch_name = f"feature/add-service-{service_name_lower}"
|
||||
branch_var = f"branch_name={branch_name}"
|
||||
service_name_var = f"service_name_lower={service_name_lower}"
|
||||
|
||||
run_playbook(playbook=str(IOC_PLAYBOOK_INSTALL), vars=[env_var, branch_var, service_name_var])
|
||||
run_playbook(playbook=str(IOC_PLAYBOOK_INSTALL), env=env, vars=[branch_var, service_name_var])
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def install_all(
|
||||
env: str = typer.Option(..., "--env"),
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
):
|
||||
env_var = f"agebd_env={env}"
|
||||
registry = ServiceRegistry.read_from_config()
|
||||
services = registry.get_services()
|
||||
|
||||
@@ -44,50 +41,51 @@ def install_all(
|
||||
service_name_var = f"service_name_lower={service.name_lower}"
|
||||
|
||||
run_playbook(
|
||||
playbook=str(IOC_PLAYBOOK_INSTALL), vars=[env_var, branch_var, service_name_var]
|
||||
playbook=str(IOC_PLAYBOOK_INSTALL), env=env, vars=[branch_var, service_name_var]
|
||||
)
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def start(
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
ioc_port: int = typer.Option(..., "--port", "-p"),
|
||||
):
|
||||
ioc_port_var = f"ioc_port={ioc_port}"
|
||||
|
||||
run_playbook(playbook=str(IOC_PLAYBOOK_START), vars=[ioc_port_var])
|
||||
run_playbook(playbook=str(IOC_PLAYBOOK_START), env=env, vars=[ioc_port_var])
|
||||
|
||||
|
||||
@ioc.command()
|
||||
def start_all():
|
||||
def start_all(
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
):
|
||||
registry = ServiceRegistry.read_from_config()
|
||||
services = registry.get_services()
|
||||
|
||||
for service in services:
|
||||
ioc_port_var = f"ioc_port={service.ioc_port}"
|
||||
|
||||
run_playbook(playbook=str(IOC_PLAYBOOK_START), vars=[ioc_port_var])
|
||||
run_playbook(playbook=str(IOC_PLAYBOOK_START), env=env, vars=[ioc_port_var])
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def restart(
|
||||
env: str = typer.Option(..., "--env"),
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
service_name_lower: str = typer.Option(..., "--service-name", "-s"),
|
||||
branch_name: str | None = typer.Option(None, "--branch-name", "-b"),
|
||||
):
|
||||
env_var = f"agebd_env={env}"
|
||||
if branch_name is None:
|
||||
branch_name = f"feature/add-service-{service_name_lower}"
|
||||
branch_var = f"branch_name={branch_name}"
|
||||
service_name_var = f"service_name_lower={service_name_lower}"
|
||||
|
||||
run_playbook(playbook=str(IOC_PLAYBOOK_RESTART), vars=[env_var, branch_var, service_name_var])
|
||||
run_playbook(playbook=str(IOC_PLAYBOOK_RESTART), env=env, vars=[branch_var, service_name_var])
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def restart_all(
|
||||
env: str = typer.Option(..., "--env"),
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
):
|
||||
env_var = f"agebd_env={env}"
|
||||
registry = ServiceRegistry.read_from_config()
|
||||
services = registry.get_services()
|
||||
|
||||
@@ -96,5 +94,5 @@ def restart_all(
|
||||
service_name_var = f"service_name_lower={service.name_lower}"
|
||||
|
||||
run_playbook(
|
||||
playbook=str(IOC_PLAYBOOK_RESTART), vars=[env_var, branch_var, service_name_var]
|
||||
playbook=str(IOC_PLAYBOOK_RESTART), env=env, vars=[branch_var, service_name_var]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user