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

ScenarioAction
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