Aukera is a tool developed at Google for scheduling maintenance windows discoverable via a local API.
Aukera was written with the following goals in mind:
Maintenance windows are configured and consumed as JSON. This allows engineers to leverage source control systems to maintain window definition. By keeping maintenance window configs in source control, we gain peer review, change history, rollback/forward, and all the other benefits normally reserved for writing code.
Aukera is capable of consuming multiple maintenance window configurations. This allows engineers to define windows pertinent to their service without conflicting with platform-specific maintenance.
Aukera provides a local API for querying for schedules individually or holistically. Schedule calculation happens when requested, making it possible for configuration changes to be reflected in the JSON response immediately afterward.
Aukera consumes window configurations from JSON files stored in its
configuration directory (%ProgramData%\Aukera\conf on Windows,
/etc/aukera on Linux):
{
"Windows": [
{
"Name": "monthly_patching",
"Format": 1,
"Schedule": "CRON_TZ=America/New_York 0 17 * * Tue#2",
"Duration": "4h",
"Labels": ["patching"]
}
]
}Format 1 schedules support standard 6-field CRON expressions (with seconds
first), as well as Quartz-style # notation (<weekday>#<occurrence> or
<weekday>#L) in the day-of-week field for recurring monthly schedules (e.g.
Patch Tuesday). When using # expressions, standard 5-field crontab syntax is
also accepted (seconds default to 0). Expressions may optionally include a
TZ= or CRON_TZ= timezone prefix.
Examples:
0 17 * * Tue#2— 2nd Tuesday of the month at 17:00 (Patch Tuesday)0 0 18 * * Fri#L— Last Friday of the month at 18:00:00CRON_TZ=America/New_York 0 17 * * Tue#2— 2nd Tuesday at 17:00 America/New_York time0 30 14 * * 6— Every Saturday at 14:30:00 (standard 6-field CRON)
Schedules can be queried via the local HTTP API (GET /schedule or
GET /schedule/{label}).
Pre-compiled binaries are available as release assets.
Building Aukera manually:
- Clone the repository
- Install any missing imports with
go get -u - Run
go build C:\Path\to\aukera\src
Aukera is maintained by a small team at Google. Support for this repo is treated as best effort, and issues will be responded to as engineering time permits.
This is not an official Google product.