orion
anderson

Scheduled Reboots with Systemd

I wanted to schedule reboots of my machine running Container Optimized OS on Google Cloud, since that is the intended way to pull in automatic updates.

The snippet below uses systemd to schedule a reboot on the first Tuesday of every month at 03:33 local time (Chicago). It will also log boots to a file so you can see when a reboot took place. In my case, this is located in my instance template user-data.

#cloud-config
- path: /etc/systemd/system/sched-reboot.service
  permissions: '0644'
  owner: root
  content: |
    [Unit]
    Description=Scheduled Reboot

    [Service]
    Type=simple
    ExecStart=/usr/bin/systemctl --force reboot

- path: /etc/systemd/system/sched-reboot.timer
  permissions: '0644'
  owner: root
  content: |
    [Unit]
    Description=Reboot Scheduling

    [Timer]
    OnCalendar=Tue *-*-1..7 03:33:33

    [Install]
    WantedBy=multi-user.target

runcmd:
- timedatectl set-timezone America/Chicago
- echo -e $(date '+%a %F %H:%M %Z') >> /var/log/boot.log
- systemctl daemon-reload
- systemctl start sched-reboot.timer