こちらは 本番環境でやらかしちゃった人 Advent Calendar 2022 10日目の記事です。
Ubuntuをアップグレードした少年の物語
僕は新卒エンジニア!
今日はWordpressに入門してみるぞー!
てことで、久々に個人開発で使っているVPSにログインするぞー!
ssh -i id_rsa ubuntu@personal-server
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-131-generic x86_64)
よし。ログイン完了!
あれ、なんかメッセージ出てるな。
New release '22.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
あー、そういえばUbuntuに新しいバージョン出てたな。
この前WSLでアップグレードしたけど特に問題なかったし、アップグレードしておくか。
sudo do-release-upgrade
ポチッ
This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.
If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?
ん?なんだろ。まあいいか。
y
結構時間かかるなあ。夜ご飯でも食べて待ってるか。
...たくさんのメッセージ
System restart required
お、終わってる。再起動させるか。
sudo reboot
ちょっと時間置いてssh接続しよう。
ssh -i id_rsa ubuntu@personal-server
ん?接続できないな。なんでだろ。
🔍 「Ubuntu 22.04 ssh できない」
「ssh-rsa」がデフォルトで無効化されました。
え、待って、rsaの鍵使ってたんだけど。
てか今思い出したけど、普通に先輩に使ってもらってるサービスとかこのサーバーに乗っけてたわ。
しかもDBも同じサーバーで管理してたしバックアップもないぞ?
やばい、どうしよう、、、
この少年の問題点
色々と問題点のある少年ですが、これをやっておけば被害は最小限に済んだというポイントを3つ紹介します。
1. 変更点を事前に確認する
今回で言うとUbuntu 20.04
からUbuntu 22.04
に移行すると何が変わるのかについて調べておくべきでした。
これは「リリースノートを隅々まで見ろ!」という話ではありません。
アップグレードする前に「Ubuntu22.04 変更点」などと調べておけば記事になるような大きな変更を事前に知ることができます。
今回で言うとssh-rsaの無効化などは気付けたはずです。
2. バックアップを取る
もはや取るのが当たり前だとは思いますが、個人開発などでバックアップを取っていないプロダクトもあるかもしれません。
これも「全てのプロダクトでバックアップを自動化しろ!」と言うわけではなく、OSのアップデートなどの大きな変更のあるときだけでもバックアップを取るべきでした。
3.本番サーバーは分ける
当たり前の当たり前ですが、本番サーバー(特にWEBサーバー)はプロジェクトごとに分けましょう。
「一旦このサーバーに置いておこう」で始めてしまうとそのままダラダラ続けてしまいます(体験談)。
終わりに
幸い、先輩に提供していたサービスはデータ消失が大きな問題にはならず、無償で提供していたこともあって和解しました。
もっと責任感を持って開発をしようと今回の事件で気付かされました。
こんな失態を犯す人は中々いないとは思いますが、皆さんもどうかお気をつけください。