feat(machines/hypervisor0*): init
All checks were successful
Check meta / check_dns (pull_request) Successful in 18s
Check meta / check_meta (pull_request) Successful in 17s
Run pre-commit on all files / pre-commit (push) Successful in 38s
Check workflows / check_workflows (pull_request) Successful in 22s
Build all the nodes / ap01 (pull_request) Successful in 1m2s
Build all the nodes / geo01 (pull_request) Successful in 1m59s
Build all the nodes / bridge01 (pull_request) Successful in 2m4s
Build all the nodes / geo02 (pull_request) Successful in 2m1s
Build all the nodes / netcore02 (pull_request) Successful in 44s
Build all the nodes / compute01 (pull_request) Successful in 2m50s
Build all the nodes / rescue01 (pull_request) Successful in 3m11s
Build all the nodes / storage01 (pull_request) Successful in 3m12s
Build all the nodes / hypervisor02 (pull_request) Successful in 4m49s
Build all the nodes / hypervisor03 (pull_request) Successful in 4m48s
Build all the nodes / hypervisor01 (pull_request) Successful in 6m9s
Run pre-commit on all files / pre-commit (pull_request) Successful in 43s
Build all the nodes / vault01 (pull_request) Successful in 1m49s
Build all the nodes / web01 (pull_request) Successful in 2m9s
Build all the nodes / web02 (pull_request) Successful in 1m38s
Build all the nodes / web03 (pull_request) Successful in 1m44s

It contains a CephFS module which contains only monitor HA and the Incus enablement.

We are not using yet the Preseed to reproduce this on another set of
machines automatically.

Signed-off-by: Ryan Lahfa <ryan@dgnum.eu>
This commit is contained in:
Ryan Lahfa 2024-12-20 21:13:48 +01:00
parent 3085d9e3a8
commit 24360f4395
7 changed files with 152 additions and 7 deletions

2
.gitignore vendored
View file

@ -9,3 +9,5 @@ result-*
*.qcow2
.gcroots
.pre-commit-config.yaml
preseed*yml

View file

@ -2,15 +2,27 @@
#
# SPDX-License-Identifier: EUPL-1.2
{ lib, ... }:
{ meta, lib, ... }:
lib.extra.mkConfig {
enabledModules = [ ];
enabledModules = [
"dgn-hypervisor"
"dgn-cephfs"
];
enabledServices = [ ];
extraConfig = {
services.netbird.enable = true;
dgn-cephfs = {
# Unique per cluster.
fsid = "d189c08e-300b-4ad9-8c95-b50fd0976758";
initialMembers = lib.genAttrs [
"hypervisor01"
"hypervisor02"
"hypervisor03"
] (name: builtins.head meta.network.${name}.addresses.ipv4);
};
};
root = ./.;

View file

@ -2,15 +2,27 @@
#
# SPDX-License-Identifier: EUPL-1.2
{ lib, ... }:
{ meta, lib, ... }:
lib.extra.mkConfig {
enabledModules = [ ];
enabledModules = [
"dgn-hypervisor"
"dgn-cephfs"
];
enabledServices = [ ];
extraConfig = {
services.netbird.enable = true;
dgn-cephfs = {
# Unique per cluster.
fsid = "d189c08e-300b-4ad9-8c95-b50fd0976758";
initialMembers = lib.genAttrs [
"hypervisor01"
"hypervisor02"
"hypervisor03"
] (name: builtins.head meta.network.${name}.addresses.ipv4);
};
};
root = ./.;

View file

@ -2,15 +2,27 @@
#
# SPDX-License-Identifier: EUPL-1.2
{ lib, ... }:
{ meta, lib, ... }:
lib.extra.mkConfig {
enabledModules = [ ];
enabledModules = [
"dgn-hypervisor"
"dgn-cephfs"
];
enabledServices = [ ];
extraConfig = {
services.netbird.enable = true;
dgn-cephfs = {
# Unique per cluster.
fsid = "d189c08e-300b-4ad9-8c95-b50fd0976758";
initialMembers = lib.genAttrs [
"hypervisor01"
"hypervisor02"
"hypervisor03"
] (name: builtins.head meta.network.${name}.addresses.ipv4);
};
};
root = ./.;

View file

@ -18,10 +18,12 @@
"dgn-access-control"
"dgn-acme"
"dgn-backups"
"dgn-console"
"dgn-cephfs"
"dgn-chatops"
"dgn-console"
"dgn-firewall"
"dgn-hardware"
"dgn-hypervisor"
"dgn-netbox-agent"
"dgn-network"
"dgn-node-monitoring"

View file

@ -0,0 +1,84 @@
# SPDX-FileCopyrightText: 2024 Ryan Lahfa <ryan@dgnum.eu>
# SPDX-FileContributor: Elias Coppens <elias@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2
{
meta,
pkgs,
config,
lib,
...
}:
let
inherit (lib)
mkEnableOption
mkIf
types
mkOption
concatStringsSep
;
cfg = config.dgn-cephfs;
in
{
options.dgn-cephfs = {
enable = mkEnableOption "the CephFS module for our hypervisors";
fsid = mkOption {
type = types.str;
};
initialMembers = mkOption {
type = types.attrsOf types.str;
default = { };
example = {
"hypervisor01" = "10.0.0.254";
"hypervisor02" = "10.0.0.253";
};
};
};
config = mkIf cfg.enable {
networking.firewall.allowedTCPPorts = [
6789
3300
];
networking.firewall.allowedTCPPortRanges = [
{
from = 6800;
to = 7300;
}
];
environment.systemPackages = [
pkgs.ceph
pkgs.gdb
];
environment.enableDebugInfo = true;
services.ceph = {
enable = true;
global = {
inherit (cfg) fsid;
monInitialMembers = concatStringsSep ", " (builtins.attrNames cfg.initialMembers);
monHost = concatStringsSep ", " (builtins.attrValues cfg.initialMembers);
# TODO: change it
clusterName = "ceph";
clusterNetwork = "10.0.254.0/24";
publicNetwork = "10.0.254.0/24";
};
extraConfig.public_addr = builtins.head meta.network.${config.networking.hostName}.addresses.ipv4;
osd = {
enable = true;
daemons = [ config.networking.hostName ];
};
mon = {
enable = true;
daemons = [ config.networking.hostName ];
};
mgr = {
enable = true;
daemons = [ config.networking.hostName ];
};
};
};
}

View file

@ -0,0 +1,21 @@
# SPDX-FileCopyrightText: 2024 Ryan Lahfa <ryan@dgnum.eu>
# SPDX-FileContributor: Elias Coppens <elias@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2
{ config, lib, ... }:
let
cfg = config.dgn-hypervisor;
inherit (lib) mkEnableOption mkIf;
in
{
options.dgn-hypervisor.enable = mkEnableOption "the Incus hypervisor";
config = mkIf cfg.enable {
networking.firewall.allowedTCPPorts = [ 8443 ];
virtualisation.incus = {
enable = true;
ui.enable = true;
};
};
}