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に悩まされずにすみそうです。やったぜ。