ミッション ワンコマンドデプロイ
出す、確かめる、戻す
デプロイの部品は揃いました。版を並べる場所、張り替えるリンク、1コマンドで終わる deploy.sh、数秒で戻る rollback.sh。
この章の締めくくりは、この3つを一続きの流れとして通すことです。実際の運用は、出して終わりではありません。
- 新しい版を出す
- 出したものが正しいかを確かめる
- おかしければ戻す
2 が抜けている運用が、いちばん多い失敗です。出したことは分かっても、出したものが正しいかは誰も見ていない。訪問者からの連絡で初めて気づく、という状態になります。
出したあとに自分で確かめさせる
6章で作ったヘルスチェックが、そのまま使えます。デプロイの最後で1回呼べば、出した直後の状態を判定できます。
if ! /root/bin/healthcheck.sh; then
echo "デプロイ後の確認に失敗しました"
exit 1
fi! は結果をひっくり返す指定です。失敗したときだけ中に入ります。
さらに踏み込むなら、判定に失敗したら自動で戻すこともできます。
if ! curl -skf --max-time 5 https://localhost/ > /dev/null; then
/root/bin/rollback.sh
fi自動で戻すかどうかは、慎重に決める必要があります。判定の作りが甘いと、正常なのに戻ってしまい、しかも戻ったことに誰も気づきません。判定が確かなうちは、止めて知らせるだけに留めるほうが安全です。
記録を1か所にまとめる
deploy.sh も rollback.sh も、何をしたかを /var/log/deploy.log に残します。同じファイルに集めることで、時系列で読めるようになります。
2026-08-08 10:15:00 deploy 20260401-101500
2026-08-08 10:22:31 rollback 20260401-101500 -> 20260807-093000この2行が並んでいれば、7分で気づいて戻したことが後から分かります。障害の記録は、その場の記憶より後の判断のために残します。
いま何が動いているかを1コマンドで
最後に、状況をまとめて見る手段を用意します。公開中の版、版の一覧、直近の記録。この3つが1度に見えれば、朝いちばんの確認が数秒で済みます。
6章の monitor-report.sh と同じ考え方です。見る場所を増やさない。増やした場所は、そのうち見られなくなります。
手を動かす
デプロイの最後に自分で確認させ、記録を1か所に集め、いまの状態を1コマンドで見られるようにします。