certbot renewでのSSL/TLS証明書更新でrandom sleepを無効にする

certbot renew コマンドを cron で自動実行されるよう設定していたのですが、うまく実行できていないようでした。

cron のログなど調べていたところ、random sleep なる機能が原因で実行されなかったことに気づきました。

Certbot の random sleep 機能について

最近の certbot は random sleep という機能が実装されています。

コマンド実行後、ランダムで算出された時間分、処理を遅らせて実行する機能です。

これがそこそこ長く(100~500s くらい)、cron でタイムアウトしてしまったと推測しています(軽く調べたが cron のデフォルトのタイムアウト時間が分からず、別の原因の可能性もある)。

解決策

certbot の random sleep を無効にするか、cron の timeout を長めに設定すれば OK ですね。

# random sleepを無効にしてcertbot renewを実行
certbot renew --no-random-sleep-on-renew
# cronでtimeoutを設定(1000s)
30 *  *  *  * timeout 1000 hogehoge.sh

まとめ

これで random sleep に悩まされずにすみそうです。やったぜ。