func SetEnvironmentVariables()

in integration_test/gce-testing-internal/gce/gce_testing.go [1710:1742]


func SetEnvironmentVariables(ctx context.Context, logger *log.Logger, vm *VM, envVariables map[string]string) error {
	if IsWindows(vm.ImageSpec) {
		for key, value := range envVariables {
			envVariableCmd := fmt.Sprintf(`setx %s "%s" /M`, key, value)
			logger.Println("envVariableCmd " + envVariableCmd)
			if _, err := RunRemotely(ctx, logger, vm, envVariableCmd); err != nil {
				return err
			}
		}
		return nil
	}
	// https://serverfault.com/a/413408
	// Escaping newlines here because we'll be using `echo -e` later
	override := `[Service]\n`
	for key, value := range envVariables {
		override += fmt.Sprintf(`Environment="%s=%s"\n`, key, value)
	}
	for _, service := range []string{
		"google-cloud-ops-agent",
		"google-cloud-ops-agent-fluent-bit",
		"google-cloud-ops-agent-opentelemetry-collector",
	} {
		dir := fmt.Sprintf("/etc/systemd/system/%s.service.d", service)
		cmd := fmt.Sprintf(`sudo mkdir -p %s && echo -e '%s' | sudo tee %s/override.conf`, dir, override, dir)
		if _, err := RunRemotely(ctx, logger, vm, cmd); err != nil {
			return err
		}
	}
	// Reload the systemd daemon to pick up the new settings edited in the previous command
	daemonReload := "sudo systemctl daemon-reload"
	_, err := RunRemotely(ctx, logger, vm, daemonReload)
	return err
}