Scheduler quick start
Structured quick-reference sections for prerequisites, installation, usage, and troubleshooting.
Prerequisites by provider
| Provider | Script | Runtime | Prerequisites |
|---|---|---|---|
| Azure | Azure-Start-CloudGrill.ps1 | powershell | PowerShell 5.1 or later, Azure PowerShell module |
| AWS | AWS-Start-CloudGrill.ps1 | powershell | PowerShell 5.1 or later, AWS CLI configured |
| GCP | GCP-Start-CloudGrill.ps1 | powershell | PowerShell 5.1 or later, Google Cloud CLI |
| Oracle Cloud | oci-start-cloudgrill.py | python | Python 3.6 or later, OCI Python SDK |
Each provider script uses a provider-native authentication path (Az, AWS CLI, gcloud, or OCI SDK/config).
Standard rollout workflow
- 1Start with one cloud provider and a small CSV schedule to validate authentication and time-window behavior.
- 2Test both in-window and out-of-window executions so you confirm start/stop logic before broad rollout.
- 3Standardize CSV files per provider and store them in source control or a secured automation repo.
- 4Move to scheduled execution (Task Scheduler, cron, pipeline runner) after validating logs and behavior.
# Azure (PowerShell)
.\Azure-Start-CloudGrill.ps1 -CsvFilePath"vms.csv"# AWS (PowerShell)
.\AWS-Start-CloudGrill.ps1 -CsvFilePath"vms.csv"# Google Cloud (PowerShell)
.\GCP-Start-CloudGrill.ps1 -CsvFilePath"vms.csv"# Oracle Cloud (Python)
python oci-start-cloudgrill.py vms.csvCSV schedule formats
| Provider | CSV header | Use case |
|---|---|---|
| Azure | VMName,ResourceGroupName,SubscriptionId,StartTime,StopTime | Define VM/instance identifiers with start/stop windows |
| Google Cloud | VMName,Zone,ProjectId,StartTime,StopTime | Define VM/instance identifiers with start/stop windows |
| AWS | InstanceId,Region,InstanceName,StartTime,StopTime | Define VM/instance identifiers with start/stop windows |
| Oracle Cloud | InstanceId,CompartmentId,InstanceName,StartTime,StopTime | Define VM/instance identifiers with start/stop windows |
Schedule logic outcomes
| Scenario | Expected action |
|---|---|
| Current time between start and stop | Start the VM |
| Current time outside the window | Stop the VM |
| Blank start/stop fields | No schedule action (allowed for flexible configs) |
- Use 24-hour time values in the CSV (for example: 08:00, 18:30).
Automation and operations guidance
- Run in read-only/validation mode first if you create a wrapper script for dry-run testing.
- Schedule outside critical maintenance windows while you validate logs and startup dependencies.
- Keep separate CSVs for dev, test, and shared services to reduce blast radius.
- Track failures and skipped actions in logs so teams can fix auth/permission issues quickly.
Timezone and schedule assumptions
Validate server timezone and business-hour assumptions before production use. A correct CSV with the wrong timezone still causes incorrect starts/stops.
Troubleshooting
- If a provider script fails, verify provider CLI/SDK authentication independently before rerunning the scheduler.
- If no actions occur, inspect CSV header format and time values (24-hour format expected).
- If VMs start/stop at unexpected times, confirm the execution host timezone and schedule file assumptions.
Overview
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.csvRecipe Cards (CSV Formats)
Each cloud has its own CSV format - see the recipe card section below
Azure Format
CSV Header:
VMName,ResourceGroupName,SubscriptionId,StartTime,StopTimeExample:
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:00Google Cloud Format
CSV Header:
VMName,Zone,ProjectId,StartTime,StopTimeExample:
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:00AWS Format
CSV Header:
InstanceId,Region,InstanceName,StartTime,StopTimeExample:
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:00Oracle Cloud Format
CSV Header:
InstanceId,CompartmentId,InstanceName,StartTime,StopTimeExample:
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:00Schedule 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-AzAccountGoogle Cloud Setup
Install Google Cloud CLI
# Install Google Cloud CLI
# https://cloud.google.com/sdk/docs/install
# Authenticate
gcloud auth loginAWS Setup
Install AWS CLI
# Install AWS CLI
# https://aws.amazon.com/cli/
# Configure credentials
aws configureOracle Cloud Setup
Install OCI SDK
# Install OCI SDK
pip install oci
# Configure OCI
oci setup configWhy 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 Get Started?
Get your multi-cloud VM scheduling automated with our chef-crafted scripts
What to do next
Pick the path that fits where you are right now.