I recently worked on a feature missing on GCP: a start stop scheduler for my GCP instances based on labels. I was first excited about using Cloud functions, but it seemed App Engine was the way to go for several reasons: it supports python and the task scheduling feature is already embedded.
I had a few requirements:
- Ability to schedule start and stop of GCE instances every hour
- Extra options to run only during working days or weekends, default is every day
- It must work across all projects inside an organisation if you give the right permissions to your default App Engine service account
- Inexpensive to run (or free), who wants to pay for a feature that should be available by default in the cloud?
- According to https://cloud.google.com/free/docs/always-free-usage-limits you should have 28 instance hours of App Engine Standard free per day.
- If you are already using App Engine for something else, the script is easy to merge with your application code.
- If you don’t want to use App Engine, the python code can be executed from any other machine with the right credentials, even your laptop if not critical.
To deploy the solution, please follow the instructions from the following repository: https://github.com/pchapotet/gcp-start-stop-scheduler
Once it is installed, simply add a few tags to your instances and enjoy the automation! You can run it only during working days (Monday to Friday) with ‘d’ option and during weekend (Saturday and Sunday) with ‘w’ option. Feel free to comment and raise Github issues if you see anything to improve.