forked from kalipso/infrastructure
[microvm] setup network, allow adding bridge interface to host
This commit is contained in:
@@ -62,6 +62,31 @@ in
|
|||||||
specialArgs.inputs = inputs;
|
specialArgs.inputs = inputs;
|
||||||
modules = defaultMicroVMModules ++ [
|
modules = defaultMicroVMModules ++ [
|
||||||
./durruti/configuration.nix
|
./durruti/configuration.nix
|
||||||
|
|
||||||
|
{
|
||||||
|
microvm = {
|
||||||
|
interfaces = [
|
||||||
|
{
|
||||||
|
type = "tap";
|
||||||
|
id = "vm-test1";
|
||||||
|
mac = "02:00:00:00:00:01";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.network.enable = true;
|
||||||
|
|
||||||
|
systemd.network.networks."20-lan" = {
|
||||||
|
matchConfig.Type = "ether";
|
||||||
|
networkConfig = {
|
||||||
|
Address = ["10.0.0.3/24" "2001:db8::b/64"];
|
||||||
|
Gateway = "10.0.0.1";
|
||||||
|
DNS = ["1.1.1.1"];
|
||||||
|
IPv6AcceptRA = true;
|
||||||
|
DHCP = "no";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,14 @@ in
|
|||||||
default = "";
|
default = "";
|
||||||
description = lib.mdDoc "ip of nix container provided for malo";
|
description = lib.mdDoc "ip of nix container provided for malo";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
microvm = {
|
||||||
|
enableHostBridge = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = lib.mdDoc "Setup bridge device for microvms.";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -45,5 +53,35 @@ in
|
|||||||
locations."/".proxyPass = "http://${cfg.host_ip}:80";
|
locations."/".proxyPass = "http://${cfg.host_ip}:80";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.network = mkIf cfg.microvm.enableHostBridge {
|
||||||
|
enable = true;
|
||||||
|
# create a bride device that all the microvms will be connected to
|
||||||
|
netdevs."10-microvm".netdevConfig = {
|
||||||
|
Kind = "bridge";
|
||||||
|
Name = "microvm";
|
||||||
|
};
|
||||||
|
|
||||||
|
networks."10-microvm" = {
|
||||||
|
matchConfig.Name = "microvm";
|
||||||
|
networkConfig = {
|
||||||
|
DHCPServer = true;
|
||||||
|
IPv6SendRA = true;
|
||||||
|
};
|
||||||
|
addresses = [ {
|
||||||
|
Address = "10.0.0.1/24";
|
||||||
|
} {
|
||||||
|
Address = "fd12:3456:789a::1/64";
|
||||||
|
} ];
|
||||||
|
ipv6Prefixes = [ {
|
||||||
|
Prefix = "fd12:3456:789a::/64";
|
||||||
|
} ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# connect the vms to the bridge
|
||||||
|
networks."11-microvm" = {
|
||||||
|
matchConfig.Name = "vm-*";
|
||||||
|
networkConfig.Bridge = "microvm";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user