LoginSignup
1
2

More than 1 year has passed since last update.

ubuntuにvagrantを入れてsnapshot

Posted at

オンプレサーバに色々構築してたが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}}とでもすれば切り戻せる環境が手に入った。ただホスト側がマウントされてるところを下手にいじると復元できないことも同時にわかった。過信しすぎずほどほどに利用してきたい。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2