GNOME入りCentOS7のカスタムVagrant Boxファイル作成

CentOS7に開発系のツールを入れてGNOME上で作業している環境をVagrant向けにBox化した時の手順です。
かなりサイズがでかいのでVagrant向きでもないですが、メンテナンスを統一しておきたかったのであえて作成しました。
今回CentOS7はインストール済みで、自分が必要と思ったパッケージのみを導入後にオリジナルのBoxファイルを作成し、vagrantに展開して起動するところまでを一気に書きます。

この作業自体ググればいろいろ解説があるのですが、ここにでは自分専用(自分が作業した分だけ)の解説のみにとどめます。
実際作業してみて不足しているところは他のサイトを参考にして適当に作業してください。

パッケージインストール


$su -
#yum -y update
#yum -y install epel-release
#yum -y install kernel-devel

vagrantユーザの設定


#useradd -m vagrant
#passwd vagrant
#usermod -G wheel vagrant
#exit

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)で確認できます。

以上