clanCore: init machineId and diskId v2
This commit is contained in:
@@ -117,6 +117,39 @@ class ServiceBorgbackup:
|
||||
machines: dict[str, ServiceBorgbackupMachine] = field(default_factory = dict)
|
||||
|
||||
|
||||
@dataclass
|
||||
class FactlessConfig:
|
||||
diskId: None | str = field(default = None)
|
||||
machineId: None | str = field(default = None)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ServiceFactlesMachine:
|
||||
config: FactlessConfig = field(default_factory = FactlessConfig)
|
||||
imports: list[str] = field(default_factory = list)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ServiceFactlesRoleDefault:
|
||||
config: FactlessConfig = field(default_factory = FactlessConfig)
|
||||
imports: list[str] = field(default_factory = list)
|
||||
machines: list[str] = field(default_factory = list)
|
||||
tags: list[str] = field(default_factory = list)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ServiceFactlesRole:
|
||||
default: ServiceFactlesRoleDefault
|
||||
|
||||
|
||||
@dataclass
|
||||
class ServiceFactles:
|
||||
meta: ServiceMeta
|
||||
roles: ServiceFactlesRole
|
||||
config: FactlessConfig = field(default_factory = FactlessConfig)
|
||||
machines: dict[str, ServiceFactlesMachine] = field(default_factory = dict)
|
||||
|
||||
|
||||
@dataclass
|
||||
class IwdConfigNetwork:
|
||||
ssid: str
|
||||
@@ -222,6 +255,7 @@ class ServiceSingleDisk:
|
||||
class Service:
|
||||
admin: dict[str, ServiceAdmin] = field(default_factory = dict)
|
||||
borgbackup: dict[str, ServiceBorgbackup] = field(default_factory = dict)
|
||||
factless: dict[str, ServiceFactles] = field(default_factory = dict)
|
||||
iwd: dict[str, ServiceIwd] = field(default_factory = dict)
|
||||
packages: dict[str, ServicePackage] = field(default_factory = dict)
|
||||
single_disk: dict[str, ServiceSingleDisk] = field(default_factory = dict, metadata = {"alias": "single-disk"})
|
||||
|
||||
4
pkgs/clan-cli/clan_cli/inventory/update.sh
Executable file
4
pkgs/clan-cli/clan_cli/inventory/update.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
jsonSchema=$(nix build .#inventory-schema --print-out-paths)/schema.json
|
||||
nix run .#classgen "$jsonSchema" "$PKG_ROOT/clan_cli/inventory/classes.py"
|
||||
@@ -1,54 +1,62 @@
|
||||
{ self, lib, ... }:
|
||||
{
|
||||
self,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
flashInstallerModule =
|
||||
{ config, ... }:
|
||||
let
|
||||
suffix = config.clan.core.machine.diskId;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./iwd.nix
|
||||
self.nixosModules.installer
|
||||
# Allow to download pre-build binaries from our nix caches
|
||||
self.clanModules.trusted-nix-caches
|
||||
self.clanModules.factless
|
||||
];
|
||||
|
||||
clan.factless = {
|
||||
diskId = "ac51e4623c804dcbbce0144ed8e16e55";
|
||||
};
|
||||
|
||||
system.stateVersion = config.system.nixos.version;
|
||||
nixpkgs.pkgs = self.inputs.nixpkgs.legacyPackages.x86_64-linux;
|
||||
}
|
||||
// flashDiskoConfig;
|
||||
|
||||
# Important: The partition names need to be different to the clan install
|
||||
flashDiskoConfig = {
|
||||
boot.loader.grub.efiSupport = lib.mkDefault true;
|
||||
boot.loader.grub.efiInstallAsRemovable = lib.mkDefault true;
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
type = "disk";
|
||||
device = lib.mkDefault "/dev/null";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
installer-boot = {
|
||||
size = "1M";
|
||||
type = "EF02"; # for grub MBR
|
||||
priority = 1;
|
||||
};
|
||||
installer-ESP = {
|
||||
size = "512M";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
boot.loader.grub.efiSupport = lib.mkDefault true;
|
||||
boot.loader.grub.efiInstallAsRemovable = lib.mkDefault true;
|
||||
disko.devices = {
|
||||
disk = {
|
||||
"main" = {
|
||||
name = suffix;
|
||||
type = "disk";
|
||||
device = lib.mkDefault "/dev/null";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
"boot" = {
|
||||
size = "1M";
|
||||
type = "EF02"; # for grub MBR
|
||||
priority = 1;
|
||||
};
|
||||
};
|
||||
installer-root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "ext4";
|
||||
mountpoint = "/";
|
||||
"ESP" = {
|
||||
size = "512M";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
};
|
||||
};
|
||||
"root" = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "ext4";
|
||||
mountpoint = "/";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -56,7 +64,7 @@ let
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
clan = {
|
||||
|
||||
@@ -112,15 +112,15 @@ const InstallMachine = (props: InstallMachineProps) => {
|
||||
e.preventDefault();
|
||||
const curr_uri = activeURI();
|
||||
const disk = getValue(formStore, "disk");
|
||||
const disk_id = props.disks.find((d) => d.name === disk)?.id_link;
|
||||
if (!curr_uri || !disk_id || !props.name) {
|
||||
const diskId = props.disks.find((d) => d.name === disk)?.id_link;
|
||||
if (!curr_uri || !diskId || !props.name) {
|
||||
return;
|
||||
}
|
||||
|
||||
const r = await callApi("set_single_disk_uuid", {
|
||||
base_path: curr_uri,
|
||||
machine_name: props.name,
|
||||
disk_uuid: disk_id,
|
||||
disk_uuid: diskId,
|
||||
});
|
||||
if (r.status === "error") {
|
||||
toast.error("Failed to set disk");
|
||||
|
||||
Reference in New Issue
Block a user