MacBookを使うシステム管理者として時々困ることは、WindowsとLinux(Redhat系)しかサポートしていないGUIアプリケーションを使わなければならなくなった時です。そんな機会は稀ですが、そういうニーズが本当にたまにあります。そんな時のためのVagrantfileがこちら。
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
$script = <<SCRIPT
yum -y groupinstall "GNOME Desktop"
systemctl set-default graphical.target
systemctl start graphical.target
SCRIPT
Vagrant.configure(2) do |config|
config.vm.box = "bento/centos-7.2"
config.vm.provider "virtualbox" do |v|
v.memory = "2048"
v.gui = true
v.customize ["modifyvm", :id, '--audio', 'coreaudio', '--audiocontroller', 'ac97']
v.customize ["modifyvm", :id, '--vram', '256']
end
config.vm.provision "shell", inline: $script
end
ユーザとパスワードはどちらもvagrantです。デスクトップ環境のインストールが済んだ後はライセンスに同意する手順を踏まなければなりませんが、GUIなのでnext
、next
で簡単に済みます。
カーネルアップデート後のVirtualBox Guest Additionsについて
初回のyum update
にはカーネルのアップデートがつきものですが、カーネルのバージョンが変わるとVirtualBox Guest Additionsが使えなくなってしまいます。そうなるとデスクトップのウィンドウサイズの調節が出来なくなってしまうので、そんな時はvagrant-vbguestを使うか、もしくはvagrant ssh
でVMにログインして下記のスクリプトを実行すると大丈夫です。
#!/bin/bash
set -e
yum -y install gcc kernel-devel
wget http://download.virtualbox.org/virtualbox/5.1.0_RC1/VBoxGuestAdditions_5.1.0_RC1.iso
sudo mount VBoxGuestAdditions_5.1.0_RC1.iso /mnt -o loop
sudo /mnt/VBoxLinuxAdditions.run
sudo umount /mnt
rm VBoxGuestAdditions_5.1.0_RC1.iso
sudo yum clean all
sudo reboot
イメージを保存する
イメージのアップデートが完了したらそのイメージをローカルに保存することをお勧めします。そうしておけばvagrant destroy
後にまたイチからイメージを作り直す必要がなくなります。
## Step 1. ひとまずsshキーをデフォルトに戻します。こうしておくと新規に
## vagrant upした時にVagrantが新しい鍵でリセットしてくれます。
$ vagrant ssh
$ wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -N -O .ssh/authorized_keys
$ exit
## Step 2. ローカルのvagrant boxとして保存します。
$ VBoxManage list vms
$ vagrant package --base <イメージのフルネーム> --output /tmp/centos-7-desktop.box
$ vagrant destroy
$ vagrant box add centos-7-desktop /tmp/centos-7-desktop.box
$ rm /tmp/centos-7-desktop.box
NOTE: Step 1でsshキーをデフォルトに戻しておかないと、新しいboxで作ったVMに
vagrant ssh
できなくなります。
ローカルに保存した後のVagrantfile
アップデート後のイメージをvagrant box
として保存した後は下記のVagrantfileで気軽にCentOS 7のデスクトップイメージを立ち上げることができます。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "centos-7-desktop"
config.vm.provider "virtualbox" do |v|
v.memory = "2048"
v.gui = true
v.customize ["modifyvm", :id, '--audio', 'coreaudio', '--audiocontroller', 'ac97']
v.customize ["modifyvm", :id, '--vram', '256']
end
end
こういうイメージが手元にあると、ときどき便利です。