metropolis/cli/takeover/e2e: write metroctl configs to tmp directory
Without the sandboxroot, metroctl tries to create /.config,
which obviously will fail as it doesn't have root permissions.
This overrides the config dir to use a temporary directory.
Change-Id: I8c8316e170e1e21d006ba831eaa86734fdb726cc
Reviewed-on: https://review.monogon.dev/c/monogon/+/4402
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/cli/takeover/e2e/main_test.go b/metropolis/cli/takeover/e2e/main_test.go
index 419842f..482752a 100644
--- a/metropolis/cli/takeover/e2e/main_test.go
+++ b/metropolis/cli/takeover/e2e/main_test.go
@@ -198,6 +198,13 @@
t.Fatal("Waiting for sshd start timed out")
}
+ // Create the config directory. We keep it in /tmp because of sandbox limitations.
+ configDir, err := os.MkdirTemp("/tmp", "test-configs-*")
+ if err != nil {
+ t.Fatalf("Failed to create config directory: %v", err)
+ }
+ defer os.RemoveAll(configDir)
+
installArgs := []string{
"install", "ssh",
fmt.Sprintf("root@localhost:%d", sshPort),
@@ -206,6 +213,7 @@
"--cluster", "cluster.internal",
"--takeover", xTakeoverPath,
"--image", xImagePath,
+ "--config", configDir,
}
installCmd := exec.Command(xMetroctlPath, installArgs...)
installCmd.Env = append(installCmd.Environ(), fmt.Sprintf("SSH_AUTH_SOCK=%s", sshAuthSock))