ミッション ワンコマンドデプロイ

出す、確かめる、戻す

デプロイの部品は揃いました。版を並べる場所、張り替えるリンク、1コマンドで終わる deploy.sh、数秒で戻る rollback.sh

この章の締めくくりは、この3つを一続きの流れとして通すことです。実際の運用は、出して終わりではありません。

  1. 新しい版を出す
  2. 出したものが正しいかを確かめる
  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.shrollback.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コマンドで見られるようにします。

ヒント

  • 1. deploy.sh の最後に /root/bin/healthcheck.sh を呼び、失敗したら exit 1 で止める
  • 2. deploy.sh に、deploy と版の名前を /var/log/deploy.log へ追記する行を足す
  • 3. /root/bin/status.sh を書く。readlink で公開中の版、ls で版の一覧、tail で直近の記録を /root/deploy-status.txt に書き出す
  • 4. chmod +x を付けて status.sh を実行する
  • 5. deploy.sh を実行し、そのあと rollback.sh を実行する
  • 6. /var/log/deploy.log に deploy と rollback の記録が並んでいることを確かめる

13 項目で採点します