feat(netconf): apply scripts until colmena apply & all current switches #281
6 changed files with 205 additions and 24 deletions
|
@ -100,6 +100,28 @@ jobs:
|
||||||
STORE_USER: admin
|
STORE_USER: admin
|
||||||
name: Build and cache hypervisor03
|
name: Build and cache hypervisor03
|
||||||
run: nix-shell -A eval-nodes --run cache-node
|
run: nix-shell -A eval-nodes --run cache-node
|
||||||
|
netaccess01:
|
||||||
|
runs-on: nix
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- env:
|
||||||
|
BUILD_NODE: netaccess01
|
||||||
|
STORE_ENDPOINT: https://tvix-store.dgnum.eu/infra-signing/
|
||||||
|
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||||
|
STORE_USER: admin
|
||||||
|
name: Build and cache netaccess01
|
||||||
|
run: nix-shell -A eval-nodes --run cache-node
|
||||||
|
netcore01:
|
||||||
|
runs-on: nix
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- env:
|
||||||
|
BUILD_NODE: netcore01
|
||||||
|
STORE_ENDPOINT: https://tvix-store.dgnum.eu/infra-signing/
|
||||||
|
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||||
|
STORE_USER: admin
|
||||||
|
name: Build and cache netcore01
|
||||||
|
run: nix-shell -A eval-nodes --run cache-node
|
||||||
netcore02:
|
netcore02:
|
||||||
runs-on: nix
|
runs-on: nix
|
||||||
steps:
|
steps:
|
||||||
|
|
47
machines/netconf/netaccess01.nix
Normal file
47
machines/netconf/netaccess01.nix
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
# SPDX-FileCopyrightText: 2025 Lubin Bailly <lubin.bailly@dgnum.eu>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: EUPL-1.2
|
||||||
|
|
||||||
|
let
|
||||||
|
#TODO: meta
|
||||||
|
vlansPlan = {
|
||||||
|
"uplink-cri".id = 223;
|
||||||
|
|
||||||
|
"admin-core" = {
|
||||||
|
id = 3000;
|
||||||
|
l3-interface = "irb.0";
|
||||||
|
};
|
||||||
|
"admin-ap".id = 3001;
|
||||||
|
"users".id-list = [
|
||||||
|
{
|
||||||
|
begin = 3045;
|
||||||
|
end = 4094;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
"ap-staging".id = 2000;
|
||||||
|
"hypervisor".id = 2001;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
vlans = vlansPlan;
|
||||||
|
dgn-hardware.model = "EX2300-48P";
|
||||||
|
dgn-interfaces = {
|
||||||
|
# "ge-0/0/0" = AP-staging;
|
||||||
|
# "ge-0/0/1" = AP-staging;
|
||||||
|
# "ge-0/0/2" = AP-staging;
|
||||||
|
# "ge-0/0/3" = AP-staging;
|
||||||
|
# "ge-0/0/4" = AP-staging;
|
||||||
|
# "ge-0/0/5" = AP-staging;
|
||||||
|
|
||||||
|
# netcore02
|
||||||
|
"xe-0/1/0".ethernet-switching = {
|
||||||
|
interface-mode = "trunk";
|
||||||
|
vlans = [ "all" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# management
|
||||||
|
"me0".inet.addresses = [ "192.168.42.6/24" ];
|
||||||
|
"irb".inet6.addresses = [ "fd26:baf9:d250:8000::2001/64" ];
|
||||||
|
};
|
||||||
|
}
|
55
machines/netconf/netcore01.nix
Normal file
55
machines/netconf/netcore01.nix
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
# SPDX-FileCopyrightText: 2025 Lubin Bailly <lubin.bailly@dgnum.eu>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: EUPL-1.2
|
||||||
|
|
||||||
|
let
|
||||||
|
#TODO: meta
|
||||||
|
vlansPlan = {
|
||||||
|
"uplink-cri".id = 223;
|
||||||
|
|
||||||
|
"admin-core" = {
|
||||||
|
id = 3000;
|
||||||
|
l3-interface = "irb.0";
|
||||||
|
};
|
||||||
|
"admin-ap".id = 3001;
|
||||||
|
"users".id-list = [
|
||||||
|
{
|
||||||
|
begin = 3045;
|
||||||
|
end = 4094;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
"ap-staging".id = 2000;
|
||||||
|
"hypervisor".id = 2001;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
vlans = vlansPlan;
|
||||||
|
dgn-hardware.model = "EX2300-48P";
|
||||||
|
dgn-interfaces =
|
||||||
|
let
|
||||||
|
hypervisor.ethernet-switching = {
|
||||||
|
interface-mode = "access";
|
||||||
|
vlans = [ "hypervisor" ];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"xe-0/2/0".ethernet-switching = {
|
||||||
|
interface-mode = "trunk";
|
||||||
|
vlans = [ "all" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"ge-0/0/0" = hypervisor;
|
||||||
|
"ge-0/0/1" = hypervisor;
|
||||||
|
"ge-0/0/2" = hypervisor;
|
||||||
|
"ge-0/0/3" = hypervisor;
|
||||||
|
"ge-0/0/4" = hypervisor;
|
||||||
|
"ge-0/0/5" = hypervisor;
|
||||||
|
"ge-0/0/6" = hypervisor;
|
||||||
|
"ge-0/0/7" = hypervisor;
|
||||||
|
|
||||||
|
# management
|
||||||
|
"me0".inet.addresses = [ "192.168.2.2/24" ];
|
||||||
|
"irb".inet6.addresses = [ "fd26:baf9:d250:8000::100f/64" ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -20,6 +20,7 @@ let
|
||||||
];
|
];
|
||||||
|
|
||||||
"ap-staging".id = 2000;
|
"ap-staging".id = 2000;
|
||||||
|
"hypervisor".id = 2001;
|
||||||
};
|
};
|
||||||
#TODO: additionnal module (always the same for APs)
|
#TODO: additionnal module (always the same for APs)
|
||||||
AP-staging = {
|
AP-staging = {
|
||||||
|
@ -95,9 +96,9 @@ in
|
||||||
};
|
};
|
||||||
# netcore01 (Potos)
|
# netcore01 (Potos)
|
||||||
"xe-0/1/2".ethernet-switching = {
|
"xe-0/1/2".ethernet-switching = {
|
||||||
interface-mode = "access";
|
interface-mode = "trunk";
|
||||||
vlans = [
|
vlans = [
|
||||||
"ap-staging"
|
"all"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
# uplink
|
# uplink
|
||||||
|
|
|
@ -2,6 +2,31 @@
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: EUPL-1.2
|
# SPDX-License-Identifier: EUPL-1.2
|
||||||
{
|
{
|
||||||
|
netcore01 = {
|
||||||
|
site = "pot01";
|
||||||
|
|
||||||
|
hashedPassword = "$6$BKetIIfT$JVyE0B7F4O.fJwQFu5jVrVExAZROrEMLW5HkDkhjMShJ9cRIgxSm2VM9OThDowsnLmAewqDN7eAY.EQt4UR4U0";
|
||||||
|
|
||||||
|
stateVersion = null;
|
||||||
|
|
||||||
|
adminGroups = [ "fai" ];
|
||||||
|
|
||||||
|
deployment = {
|
||||||
|
targetHost = "fd26:baf9:d250:8000::100f";
|
||||||
|
sshOptions = [
|
||||||
|
"-J"
|
||||||
|
"root@vault01.hyp01.infra.dgnum.eu"
|
||||||
|
"-p"
|
||||||
|
"830"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
version = "24.05"; # FIXME: meaningless
|
||||||
|
system = "netconf";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
netcore02 = {
|
netcore02 = {
|
||||||
site = "hyp01";
|
site = "hyp01";
|
||||||
|
|
||||||
|
@ -16,6 +41,33 @@
|
||||||
sshOptions = [
|
sshOptions = [
|
||||||
"-J"
|
"-J"
|
||||||
"root@vault01.hyp01.infra.dgnum.eu"
|
"root@vault01.hyp01.infra.dgnum.eu"
|
||||||
|
"-p"
|
||||||
|
"830"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
version = "24.05"; # FIXME: meaningless
|
||||||
|
system = "netconf";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
netaccess01 = {
|
||||||
|
site = "hyp02";
|
||||||
|
|
||||||
|
hashedPassword = "$6$BKetIIfT$JVyE0B7F4O.fJwQFu5jVrVExAZROrEMLW5HkDkhjMShJ9cRIgxSm2VM9OThDowsnLmAewqDN7eAY.EQt4UR4U0";
|
||||||
|
|
||||||
|
stateVersion = null;
|
||||||
|
|
||||||
|
adminGroups = [ "fai" ];
|
||||||
|
|
||||||
|
deployment = {
|
||||||
|
targetHost = "fd26:baf9:d250:8000::2001";
|
||||||
|
sshOptions = [
|
||||||
|
"-J"
|
||||||
|
"root@vault01.hyp01.infra.dgnum.eu"
|
||||||
|
"-p"
|
||||||
|
"830"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,26 +76,4 @@
|
||||||
system = "netconf";
|
system = "netconf";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# netaccess01 = {
|
|
||||||
# site = "hyp02";
|
|
||||||
#
|
|
||||||
# hashedPassword = "$6$BKetIIfT$JVyE0B7F4O.fJwQFu5jVrVExAZROrEMLW5HkDkhjMShJ9cRIgxSm2VM9OThDowsnLmAewqDN7eAY.EQt4UR4U0";
|
|
||||||
#
|
|
||||||
# stateVersion = null;
|
|
||||||
#
|
|
||||||
# adminGroups = [ "fai" ];
|
|
||||||
#
|
|
||||||
# deployment = {
|
|
||||||
# targetHost = "fd26:baf9:d250:8000::2001";
|
|
||||||
# sshOptions = [
|
|
||||||
# "-J"
|
|
||||||
# "root@vault01.hyp01.infra.dgnum.eu"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
#
|
|
||||||
# nixpkgs = {
|
|
||||||
# version = "24.05"; # FIXME: meaningless
|
|
||||||
# system = "netconf";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
}
|
||||||
|
|
26
scripts/netconf-apply.sh
Executable file
26
scripts/netconf-apply.sh
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 Lubin Bailly <lubin.bailly@dgnum.eu>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: EUPL-1.2
|
||||||
|
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
ssh_command=${SSH_COMMAND-ssh}
|
||||||
|
|
||||||
|
target_host=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ -z "$target_host" ] ; then
|
||||||
|
echo Usage: netconf-apply target-host
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if toplevel="$(nix-build $(colmena eval -E "{ nodes, ... }: nodes.${target_host}.config.netconf.rpc" --instantiate))"; then
|
||||||
|
$ssh_command $(colmena eval -E "{nodes, ...}:
|
||||||
|
with nodes.${target_host}.config.deployment;
|
||||||
|
\"\${targetUser}@\${targetHost} \${builtins.concatStringsSep \" \" sshOptions}\"" | sed 's/"//g') \
|
||||||
|
-s netconf < $toplevel
|
||||||
|
else
|
||||||
|
echo Build failed
|
||||||
|
fi
|
Loading…
Add table
Reference in a new issue