Debian wheezy(Debian 7.4)のVagrant Boxを作成する
基本的な手順はCreating a Base Box - Vagrant Documentationを参照。
Debuan wheezyのインストールイメージを取得
- amd64版のnetinst CDをダウンロード。
- Debian -- Network install from a minimal CD
VirtualBoxでVMを作成(Debianのインストール)
仮想マシン作成時のポイントとしては、
- VM作成時の名前はなんでもOK。最終的なBox名とは関係がない(ここではdebian_wheezy_x64とした)
- オーディオとUSBコントローラを無効化(Vagrant推奨)
- メモリは512MBにする(Vagrant推奨)
- 仮想ディスクはvmdkにする(これがVagrant界隈では普通っぽい)
となる。ただ、自分の好みの問題(どうせ後から増やすので)、メモリは1024MBとした。あと、仮想ディスクは、とりあえず可変32GBにしておいた。その他のVirtualBox上の設定は初期設定のまま。
次に、Debianインストール時の設定だが、
- 日本語環境向けに色々選択
- rootパスワードは vagrant にする
- ログインアカウントに vagrant(パスワードは vagrant)を作成
- 初期インストールパッケージは「標準システムユーティリティ」と「SSHサーバ」のみを選択
ぐらいしか気にするところはなかった。
VirtualBox NATを仮設定
Debianをインストールが完了した時点でSSH接続できる。初期セットアップ時の作業が楽になるので、暫定的にSSH接続できるようにVirtualBoxのNATを変更する。とりあえず、次のように設定した。
GRUBの設定
VMを起動するたびにブートローダが表示されても邪魔くさいので、表示しないようにする。
/etc/default/grub を次のように設定する。
GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX=""
設定ができたら、
$ update-grub
grub2 - How do I hide the GRUB menu showing up in the beginning of boot? - Ask Ubuntu
パッケージのアップデート
念のためアップデートする。netinst CDを利用しているので、たぶん更新はないはず。
$ apt-get update $ apt-get upgrade
VirtualBox Guest Additionsのインストール
まずはVirtualBox側でGuest Additonsのインストールメディアをマウントする。
操作ができたら、次のコマンドを実行してインストール。
$ mount /media/cdrom $ sh /media/cdrom/VBoxLinuxAdditions.run
IPv6無効化
Vagrant環境では使うことはないのでOFFにする。
/etc/sysctl.conf の末尾に次を追加。
net.ipv6.conf.all.disable_ipv6 = 1
設定を反映する。
$ sysctl -p
sudoの設定
Vagrantの設定要件として、パスワード無しのsudoを設定する必要がある。
まずはsudoのインストール。
$ apt-get install sudo
sudoをインストールしたら、vagrantユーザ用に設定を追加する。
$ visudo
で、エディタが開くので、末尾に以下を追加。
vagrant ALL=(ALL) NOPASSWD: ALL
SSHの設定
とりあえず、Vagrantのマニュアルでは、sshdの設定で「UseDNS no」にしておくべし(どうせローカルからしか繋がないので)と書いてあるので、それに従う。
/etc/ssh/sshd_configを開いて、次を末尾に追加する。
UseDNS no
普通にsshdを設定すると、ここで「PermitRootLogin no」を書きたくなるけど、他のイメージを確認したら、yesのままにしてあった。
手順を簡略化するために、vagrantユーザで次のコマンドを実行する。
$ cd ~ $ mkdir .ssh $ cd .ssh $ wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub $ mv vagrant.pub authorized_keys $ chmod 600 authorized_keys $ chmod 700 .
MTAの停止(任意)
デフォルトでMTA(exim4)がインストールされて、自動でサービスが起動するようになってるっぽいので、気になる場合は止める。
$ update-rc.d -f exim4 remove
Puppet/Chefのインストール(任意)
必須ではないが、入れておいて損はない。
Puputをインストール。
$ apt-get -y install puppet puppetmaster
Chefをインストール。
$ apt-get -y install chef
インストール時にChef Clientの接続先の設定を聞かれるので、空欄のまま無視で良い。Chefのインストールが終わったら、Chef Clientのサービスを停止しておく。
$ /etc/init.d/chef-client stop $ update-rc.d -f chef-client remove
追加で色々インストール(任意)
お好きな物入れてください。とりあえずVimとGitあたりは入れといた方が無難っぽいので入れた。あと、curlもよく使うので入れる。
$ apt-get -y install vim git curl
あと、私はWindowsで使う前提で、SharedFolderを使う時に問題がある(VirtualBoxのShared Folderが遅すぎるのでどうにかする(Windows向け) - terurouメモ)ので、sambaもインストールした。
コマンド履歴の削除(任意)
なんとなくコマンド履歴が残っているのが嫌なのでクリアする。
$ export HISTSIZE=0 $ rm .bash_history
Vagrant用のBoxを作成
ホスト側で次のコマンドを実行する。前述の手順で一時的に設定NATテーブルは、vagrantが自動的に消してくれるので、気にしなくてもよい。
まずはパッケージを作成する。vagrant packageコマンドのVM名は ~/VirtualBox VMs に存在するディレクトリ名を指す。
$ vagrant package --base debian_wheezy_x64
これでカレントディレクトリに package.box が作成される。ここから先は普通にVagrantを操作するのと変わらない。
$ vagrant box add my-box package.box $ vagrant init my-box $ vagrant up