diff --git a/deploy.go b/deploy.go index 0c90d91..79caad1 100644 --- a/deploy.go +++ b/deploy.go @@ -21,7 +21,6 @@ const ( type pbToml struct { Server serverConfig `toml:"server"` PocketBase pocketBaseConfig `toml:"pocketbase"` - Deployment deploymentConfig `toml:"deployment"` } type serverConfig struct { @@ -35,11 +34,6 @@ type pocketBaseConfig struct { ServiceName string `toml:"service_name"` } -type deploymentConfig struct { - ServiceDir string `toml:"service_dir"` - EnvironmentFile string `toml:"environment_file"` -} - func runDeploy() error { cwd, err := os.Getwd() if err != nil { @@ -77,26 +71,16 @@ func runDeploy() error { version = defaultPocketbaseVersion } - serviceDirTemplate := cfg.Deployment.ServiceDir - if serviceDirTemplate == "" { - serviceDirTemplate = defaultServiceDirTemplate - } - - envFileTemplate := cfg.Deployment.EnvironmentFile - if envFileTemplate == "" { - envFileTemplate = defaultEnvFileTemplate - } - - serviceDir := renderServiceTemplate(serviceDirTemplate, serviceName) - envFile := renderServiceTemplate(envFileTemplate, serviceName) - unitServiceDir := renderServiceTemplate(serviceDirTemplate, "%i") - unitEnvFile := renderServiceTemplate(envFileTemplate, "%i") + serviceDir := renderServiceTemplate(defaultServiceDirTemplate, serviceName) + envFile := renderServiceTemplate(defaultEnvFileTemplate, serviceName) + unitServiceDir := renderServiceTemplate(defaultServiceDirTemplate, "%i") + unitEnvFile := renderServiceTemplate(defaultEnvFileTemplate, "%i") step := 1 printStep(step, totalDeploySteps, "validating configuration") step++ printStep(step, totalDeploySteps, "probing remote host") - remoteOS, err := runSSHOutput(serverIP, "uname -s") + remoteOS, err := runSSHOutput(serverIP, "/bin/uname -s") if err != nil { return fmt.Errorf("failed to determine remote OS: %w", err) } @@ -104,7 +88,7 @@ func runDeploy() error { return fmt.Errorf("unsupported remote OS %q", remoteOS) } - machineArch, err := runSSHOutput(serverIP, "uname -m") + machineArch, err := runSSHOutput(serverIP, "/bin/uname -m") if err != nil { return fmt.Errorf("failed to determine remote architecture: %w", err) } @@ -292,14 +276,14 @@ systemctl restart pb@%s } func runSSHCommand(server, script string) error { - cmd := exec.Command("ssh", "-o", "BatchMode=yes", fmt.Sprintf("root@%s", server), "bash", "-lc", script) + cmd := exec.Command("ssh", append(sshArgs(server), "bash", "-lc", script)...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr return cmd.Run() } func runSSHOutput(server, script string) (string, error) { - cmd := exec.Command("ssh", "-o", "BatchMode=yes", fmt.Sprintf("root@%s", server), "bash", "-lc", script) + cmd := exec.Command("ssh", append(sshArgs(server), "bash", "-lc", script)...) var out bytes.Buffer cmd.Stdout = &out cmd.Stderr = os.Stderr @@ -326,7 +310,7 @@ func syncLocalDirectories(server, remoteBase string, dirs []string) error { } remotePath := fmt.Sprintf("root@%s:%s/%s", server, remoteBase, dir) - cmd := exec.Command("rsync", "-az", "--delete", localPath+"/", remotePath) + cmd := exec.Command("rsync", "-e", "ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new", "-az", "--delete", localPath+"/", remotePath) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { @@ -335,3 +319,11 @@ func syncLocalDirectories(server, remoteBase string, dirs []string) error { } return nil } + +func sshArgs(server string) []string { + return []string{ + "-o", "BatchMode=yes", + "-o", "StrictHostKeyChecking=accept-new", + fmt.Sprintf("root@%s", server), + } +} diff --git a/main.go b/main.go index 4b2acb6..8dad454 100644 --- a/main.go +++ b/main.go @@ -283,18 +283,15 @@ func init() { } func writePBConfig(path, serviceName string) error { - const tmpl = `[server] + const tmpl = `[pocketbase] +version = "%s" +service_name = "%s" + +[server] ip = "127.0.0.1" port = 8090 domain = "example.com" -[pocketbase] -version = "%s" -service_name = "%s" - -[deployment] -service_dir = "/root/pb/{service}" -environment_file = "/root/pb/{service}/.env" ` return os.WriteFile(path, []byte(fmt.Sprintf(tmpl, defaultPocketbaseVersion, serviceName)), 0o644) }