From 4673b5c4858df8c84d190cd381510e0c589fc234 Mon Sep 17 00:00:00 2001 From: zowoq <59103226+zowoq@users.noreply.github.com> Date: Tue, 7 Feb 2023 11:14:56 +1000 Subject: [PATCH] tasks.py: remove format_disks, nixos_install, setup_secret --- tasks.py | 104 +------------------------------------------------------ 1 file changed, 1 insertion(+), 103 deletions(-) diff --git a/tasks.py b/tasks.py index 8f1b4f4..9b268ee 100644 --- a/tasks.py +++ b/tasks.py @@ -5,7 +5,7 @@ import os import subprocess import sys from pathlib import Path -from typing import Any, List +from typing import List from deploykit import DeployGroup, DeployHost from invoke import task @@ -38,66 +38,6 @@ def deploy_nixos(hosts: List[DeployHost]) -> None: g.run_function(deploy) -def sfdisk_json(host: DeployHost, dev: str) -> List[Any]: - out = host.run(f"sfdisk --json {dev}", stdout=subprocess.PIPE) - data = json.loads(out.stdout) - return data["partitiontable"]["partitions"] - - -def _format_disks(host: DeployHost, devices: List[str]) -> None: - assert ( - len(devices) == 1 or len(devices) == 2 - ), "we only support single devices or mirror raids at the moment" - # format disk with as follow: - # - partition 1 will be the boot partition, needed for legacy (BIOS) boot - # - partition 2 is for boot partition - # - partition 3 takes up the rest of the space and is for the system - for device in devices: - host.run( - f"sgdisk -Z -n 1:2048:4095 -n 2:4096:+2G -N 3 -t 1:ef02 -t 2:8304 -t 3:8304 {device}" - ) - - # create mdadm raid for /boot with ext4 - if len(devices) == 2: - boot_parts = [] - root_parts = [] - for dev in devices: - # use partuuids as they are more stable than device names - partitions = sfdisk_json(host, dev) - boot_parts.append(partitions[1]["node"]) - root_parts.append(f"/dev/disk/by-partuuid/{partitions[2]['uuid'].lower()}") - - host.run( - f"mdadm --create --verbose /dev/md127 --raid-devices=2 --level=1 {' '.join(boot_parts)}" - ) - host.run( - f"zpool create zroot -O acltype=posixacl -O xattr=sa -O compression=lz4 mirror {' '.join(root_parts)}" - ) - boot = "/dev/md127" - else: - partitions = sfdisk_json(host, devices[0]) - boot = partitions[1]["node"] - uuid = partitions[2]["uuid"].lower() - root_part = f"/dev/disk/by-partuuid/{uuid}" - host.run( - f"zpool create zroot -O acltype=posixacl -O xattr=sa -O compression=lz4 -O atime=off {root_part}" - ) - - host.run("partprobe") - host.run(f"mkfs.ext4 -F {boot}") - - # setup zfs dataset - host.run("zfs create -o mountpoint=none zroot/root") - host.run("zfs create -o mountpoint=legacy zroot/root/nixos") - host.run("zfs create -o mountpoint=legacy zroot/root/home") - - ## and finally mount - host.run("mount -t zfs zroot/root/nixos /mnt") - host.run("mkdir /mnt/home /mnt/boot") - host.run("mount -t zfs zroot/root/home /mnt/home") - host.run("mount -t ext4 /dev/md127 /mnt/boot") - - @task def update_hound_repos(c): """ @@ -218,48 +158,6 @@ git commit --amend -m "${commit}" -m "Terraform updates:" -m "${diff}" ) -@task -def format_disks(c, hosts="", disks=""): - """ - Format disks with zfs, i.e.: inv format-disks --hosts build02 --disks /dev/nvme0n1,/dev/nvme1n1 - """ - for h in get_hosts(hosts): - _format_disks(h, disks.split(",")) - - -@task -def setup_secret(c, hosts=""): - """ - Setup SSH key and print age key for sops-nix - """ - for h in get_hosts(hosts): - h.run( - "install -m600 -D /etc/ssh/ssh_host_rsa_key /mnt/etc/ssh/ssh_host_rsa_key" - ) - h.run( - "install -m600 -D /etc/ssh/ssh_host_ed25519_key /mnt/etc/ssh/ssh_host_ed25519_key" - ) - print(h.host) - h.run( - "nix-shell -p ssh-to-age --run 'cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age'" - ) - - -@task -def nixos_install(c, hosts=""): - """ - Run NixOS install - """ - for h in get_hosts(hosts): - h.run( - "nix-shell -p git --run 'git clone https://github.com/nix-community/infra && cd infra && nix-shell'" - ) - hostname = h.host.replace(".nix-community.org", "") - h.run( - f"cd /root/infra && nixos-install --system $(nix-build -A {hostname}-system)" - ) - - def get_hosts(hosts: str) -> List[DeployHost]: if hosts == "": return [