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))