GNOME入りCentOS7のカスタムVagrant Boxファイル作成
CentOS7に開発系のツールを入れてGNOME上で作業している環境をVagrant向けにBox化した時の手順です。
かなりサイズがでかいのでVagrant向きでもないですが、メンテナンスを統一しておきたかったのであえて作成しました。
今回CentOS7はインストール済みで、自分が必要と思ったパッケージのみを導入後にオリジナルのBoxファイルを作成し、vagrantに展開して起動するところまでを一気に書きます。
この作業自体ググればいろいろ解説があるのですが、ここにでは自分専用(自分が作業した分だけ)の解説のみにとどめます。
実際作業してみて不足しているところは他のサイトを参考にして適当に作業してください。
sshの設定
$su - vagrant
$mkdir .ssh
$chmod 700 .ssh
$cd .ssh
$curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
$chmod 600 authorized_keys
$cd
$chown -R vagrant.vagrant .ssh
$exit
sudoの設定
$su -
#visudo
%wheel ALL=(ALL) ALL #wheelグループのユーザはsudo可能にする。
%vagrant ALL=(ALL) NOPASSWD: ALL #vagrantユーザはパスワードなしでsudo可能とする。exit
VirtualBox Guest Additionsのインストール
VirtualBoxの「デバイス」→「Guest Additions CDイメージ挿入...」を選択しイメージをマウントしてから下記コマンドでインストールします。
$cd /run/media/YOURNAME/VBox_GAs_x.x.x # YOURNAMEはLinuxの作業ユーザ
$sudo ./VBoxLinuxAdditions.run
cd
終わったらディスクを取り出してください。
Box化のための最適化作業
$sudo yum clean all
$sudo dd if=/dev/zero of=/EMPTY bs=1M
$sudo rm -f /EMPTY
ここまで完了したらOSシャットダウンします。
vbguestプラグインのインストール
作業はほぼ完了ですがVirtualbox更新時にGuest Additionsをvagrantで更新できるようにプラグインをインストールします。
vagrant plugin install vagrant-vbguest
Boxファイル作成と作成したファイルの登録
vagrant package --base VirtualBox上の仮想マシン名 --output 出力先Boxファイルパス(1)
vagrant add --name c7gui 上記で作成したBoxファイル(1)
vagrant box list
c7guiというBox名が登録されているはずです。
Vagrantfileの作成
vagrant init
Vagrantfileの編集
適当なエディタで開いて次のように修正しました。
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "c7gui" config.vm.provider "virtualbox" do |vb| vb.gui = true #GUIを有効にする。 vb.cpus = 4 vb.memory = "8192" end config.vm.synced_folder "D:\\shared_folder", "/media/sf_vbox_sahre" end
仮想マシン起動と接続
vagrant up
vagrant ssh
sshで接続しましたがvb.gui = trueなのでVirtualboxのコンソールが起動すると思います。定義済みユーザでログインしてエラーがないとか確かめましょう。
Guest Additionsの自動更新をOFFにしておく
最後に、一通りの設定は終わりですが、今のままだとvagrant upしたときにGuest Additionsが自動で更新されてしまいます。実際勝手に更新されてよくわからんエラーが出たとか嫌ならばVagrantfileに次の定義を追加して自動更新をOFFにしておきます。
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "c7gui" ... config.vbguest.auto_update = false config.vbguest.no_remote = true end
vagrant vbguestによるGuest Additions更新については、コマンドのヘルプ(vagrant vbguest --h)で確認できます。
以上