Mise-en-Place
Multi-Cloud VM Scheduler
"Cooking up cost savings, one VM at a time!" - Scripts that stop and start Virtual Machines across all major cloud providers. Read a CSV of VMs + times and flip power states like a grill master.
🍳 What's Cooking?
Welcome to CloudCostChefs - your sous chef for managing virtual machine schedules across all major cloud providers. Our collection of scripts helps you start and stop VMs based on CSV schedules, turning your cloud infrastructure into a well-orchestrated kitchen that runs only when needed.
This repository contains four expertly crafted scripts that manage VM/compute instance schedules across:
- 🔵Microsoft Azure - Azure-Start-CloudGrill.ps1
- 🟡Google Cloud Platform - GCP-Start-CloudGrill.ps1
- 🟠Amazon Web Services - AWS-Start-CloudGrill.ps1
- 🔴Oracle Cloud Infrastructure - oci-start-cloudgrill.py
Each script reads a CSV "recipe card" containing your VMs and their desired start/stop times, then automatically manages their power states like a master chef managing multiple ovens.
🚀 Let the Magic Happen
The scripts will automatically manage your VM lifecycle with chef-level precision
Check Current VM States
Automatically detects the current power state of all VMs in your schedule before making any changes.
Compare Against Schedules
Intelligently compares current time against your defined start/stop windows for each VM.
Start VMs During Operating Hours
Automatically starts VMs when current time falls within their scheduled operating window.
Stop VMs Outside Operating Hours
Safely stops VMs when current time is outside their scheduled operating window.
Colorful Chef-Themed Output
Beautiful, easy-to-read console output with cooking metaphors and color-coded status messages.
Multi-Cloud Support
Consistent scheduling experience across Azure, AWS, Google Cloud, and Oracle Cloud platforms.
🔧 Choose Your Cloud Kitchen
Select the script for your cloud provider and get started in minutes
Azure
Azure-Start-CloudGrill.ps1
Manages Azure Virtual Machines using PowerShell and Azure PowerShell module.
Prerequisites:
- ✓PowerShell 5.1 or later
- ✓Azure PowerShell module
Usage:
# Azure (PowerShell)
.\Azure-Start-CloudGrill.ps1 -CsvFilePath "vms.csv"
AWS
AWS-Start-CloudGrill.ps1
Controls AWS EC2 instances using PowerShell and AWS CLI integration.
Prerequisites:
- ✓PowerShell 5.1 or later
- ✓AWS CLI configured
Usage:
# AWS (PowerShell)
.\AWS-Start-CloudGrill.ps1 -CsvFilePath "vms.csv"
GCP
GCP-Start-CloudGrill.ps1
Manages Google Cloud Compute Engine instances via PowerShell and gcloud CLI.
Prerequisites:
- ✓PowerShell 5.1 or later
- ✓Google Cloud CLI
Usage:
# Google Cloud (PowerShell)
.\GCP-Start-CloudGrill.ps1 -CsvFilePath "vms.csv"
Oracle Cloud
oci-start-cloudgrill.py
Controls Oracle Cloud Infrastructure compute instances using Python and OCI SDK.
Prerequisites:
- ✓Python 3.6 or later
- ✓OCI Python SDK
Usage:
# Oracle Cloud (Python)
python oci-start-cloudgrill.py vms.csv
📋 Recipe Cards (CSV Formats)
Each cloud has its own CSV format - see the recipe card section below
Azure Format
CSV Header:
VMName,ResourceGroupName,SubscriptionId,StartTime,StopTime
Example:
WebServer01,Production-RG,12345678-1234-1234-1234-123456789012,08:00,18:00
DatabaseServer,Production-RG,12345678-1234-1234-1234-123456789012,06:00,22:00
TestVM,Development-RG,87654321-4321-4321-4321-210987654321,09:00,17:00
Google Cloud Format
CSV Header:
VMName,Zone,ProjectId,StartTime,StopTime
Example:
web-server-01,us-central1-a,my-production-project,08:00,18:00
database-server,us-central1-b,my-production-project,06:00,22:00
test-vm,us-west1-a,my-development-project,09:00,17:00
AWS Format
CSV Header:
InstanceId,Region,InstanceName,StartTime,StopTime
Example:
i-0123456789abcdef0,us-east-1,WebServer01,08:00,18:00
i-0abcdef123456789,us-east-1,DatabaseServer,06:00,22:00
i-0fedcba987654321,us-west-2,TestInstance,09:00,17:00
Oracle Cloud Format
CSV Header:
InstanceId,CompartmentId,InstanceName,StartTime,StopTime
Example:
ocid1.instance.oc1.iad.anyhqljt...,ocid1.compartment.oc1..anyhqljt...,WebServer01,08:00,18:00
ocid1.instance.oc1.iad.anyhqljt...,ocid1.compartment.oc1..anyhqljt...,DatabaseServer,06:00,22:00
ocid1.instance.oc1.phx.anyhqljt...,ocid1.compartment.oc1..anyhqljt...,TestInstance,09:00,17:00
⏰ Schedule Logic
Time Format
- •Use 24-hour format: 08:00, 18:30, 22:15
- •Times represent daily schedules
- •Empty start/stop times are allowed
Scheduling Behavior
Scenario | Action |
---|---|
Current time between start and stop | ✅ START the VM |
Current time outside the window | ❄️ STOP the VM |
🔧 Installation & Prerequisites
Get your kitchen ready with the right tools for each cloud provider
🔵 Azure Setup
Install Azure PowerShell
# Install Azure PowerShell
Install-Module -Name Az -AllowClobber -Scope CurrentUser
# Connect to Azure
Connect-AzAccount
🟡 Google Cloud Setup
Install Google Cloud CLI
# Install Google Cloud CLI
# https://cloud.google.com/sdk/docs/install
# Authenticate
gcloud auth login
🟠 AWS Setup
Install AWS CLI
# Install AWS CLI
# https://aws.amazon.com/cli/
# Configure credentials
aws configure
🔴 Oracle Cloud Setup
Install OCI SDK
# Install OCI SDK
pip install oci
# Configure OCI
oci setup config
💰 Why VM Scheduling Matters
Automated VM scheduling is the secret ingredient to significant cloud cost savings
Cost Savings
Save 50-70% on VM costs by running instances only during business hours or when actually needed.
Automation
Eliminate manual VM management with automated scheduling that works consistently across all environments.
Multi-Cloud
Consistent scheduling experience across Azure, AWS, GCP, and Oracle Cloud with unified CSV format approach.
Visibility
Clear, colorful output shows exactly what actions are being taken on each VM with chef-themed messaging.
Flexibility
Easy CSV-based configuration allows for complex scheduling scenarios and quick adjustments to VM schedules.
Scalability
Manage hundreds of VMs across multiple subscriptions, projects, and accounts with a single script execution.
Ready to Start Cooking?
Get your multi-cloud VM scheduling automated with our chef-crafted scripts