Closes DOCS-AUDIT §6.1 and §5.1. **The script could not run.** It read `APP` off `host.data` and then used `SERVICE_NAME` and `AUTOSTART` as if they were in scope, so the very first statement — `if AUTOSTART:` — raised `NameError`; `server` was used in the else branch but never imported. Three lines: import `server` alongside `systemd`, read the two names next to `APP`. The logic underneath was always right. `python3 -m py_compile` passes. **The README documented a different cube.** It was titled "TypeStack Install Cube" and described cloning a git repository, `yarn install`, `yarn build`, `docker compose up -d` and PM2 — none of which this cube does, and it listed parameters (`USER`, `REPO`, `ENV`, `NODE_PATH`) the manifest does not have, carrying someone's private repository URL and username as defaults. Rewritten from the manifest and the now-working script: the three parameters that exist, and the thing the old text obscured by describing a deploy pipeline — this cube does not create the unit file, it enables and starts one that is already installed. `SERVICE_NAME` is documented as what it is, a label that never reaches systemd, so getting it wrong is cosmetic rather than a cube managing the wrong unit. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DCzYTAm9QUhvLNr2EpdagJ
30 lines
788 B
Python
30 lines
788 B
Python
from pyinfra.operations import server, systemd
|
|
from pyinfra import host
|
|
|
|
|
|
APP = host.data.APP
|
|
SERVICE_NAME = host.data.SERVICE_NAME
|
|
AUTOSTART = host.data.AUTOSTART
|
|
|
|
# Enable and start the service based on AUTOSTART flag
|
|
if AUTOSTART:
|
|
systemd.service(
|
|
name=f'Enable {SERVICE_NAME} service',
|
|
service=APP,
|
|
enabled=True,
|
|
_sudo=True
|
|
)
|
|
|
|
systemd.service(
|
|
name=f'Start {SERVICE_NAME} service',
|
|
service=APP,
|
|
running=True,
|
|
_sudo=True
|
|
)
|
|
else:
|
|
server.shell(
|
|
name=f'Service {SERVICE_NAME} created but not enabled (AUTOSTART=False)',
|
|
commands=[f'echo "Service {SERVICE_NAME} is ready but not started. Enable with: sudo systemctl enable {APP} && sudo systemctl start {APP}"'],
|
|
_sudo=False
|
|
)
|