Migration: application directory as parameter
This commit is contained in:
@@ -10,6 +10,7 @@ from invoke.exceptions import Exit
|
||||
from invoke.tasks import task
|
||||
|
||||
HOSTS_FILE = "production.yml"
|
||||
VARS_FILE = "vars/vars.yml"
|
||||
AUTHELIA_DOCKER = "docker run --rm -v $PWD:/data authelia/authelia:4.39.4 authelia"
|
||||
|
||||
|
||||
@@ -28,6 +29,25 @@ def _remote_host() -> str:
|
||||
return _yq(".ungrouped.hosts.server.ansible_host")
|
||||
|
||||
|
||||
def _application_dir() -> str:
|
||||
"""Чтение application_dir: сначала из inventory (override), затем из vars/vars.yml."""
|
||||
inv_value = _yq('.ungrouped.hosts.server.application_dir // ""')
|
||||
if inv_value:
|
||||
return inv_value
|
||||
result = subprocess.run(
|
||||
["yq", ".application_dir", VARS_FILE],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True,
|
||||
)
|
||||
value = result.stdout.strip()
|
||||
if not value or value == "null":
|
||||
raise Exit(
|
||||
f"application_dir не определён ни в inventory, ни в {VARS_FILE}", code=1
|
||||
)
|
||||
return value
|
||||
|
||||
|
||||
def _rest_args() -> list[str]:
|
||||
"""Возвращает аргументы после '--' из sys.argv"""
|
||||
try:
|
||||
@@ -85,8 +105,9 @@ def login_as_app(ctx: Context, app: str) -> None:
|
||||
"""SSH и переключиться на пользователя приложения: inv login gitea"""
|
||||
# sudo -i: login shell, -u: от имени пользователя
|
||||
# bash -i: интерактивный режим (job control), -l: login (читает профиль)
|
||||
app_dir = f"{_application_dir()}/{app}"
|
||||
subprocess.run(
|
||||
f"""ssh {_remote_user()}@{_remote_host()} -t 'sudo -iu {app} bash -c "cd /mnt/applications/{app} && exec bash -il"'""",
|
||||
f"""ssh {_remote_user()}@{_remote_host()} -t 'sudo -iu {app} bash -c "cd {app_dir} && exec bash -il"'""",
|
||||
shell=True,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user