continuous-integration/drone/push Build is passing
This PR adds a declarative integration testing setup which includes 2 local VMs client and server which can be started and stopped via a command. The VMs are run with QEMU and created by https://github.com/microvm-nix/microvm.nix The key pair is generated for this use case and is safe to commit, it resolves the problem that the readFile function can only be used with git tracked files. --------- Co-authored-by: devydave <yannick-dev@tutanota.com> Reviewed-on: #902 Reviewed-by: p4u1 <133+p4u1@noreply.git.coopcloud.tech> Co-authored-by: devydave <bittedanke@tutanota.com>
92 lines
1.8 KiB
Nix
92 lines
1.8 KiB
Nix
{
|
|
lib,
|
|
defaultDNS,
|
|
...
|
|
}:
|
|
let
|
|
index = 3;
|
|
mac = "00:00:00:00:00:02";
|
|
clientIp = "10.0.0.2";
|
|
in
|
|
{
|
|
imports = [
|
|
../../modules/ssh.nix
|
|
../../modules/user.nix
|
|
../../modules/docker.nix
|
|
];
|
|
|
|
microvm = {
|
|
vcpu = 4;
|
|
mem = 8097; # see issue related in microvm repo with 2048, so add 1MB
|
|
interfaces = [
|
|
{
|
|
id = "vm${toString index}";
|
|
type = "tap";
|
|
inherit mac;
|
|
}
|
|
];
|
|
};
|
|
|
|
boot.tmp = {
|
|
useTmpfs = true;
|
|
tmpfsSize = "8G";
|
|
};
|
|
|
|
networking = {
|
|
hostName = "abra-server";
|
|
useNetworkd = true;
|
|
};
|
|
systemd.network.networks."11-eth" = {
|
|
matchConfig.MACAddress = mac;
|
|
# Static IP configuration
|
|
address = [
|
|
"10.0.0.${toString index}/32"
|
|
"fec0::${lib.toHexString index}/128"
|
|
];
|
|
routes = [
|
|
{
|
|
# A route to the host
|
|
Destination = "10.0.0.0/32";
|
|
GatewayOnLink = true;
|
|
}
|
|
{
|
|
# Route to server
|
|
Destination = "${clientIp}/32";
|
|
Gateway = "10.0.0.0";
|
|
GatewayOnLink = true;
|
|
}
|
|
{
|
|
# Default route
|
|
Destination = "0.0.0.0/0";
|
|
Gateway = "10.0.0.0";
|
|
GatewayOnLink = true;
|
|
}
|
|
{
|
|
# Default route
|
|
Destination = "::/0";
|
|
Gateway = "fec0::";
|
|
GatewayOnLink = true;
|
|
}
|
|
];
|
|
networkConfig = {
|
|
# DNS servers no longer come from DHCP nor Router
|
|
# Advertisements. Perhaps you want to change the defaults:
|
|
DNS = defaultDNS;
|
|
};
|
|
};
|
|
|
|
# open the ports to allow ssh access from the host
|
|
networking.firewall.allowedTCPPorts = [
|
|
22
|
|
80
|
|
443
|
|
1312 # deploy with udp and tcp on same port test
|
|
];
|
|
networking.firewall.allowedUDPPorts = [
|
|
22
|
|
80
|
|
443
|
|
1312 # deploy with udp and tcp on same port test
|
|
];
|
|
}
|