Simple Deployment On VM
Introduction
This rulebook defines a simple but secure methodology for deploying applications on virtual machines, ensuring reliable, production-ready environments through:
Following clear core principles to minimize risk and avoid disruptions
Using CLI tools and environment variables for consistent automation
Securing access with SSH keys and safe credential handling
Ensuring proper infrastructure, networking, and database configurations
Verifying deployments with thorough quality assurance checks
Goal
Why did we make this rule book?
To avoid insecure, inconsistent, or incomplete VM-based deployments.
To prevent operational disruptions by protecting existing cloud resources.
To create a clear, CLI-driven deployment process for repeatable results.
What will you achieve?
Secure, production-ready VM deployments.
Consistent infrastructure, networking, and database configurations.
Documented access credentials and verified application functionality.
Who is this for?
Anyone responsible for deploying applications on virtual machines who needs a simple, secure, and repeatable process that works across environments.
Workflow
This process ensures applications are deployed on virtual machines securely and efficiently without disrupting existing resources.
Follow core principles: Avoid assumptions, use only CLI tools, and never delete existing resources.
Provision virtual machines: Prefer VMs over PaaS, place them in public subnets with public IPs, enable SSH access, and size them with the required CPU/memory.
Configure networking: Set up domains and DNS records, configure TLS/HTTPS (Let’s Encrypt by default), ensure required ports are open, and apply provider-specific networking settings (e.g., AWS VPC DNS, Cloudflare proxy mode).
Set up database (if needed): Choose the correct type/version, prefer managed services, configure environment variables, generate secure passwords, and store them safely.
Perform quality assurance: Wait for resources to be ready, check application logs, perform HTTP 200 health checks, and confirm production readiness.
Get user confirmation: Confirm domain, TLS, and database preferences before executing the deployment.
Finalize & document: Verify all success criteria are met and document credentials, endpoints, and configuration details.
Use Cases
Deploying a New Application
Launch a secure, production-ready application on virtual machines.
Migrating Applications
Move an application to new virtual machines with minimal downtime.
Setting Up a Staging Environment
Create a secure staging VM environment for pre-production testing.
Redeploying After Updates
Deploy the updated version of an application while preserving access and configurations.
References
Last updated