tasks.py: various

- drop build-local, reboot

- mkdocs -> docs

- remove systemctl from cleanup-gcroots
This commit is contained in:
zowoq 2024-10-16 21:56:58 +10:00
parent bcef8e52a8
commit 054c2f899d
2 changed files with 1 additions and 75 deletions

View file

@ -13,12 +13,6 @@ Host *.nix-community.org
$ ./inv deploy $ ./inv deploy
``` ```
If you want to reboot a machine, use the following command:
```console
$ inv deploy --hosts build02 reboot --hosts build02
```
## Install/Fix system from Hetzner recovery mode ## Install/Fix system from Hetzner recovery mode
1. Copy your ssh key to the recovery system so that the kexec image can re-use it. 1. Copy your ssh key to the recovery system so that the kexec image can re-use it.

View file

@ -3,7 +3,6 @@
import json import json
import os import os
import subprocess import subprocess
import sys
from pathlib import Path from pathlib import Path
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from typing import Any, List, Union from typing import Any, List, Union
@ -94,7 +93,7 @@ def print_keys(c: Any, flake_attr: str) -> None:
@task @task
def mkdocs(c: Any) -> None: def docs(c: Any) -> None:
""" """
Serve docs (mkdoc serve) Serve docs (mkdoc serve)
""" """
@ -178,74 +177,7 @@ def install(c: Any, flake_attr: str, hostname: str) -> None:
) )
@task
def build_local(c: Any, hosts: str = "") -> None:
"""
Build all servers. Use inv build-local --hosts build01 to build a single server
"""
g = DeployGroup(get_hosts(hosts))
def build_local(h: DeployHost) -> None:
hostname = h.host.replace(".nix-community.org", "")
h.run_local(
[
"nixos-rebuild",
"build",
"--option",
"accept-flake-config",
"true",
"--flake",
f".#{hostname}",
]
)
g.run_function(build_local)
def wait_for_port(host: str, port: int, shutdown: bool = False) -> None:
import socket
import time
while True:
try:
with socket.create_connection((host, port), timeout=1):
if shutdown:
time.sleep(1)
sys.stdout.write(".")
sys.stdout.flush()
else:
break
except OSError:
if shutdown:
break
else:
time.sleep(0.01)
sys.stdout.write(".")
sys.stdout.flush()
@task
def reboot(c: Any, hosts: str = "") -> None:
"""
Reboot hosts. example usage: inv reboot --hosts build01,build02
"""
for h in get_hosts(hosts):
h.run("sudo reboot &")
print(f"Wait for {h.host} to shutdown", end="")
sys.stdout.flush()
port = h.port or 22
wait_for_port(h.host, port, shutdown=True)
print("")
print(f"Wait for {h.host} to start", end="")
sys.stdout.flush()
wait_for_port(h.host, port)
print("")
@task @task
def cleanup_gcroots(c: Any, hosts: str = "") -> None: def cleanup_gcroots(c: Any, hosts: str = "") -> None:
g = DeployGroup(get_hosts(hosts)) g = DeployGroup(get_hosts(hosts))
g.run("sudo find /nix/var/nix/gcroots/auto -type s -delete") g.run("sudo find /nix/var/nix/gcroots/auto -type s -delete")
g.run("sudo systemctl restart nix-gc")