GCPでcronを使ってLet’s Encryptの更新を自動化する

最終更新日:2023‐02-07

ずっとcronが動かないと思っていたのですが、設定の仕方を間違えていました…。

前の記事はこちらです。

cronがActiveか確認する

sudo systemctl status cron

cronを設定する

cronの設定ファイルを作成します。
まずは/etc/へ移動します。

$ cd /etc
$ ls -ltr|grep cron
drwxr-xr-x 2 root root    4096 Feb 16  2021 cron.hourly
drwxr-xr-x 2 root root    4096 Feb 16  2021 cron.weekly
drwxr-xr-x 2 root root    4096 Feb 16  2021 cron.monthly
-rw-r--r-- 1 root root       7 Feb 22  2021 cron.deny
-rw-r--r-- 1 root root    1107 Mar  9  2021 crontab
drwxr-xr-x 2 root root    4096 May 23  2021 cron.daily
drwxr-xr-x 2 root root    4096 May  1 04:46 cron.d

設定ファイルを作成します。ユーザーはrootユーザーでなくても問題ありません。

$ sudu vi ./cron.d/lets_encrypt

編集後のファイルはこのような感じです。

*/1 * * * * echo 'hello cron' >> /opt/bitnami/renew-certificate.log 2>&1

この設定で「hello cron」という文字列がログに出力されることを確認します。ちなみに先頭を「1」とだけ設定すると、毎時間の1分に起動という意味になります。(毎分にならないので注意です。勘違いして全然出力されない…と思っていました。)

cronの設定は左から、「分 時 日 月 曜日」となります。

毎月 1日の3:00に起動したい場合は以下のようになります。

$ cat ./cron.d/lets_encrypt
0 3     1 * *  sudo bash /opt/bitnami/renew-certificate.sh >> /opt/bitnami/renew-certificate.log 2>&1

これで証明書の更新に手を煩わせることもなくなりました。