LoginSignup
4
6

More than 5 years have passed since last update.

Vagrant カスタムboxの作成(CentOS7 + Virtualbox5.0) 改定版

Last updated at Posted at 2016-04-18

概要

前回の投稿の修正。
ヘッドレスのbox作成は失敗していたが、VirtualBoxのバージョンアップに伴い面倒な作業はなくなった。
以前はMacbook proで作っていたが、壊れてしまったのでUbuntuを用意し試した。一連の操作に差異がないことの確認ができた。

環境

 Boxを作成するために使ったホストOSの環境。

$ lsb_release -d
Description:    Ubuntu 14.04.4 LTS
$ uname -mrs
Linux 3.19.0-58-generic x86_64
$ VBoxManage --version
5.0.16r105871

元になるゲストOSをインストール

 Virutalbox上でゲストOSをインストールする。新規で作成し、名前を"CentOS7"とした。
 カスタムBoxを作るのが目的なので基本的には好きにしていい。ただし、BoxはゲーストOSをアーカイブしてダウンロードすることになるため、最小パッケージがおすすめ。Hashicorpへの公開を前提とすればインターネットを介してダウンロードすることになるので、OSのサイズは小さい方がいい。
 インストールが終わったらゲストOSをshutdownするが、その前に必要なパッケージの追加や設定を行ってもいい。

Virtualboxの設定

以下のようにした。

変更する項目 変更後の値
メインメモリー 512MB
フロッピー 無効
アクセラレーション Legacy
オーディオ 無効
USBコントローラー 無効

その他は初期値のまま。

作業中のネットワーク設定

 SSHでログインしながら以降の操作をやるために、VirutalboxでNetwowkアダプター1の設定を "NAT" から "ブリッジ" に変更する。これをやらないと、ゲストOSから外側のネットワークへはアクセスすることはできても、逆はできない。つまり、ホストOSからゲストOSにSSHでログインすることができないので作業がやりずらくなる。

ゲストOSの設定

パッケージの追加

アップデートしながら使っていこうとする場合、dkmsはあったほうがいい。

yum -y update
yum install epel-release
yum install dkms

vagrantユーザーを追加

ゲストOSにて以下を実行。
インストール時にユーザー"vagrant"を追加していない場合は追加する。

groupadd -g 1000 vagrant
useradd -u 1000 -g vagrant vagrant

また、ユーザーのパスワードが必要な場合はつぎのようにする。
echo "PASSWORD" | passwd user_name --stdin

echo "vagrant" |passwd vagrant --stdin

sudoers の設定

sed -i -e s/^Defaults\ \ \ \ requiretty/#Defaults\ \ \ \ requiretty/g /etc/sudoers
test -f /etc/sudoers.d/vagrant || echo "%vagrant ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/vagrant

ユーザー vagrant のSSH公開鍵を追加する

mkdir -m 700 /home/vagrant/.ssh
mkdir -p /vagrant
chown vagrant:vagrant /home/vagrant/.ssh

echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" > /home/vagrant/.ssh/authorized_keys

chmod 600 /home/vagrant/.ssh/authorized_keys
chown vagrant:vagrant /home/vagrant/.ssh/authorized_keys

Virtualbox additonal CD のインストール

ツールをインストールしないと、"varant up"したときにホストOSとの共有ディレクトリ/vagrantをマウントできない。また、ゲストOS起動時にエラーとなってしまう。

まず、ツールのCDイメージをマウントする。
[Dvice] -> [Instert Guest Additions CD images]

Additional toolsをインストールするためにはツールを再構築しなければいけない。
最小インストールの場合は、つぎのように追加でパッケージをインストールしておく。

yum -y install openssh-clients bzip2 kernel-devel gcc

AdditionalToolのインストール

mount -o loop /dev/sr0 /mnt
/mnt/VBoxLinuxAdditions.run --nox11

この時点で、光学ドライブは有効なままになっているが、今後使う予定がなければ無効にする。

MACアドレスの消去

CentOS7では必要ないはず。
好みがあれば修正する。

cat > /etc/sysconfig/network-scripts/ifcfg-enp0s3 << 'EOF'
・・・
(略)
・・・
EOF

カスタマイズ

パッケージの追加や必要な設定を行う。

ログの消去

配布するBoxサイズを少しでも小さくするために、ログを消去する。
リモートからはできないので、Virtualboxのコンソールから操作。

init 1
find /var/log -type f -exec rm -f {} \;
rm -f /home/vagrant/.bash_history
rm -f /root/.bash_history
history -c
shutdown -h now

boxアーカイブの作成

ここでは、centos7.boxという名でアーカイブを作成する。

cd ${HOME}/VirtualBox\ VMs/
vagrant package --base CentOS7 --output centos7.box

テスト

Boxの登録

vagrant box add test-centos7 centos7.box

作成したカスタムBoxのテスト

mkdir test-dir && cd test-dir
vagrant init test-centos7
vagrant up --provider=virtualbox
vagrant ssh

エラーがなければ終わり。
必要な確認はそれぞれだけど、Additional Toolが正常インストールされていれば、/vagrant がマウントされているはず。

df /vagrant

Boxの公開&&アップロード

パブリックなWebサーバへアップロードすれば、hashicorpで公開できる。

BoxをWebsサーバーへアップロード

認証なしで参照可能なWebサーバーへファイルをアップロード。

scp centos-7_0.0.0.box <yourserver>:/home/saitou/public/.

テスト その2

しつこいけど、もう一回テスト。
もし、Vagrantを使っているPCが2台以上あるなら、ファイルをアップロードしたあとでもう一度テストしておくのがいい。

vagrant box add --name yourid/centos7 http://<yourserver>/~saitou/centos-7_0.0.0.box
mkdir testdir && cd testdir
vagrant init yourid/centos7
vagrant up
vagrant ssh

Hashicorp への公開

デザインがマメに変わるので、Web検索で出てくるスクリーンショットは最新ではない可能性が高い。”場所”で覚えず、何を選択していけばいいのかをよく覚えておくほうがいいでしょう。(次の手順は、2016年1月12日に確認した方法になる。)

ログイン

アカウントがない場合 "Sign up"
アカウントがある場合 "Sign in"

Boxのアップロード

どの項目を選択するか毎回迷う。
"Create VagrantBox with the WebUI" を選択。

Boxの名前をつける

"name" へ任意の名前を入力し、 "Create box"を選択。

Description

いづれも後から変更することができる。

"New Box Version" : 習慣として、 0.0.0 のようにつける。
"Description" : わかりやすい内容を入力。

入力後、 "Create Version" を選択。
この段階ではまだ公開にはなっていない。

Providerの設定

Provider は、仮想マシンを指している。ここでは、 virtualbox を設定する。
また、URLにはBoxをアップロードしたWebサーバへのアドレスを入力する。

http://<yourserver>/~saitou/vagrant/box/virtualbox/centos-7_0.0.0.box

"Create provider" を選択。
この段階でもまだ公開にはなっていない。

公開

この時点では、次のメッセージが表示されているかと思う。

This version was created 12 minutes ago. This version is unreleased. 

unreleased がリンクになっているのでクリック。または、 "Edit" を選択。
次画面で "Released version" を選択。
公開にステータスが変わったはず。

テスト その3

しついけど、またテスト。
確認を兼ねている。

vagrant box add yourid/centos7
mkdir testdir && cd testdir
vagrant init yourid/centos7
vagrant up

見慣れた実行形式になっているでしょう!
ここまででエラー等なければ終わり。

まとめ

 今回、テストを何回もやっているのだけれど、手戻りしないために必要なことなので面倒がらずにやっていただきたい。

Appendix

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