Releases: manasa-bhagwat/vm-deploy-engine
vmdeploy v2.0.5 — First Stable CLI Release (Cobra, SSH, Multi-Config, Installer)
📦 Release: v2.0.5 — Cobra-Powered CLI for VM Deploy Engine
Release Date: 28 Nov 2025
This release marks the first Cobra-powered CLI version of the VM Deploy Engine, completing the foundational architecture for the Go rewrite (v2.x series).
The tool now follows a CNCF-style CLI structure, supports key-based SSH authentication, and contains a fully functioning deployment orchestration pipeline equivalent to the original Bash versions (v1.x).
Highlights
-
Migrated to a real CLI framework (Cobra)
-
Adopted key-based SSH authentication
- PEM files
- Passphrase-protected keys
- SSH Agent forwarding (SSH_AUTH_SOCK)
-
Added a modular deployment orchestrator. Operators now include:
- Installer
- GitOps
- DBOps
- MavenOps
- SystemdOps
-
Introduced a clean config layout
appconfig.yamlvmconfig.yaml
-
Cobra CLI
- Clean subcommand tree
- Delegated execution via
rootCmd.Execute() - Future-ready structure for upcoming commands:
vmdeploy logsvmdeploy statusvmdeploy rollbackvmdeploy doctor
- Plugin-friendly architecture
-
SSH Enhancements
- Support for
.pemprivate keys - Passphrase support
- SSH Agent support
- Strong validation + fallback logic
- No password-based SSH in v2.0.5
- Support for
-
Deployment Orchestrator implements the entire v1.x Bash engine in Go:
- Install base packages
- Clone repo via PAT
- Build app with Maven
- Provision DB
- Create
.envfile - Create
.service(systemd) unit - Reload systemd
- Restart service
📦 Included Artifacts (Release Assets)
The following files are attached to this release:
vmdeploy-linux-amd64vmdeploy-linux-arm64vmdeploy-darwin-amd64vmdeploy-darwin-arm64vmdeploy-windows-amd64.exechecksums.txtinstall.shinstall.ps1
You can download the appropriate binary for your OS below.
📥 Installation Guide
1️⃣ Using the Installer Script (Recommended)
Linux / macOS
curl -LO https://github.com/manasa-bhagwat/vm-deploy-engine/releases/download/v2.0.5/install.sh
chmod +x install.sh
./install.shThis script will:
- Detect your OS + architecture
- Download the correct binary
- Set executable permissions
- Move it to /usr/local/bin
Windows
- Download the PowerShell installer script from the release assets:
install.ps1Or run directly via PowerShell:
Invoke-WebRequest -Uri "https://github.com/manasa-bhagwat/vm-deploy-engine/releases/download/v2.0.5/install.ps1" -OutFile "install.ps1"- Run the Installer
Open PowerShell as Administrator and execute:
Set-ExecutionPolicy Bypass -Scope Process -Force
.\install.ps1The installer will:
- Detect your Windows architecture (x64 / arm64)
- Download vmdeploy-windows-{arch}.exe
- Install it under: C:\Program Files\vmdeploy\
- Add that directory to your system PATH
Note:
- If vmdeploy is not recognized, restart your PowerShell or Windows session to reload PATH changes.
- The installer mirrors the exact behavior of the Linux/macOS install.sh script.
- No separate configuration is required after installation.
2️⃣ Manual Installation
Linux / macOS
chmod +x vmdeploy-linux-amd64
sudo mv vmdeploy-linux-amd64 /usr/local/bin/vmdeployWindows
- From the release assets, download the file: (or the arm64 variant if applicable)
vmdeploy-windows-amd64.exe- Rename the Binary (optional but recommended) -
vmdeploy.exe- Move vmdeploy.exe to a directory where you keep CLI tools, for example: Create the folder if it does not exist.
C:\Program Files\vmdeploy\- Add the installation folder to your system PATH:
- Press Start → search “Environment Variables”
- Open “Edit the system environment variables”
- Click Environment Variables
- Under System variables, select Path
- Click Edit → New
- Add: C:\Program Files\vmdeploy\
- Click OK to save everything.
Note:
- You may need to reopen PowerShell to refresh PATH.
- Keep the .exe in a stable location — moving it later requires updating PATH.
- This manual install flow mirrors what the automated install.ps1 script performs behind the scenes.
3️⃣ Verify Installation
vmdeploy version📘 Usage
vmdeploy version
vmdeploy deploy --app-config appconfig.yaml --vm-config vmconfig.yamlNote: Make sure to run deploy command from terminal where your appconfig.yaml and vmconfig.yaml are located.
Post-deploy:
After vmdeploy deploy ... completes successfully you can immediately run the dynamic SSH command above from the same terminal to open an interactive shell on the VM.
Example flow
# 1. Deploy
vmdeploy deploy --app-config appconfig.yaml --vm-config vmconfig.yaml
# 2. When you see success, enter the VM
ssh -i "$(yq e '.ssh_key_path' vmconfig.yaml)" "$(yq e '.user' vmconfig.yaml)@$(yq e '.host' vmconfig.yaml)"
# 3. Inside VM
sudo tail -n 200 /var/log/syslog
# or
sudo journalctl -u bankapp -fThis works for ephemeral and long-lived VMs because the command references vmconfig.yaml instead of a static local mapping.
Checksums
Verify binary integrity:
sha256sum -c checksums.txtNote
- Ensure your VM is configured for SSH key login.
- Ensure Maven & Git operations on the remote VM run without interactive prompts.
🙌 Thanks & What’s Next
This release lays the groundwork for:
- Parallel deployments
- Multi-node orchestrator
- Rollbacks
- Plugin architecture
- Observability hooks
The v2.1.x series will focus on:
👉 status, logs, and rollback
👉 Structured logs + tracing
👉 Deployment audit logs
👉 Multi-server deployments
👉 Comprehensive unit tests
Download the binaries below to get started!