オンプレサーバに色々構築してたが1箇所トラブって全てがダメになった。
二度とそうなってほしくないので仮想化しスナップショットから容易に回復させる目的でvirtualbox+vagrantを利用する。
前提として下記記事の環境に構築していく
https://qiita.com/strawbeRinMilk/items/e19655e69f1f9d3ec2f7?utm_campaign=post_article&utm_medium=twitter&utm_source=twitter_share
インストール
sudo apt install virtualbox -y
sudo apt install vagrant -y
Vagrantfileの作成
vagrant init ubuntu/focal64
起動してみる
vagrant up
sshで入ってみる
ssh vagrant@localhost -p 2222
これは弾かれる。どうやら秘密鍵を新しく生成してデフォルトでパスワード認証は弾く設定のよう。
ssh -i .vagrant/machines/default/virtualbox/private_key vagrant@localhost -p 2222
これで入れた。
スナップショット
スナップショットを試すためにダミーのファイルを作成してみる。
touch hoge
$ ls
hoge
一旦ログアウト
exit
シャットダウン
vagrant halt
スナップショットを撮ってみる
vagrant snapshot save testsnapshot1
確認
$ vagrant snapshot list
==> default:
testsnapshot1
起動する
vagrant up
ダミーファイルを追加
$ ls
hoge
$ touch fuga
$ ls
fuga hoge
exit
vagrant halt
これでtestsnapshot1とは違う状態になった。
fugaがない状態に復元してみる。
vagrant snapshot restore testsnapshot1
sshで入るときちんとfugaが消えていた。
$ ls
hoge
セキュリティ設定
sshのPasswordAuthenticationはデフォルトでnoになっていた
PermitRootLoginは初期値なのでnoにする
ポートも変えてもいいかもしれない(今回は変えない)
ufwはsshをallowしてenableする
余談 rm -rf /
せっかくなので禁断のコマンドを実行してみる
sudo rm -rf / --no-preserve-root
10秒くらいで終わった。意外とあっさり。
$ ls
-bash: /usr/bin/ls: No such file or directory
んー致命的。でもcd /
はできた。なんで?
ホストに戻ったらこんな状況に。
$ exit
logout
Connection to localhost closed.
$ vagrant halt
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or,
get an ID of a target machine from `vagrant global-status` to run
this command on. A final option is to change to a directory with a
Vagrantfile and to try again.
$ ls
なんとホストのVagrantfileが消えてる。
後から調べたらどうもvagrant側の/vagrant/Vagrantfileにマウントされていたらしい。そりゃ消えるわ。
リストアもできない。
vagrant init
しなおして vagrant up
したらsshポートが2200で立ち上がった。
さっきの絶対ゾンビになってる
余計なことしたとめちゃくちゃ後悔してる
ホストをrebootしてvagrant destroy default
ディレクトリもrmして作り直した。
init && up したらsshポート2222で新しいのが立ち上がった。
当然hogeやらfugaやらは消えている
まとめ
破壊的な操作をする前にvagrant halt
してvagrant snapshot restore {{timestanp}}
とでもすれば切り戻せる環境が手に入った。ただホスト側がマウントされてるところを下手にいじると復元できないことも同時にわかった。過信しすぎずほどほどに利用してきたい。