cli: use env through ansible for ioc commands
Deploy / deploy (push) Canceled after 0s

This commit is contained in:
Benjamin Labrecque
2026-07-20 15:13:18 +02:00
parent 1d9946c22e
commit c4d6f2afb4
6 changed files with 108 additions and 20 deletions
+7 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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]
)