Study | SSL証明書更新の自動化設定
SSL証明書更新を自動化する為にSystemdのtimerを使用。
timerを設定する為に以下の2ファイルを作成し、sudo systemctl enable --now certbot.timer
を実行することで定期実行を有効化。
/lib/systemd/system/certbot.service
[Unit]
Description=Let's Encrypt Certificate Renewal
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --agree-tos
ExecStartPost=/bin/systemctl reload nginx
/lib/systemd/system/certbot.timer
[Unit]
Description=Monthly renewal of Let's Encrypt's certificates
[Timer]
OnCalendar=monthly
RandomizedDelaySec=30min
Persistent=true
[Install]
WantedBy=timers.target
[Install]
WantedBy=timers.target
調べた感じ、systemctl enable --now certbot.timer
のように個別で有効化する場合この設定を記述しなくても問題はない。
certbot.timerの設定について深堀り
[Install]
WantedBy=timers.target
↑の設定について。
systemdのtimerユニットファイルにおける[Install]セクションのWantedBy=timers.targetという設定は、タイマーを有効にするために必要となる、systemdのターゲットという仕組みと密接に関連している。
systemdのターゲットとは?
systemdのターゲットは、従来のinitシステムにおけるランレベルに相当するもので、システムの状態やサービスのグループを表す。timers.targetは、アクティブにすべきタイマーユニットをまとめるための特別なターゲット。
WantedBy=timers.targetの役割
この設定は、「このタイマーユニットはtimers.targetによって必要とされます」という意味を持つ。
systemctl enable
コマンドでタイマーを有効化すると、この設定に基づいてタイマーのシンボリックリンクが/etc/systemd/system/timers.target.wants/
ディレクトリ内に作成される。
これにより、システム起動時やsystemctl start timers.target
コマンド実行時に、timers.targetがアクティブになると、関連付けられたタイマーユニットも自動的に起動するようになる。
なぜtimers.targetを使うのか?
タイマーユニットを個別に有効化するだけでなく、timers.targetを介してまとめて管理することで、システムの起動プロセスを効率化し、管理を容易にすることが可能。
特定のターゲットに依存関係を持たせることで、サービスの起動順序やシステムの状態を柔軟に制御できる。
まとめ
WantedBy=timers.target
は、systemdのタイマーを有効化し、システムの起動プロセスに統合するための重要な設定。この設定によって、タイマーはtimers.targetというグループにまとめられ、システムによって自動的に管理されるようになる。