tasks.py: various
- drop build-local, reboot - mkdocs -> docs - remove systemctl from cleanup-gcroots
This commit is contained in:
parent
bcef8e52a8
commit
054c2f899d
2 changed files with 1 additions and 75 deletions
|
@ -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.
|
||||||
|
|
70
tasks.py
70
tasks.py
|
@ -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")
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue