LoginSignup
6
3

More than 5 years have passed since last update.

自作したVagrantのboxから新たなboxを作る

Last updated at Posted at 2016-12-23

以前自作したVagrantのboxのOSやパッケージを更新し、新たなboxを作る。

環境

Vagrant、VirtualBoxが動く環境は、macOS Sierra。

Vagrantのバージョンは1.9.1。

$ vagrant --version
Vagrant 1.9.1

VirtualBoxのバージョンは5.0.30。

$ VBoxManage -v
5.0.30r112061

この環境で、以前自作したCentOS 7.1のboxからCentOS 7.3のboxを作成する。

OSの起動

CentOS 7.1のVMを起動するための環境を作る。

$ vagrant init CentOS-7.1-x86_64-minimal-ja-20150521

Vagrantfileの編集

起動前にいくつかの設定を追加、変更する。

VMの名称を指定する

この名称は、boxを作成するときに必要になる。

config.vm.provider :virtualbox do |vbox|
  vbox.name = "centos71-update"
end

VirtualBox VMのコンソールを開くようにする

VirtualBox Guest AdditionsのCDをマウントするために、起動時にコンソールが開くようにする。

config.vm.provider "virtualbox" do |vb|
  # Display the VirtualBox GUI when booting the machine
  vb.gui = true

  # Customize the amount of memory on the VM:
  # vb.memory = "1024"
end

shared foldersのマウントを無効にする

初期設定ではVagrantfileがあるディレクトリが共有フォルダとしてマウントされる。

$ vagrant up

...

==> default: Mounting shared folders...
    default: /vagrant => /Users/te2u/misc/vagrant/centos71-update

...

カーネルを更新したときは共有フォルダのマウントに失敗するため、あらかじめ無効にする。

config.vm.synced_folder ".", "/vagrant", disabled: true

パッケージ更新

VM起動後、vagrantアカウントでログインする。

$ vagrant ssh

ログインしたら、yumコマンドでパッケージを更新する。

$ sudo yum update -y

更新したら、OSを再起動する。

$ sudo shutdown -r now

VirtualBox Guest Additionsの更新

VirtualBox VMのコンソールをクリックして、メニューで

[Devices] > [Insert Guest Additions CD image...]

の順に選択し、VMにCDがセットされた状態にする。

そのあと、vagrantアカウントでログインし

$ vagrant ssh

CDをマウントしてGuest Additionsを更新するスクリプトを実行する。

$ sudo mount -r /dev/cdrom /media/cdrom
$ sudo sh /media/cdrom/VBoxLinuxAdditions.run

終了したらCDを取り出す。

$ sudo umount /media/cdrom

vagrantアカウントの公開鍵の変更

vagrantアカウントの公開鍵を所定のものに変更する。

この公開鍵にしておくと、VagrantがVMの初回起動時に、自動でより安全な公開鍵へ変更する。

$ rm ~/.ssh/authorized_keys
$ curl -k -L -o ~/.ssh/authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
$ chmod 600 ~/.ssh/authorized_keys

udevのルールの削除

VMを起動したときにネットワークデバイスのエラーが起きるのを避けるため、udevのルールを削除する。

sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
sudo rm -rf /dev/.udev/
sudo rm -f /lib/udev/rules.d/75-persistent-net-generator.rules

box作成のための調整

作成するboxのサイズをできる限り最小にするために行う。

yum clean

sudo yum clean all

フラグメンテーションの解消

boxの圧縮効率を上げるために行う。

sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm -f /EMPTY

シャットダウン

VMをシャットダウンする。

sudo shutdown -h now

boxの作成と登録

boxを作成する。centos71-updateはVagrantfileの編集のときに設定したVMの名称。

vagrant package --base centos71-update

作成されたboxのサイズは700Mほど。

$ du -sh package.box
700M    package.box

作成したboxをVagrantに登録する。

vagrant box add --name CentOS-7.3-x86_64-minimal-ja-20161223 package.box

確認

確認用のディレクトリを作成して、先ほど作成したboxからVMを起動する環境を作る。

$ mkdir centos73
$ cd centos73
$ vagrant init CentOS-7.3-x86_64-minimal-ja-20161223

そして、VMを起動する。

$ vagrant up

ターミナルに表示されるログから、sshの公開鍵が変更されること、shared foldersが設定されることを確認する。

起動後、sshでvagrantアカウントにログインできることを確認する。

$ vagrant ssh

最後に、OSのバージョンが更新されていることを確認する。

$ cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

参考

6
3
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
6
3