CentOS
vagrant

Vagrant box 作成手順(CentOS 6.7)

More than 3 years have passed since last update.

Vagrant で利用する box ですが、基本的に box は以下のサイトで提供されています。

ATLAS

Vagrantbox.es

提供されている box は手軽に利用できますが、今回は自分用のまっさらな box 環境が欲しかったので、その作成備忘録です。

作成する box の OS は CentOS 6.7 になります。


環境情報

今回の作業環境は以下の通りです。


  • Windows 7 (64bit / Pro)

  • VirtualBox 5.0.14

  • Vagrant 1.8.1


ISO ファイル準備

Download CentOS Linux ISO images から CentOS-6.7-x86_64-minimal.iso をダウンロードします。1


仮想マシンの作成


仮想マシンの新規作成

VirtualBox上に新規に仮想マシンを作成します。

名前とオペレーティングシステム


  • 名前:適当に(今回は CentOS-6.7-x86_64 にしました)。

  • タイプ:Linux

  • バージョン:Red Hat (64-bit)

メモリーサイズ


  • 適当に(今回は 512MB にしました)。

ハードディスク


  • 「仮想ハードディスクを作成する」にします。

WS000000.JPG

「作成」ボタンをクリックすると、「仮想ハードディスクの作成」ダイアログが表示されます。

ファイルの場所


  • 適当に。

ファイルサイズ


  • 適当に(今回は 8GB にしました)。

ハードディスクのファイルタイプ


  • VDI (VirtualBox Disk Image)

物理ハードディスクにあるストレージ


  • 可変サイズ

WS000001.JPG


仮想マシンの設定変更

作成した仮想マシンに追加で以下を設定します。

ストレージ


  • 「 コントローラー:IDE」⇒「空」を選択し、「属性」⇒「光学ドライブ」の右側のアイコンをクリックします。「仮想光学ディスクファイルを選択」をクリックし、ダウンロードした ISO ファイルを選択します。

WS000002.JPG

オーディオ


  • 「オーディオを有効化」のチェックを外します。

WS000003.JPG

ネットワーク


  • 「アダプター 1」の「割り当て」に「NAT」が設定されていることを確認します。

  • 「高度」を展開し、「ポートフォワーディング」をクリックします。

WS000004.JPG

右端のアイコンから以下のルールを追加します。


  • ホストポート:2222

  • ゲストポート:22

  • 他はデフォルトで。

WS000005.JPG

※一時的なSSH用接続ポートの設定です。

USB


  • 「USB コントローラーを有効化」のチェックを外します。

WS000006.JPG


OS インストール

仮想マシンが作成できたので、OS をインストールします。

対象の仮想マシンを選択し、起動します。

起動画面


  • 「Install or upgrade an existing system」を選択します。

  • 「Disc Found」ダイアログが表示されるので、「Skip」を選択します。

※起動時のメモリサイズが小さいと CUI のインストーラーが起動します(今回はCUIモードでのインストールです。)。

CentOS


  • 「OK」を選択します。

Language Selection


  • 「English」が選択されていることを確認します。

Keyboard Selection


  • 上下ボタンで「jp106」を選択し、左右ボタンで「OK」を選択します。

[Warning] Error proccessing drive


  • ハードディスクのエラーが表示されますが、初期化するため「Re-initialize」を選択します。

Time Zone Selection


  • 「System clock uses UTC」にチェック(*)が入っていることを確認します。

  • 「Asia/Tokyo」を選択します。

Root Password


  • root のパスワードは「vagrant」を設定します。

  • 「Weak Password」でパスワードが弱いことを指摘されますが、「Use Anyway」を選択し続行します。

Partitioning Type


  • 「Use entire drive」を選択します。

  • sda (インストール先ドライブ)が選択されていることを確認します。

  • 「Writing storage configuration to disk」が表示されるので、「Write changes to disk」を選択して設定内容をハードディスクに書き込みます。

Package Installation


  • インストールが開始されるので完了を待ちます。

  • minimal 版の為、パッケージの選択はありません。

  • パッケージインストール完了後、「Reboot」を選択し再起動します。

  • 再起動後、root ユーザでログインします。

WS000007.JPG


OS 設定変更

OS のインストールが完了したので、box 作成用に設定を行います。


ネットワークの有効化

OS 起動時にネットワークカードが有効化されないので、自動起動するように設定します。

※以降、コマンドのプロンプトは「$」ですが、作業ユーザは root となります。


eth0の自動起動

# 設定ファイルを開きます。

$ vi /etc/sysconfig/network-scripts/ifcfg-eth0

# 以下の項目を変更します。
ONBOOT=yes

# Network デーモンを再起動します。
$ service network restart

# eth0 の項目があることを確認します。
$ ifconfig



ssh でのログイン

ここからは普段使用している ssh クライアント(Teraterm、PuTTY等)を使用して作業します。

「仮想マシンの設定変更」で設定したポートフォワーディングの設定に従い、ssh接続を行います。


  • 接続先ホスト名(IPアドレス): localhost (127.0.0.1)

  • 接続先ポート:2222

  • 接続タイプ:SSH

WS000008.JPG

※Teraterm での接続確認


ユーザの作成

vagrant 用のユーザを作成します。


vagrantユーザの作成

# ユーザの作成 (wheel グループに参加します)

$ useradd -g wheel vagrant

# ユーザの作成の確認
$ id vagrant
uid=500(vagrant) gid=10(wheel) 所属グループ=10(wheel)

# パスワードの設定 (vagrant ユーザのパスワードを vagrant に設定します)
$ passwd vagrant



ssh の設定

vagrant ユーザのSSH鍵設定を行います。


SSH鍵設定

# SSH ディレクトリの作成と設定

$ mkdir /home/vagrant/.ssh
$ chmod 700 /home/vagrant/.ssh

# vagrant で公開されている Insecure Keypair(安全でないキーペア) のダウンロード
# 今回は開発用のため、こちらのキーペアを利用します。
# -k:SSL証明書の警告を無視、-L:リダイレクト先に再接続、-o:ファイル名を指定して保存
$ cd /home/vagrant/.ssh
$ curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'

# ダウンロードした公開鍵の権限設定
$ chmod 600 /home/vagrant/.ssh/authorized_keys
$ chown -R vagrant:wheel /home/vagrant/.ssh


※Insecure Keypairについて 2

sshd の設定も行います。


sshd設定

# 設定ファイルを編集します。

$ vi /etc/ssh/sshd_config

# 以下の項目を変更します。
# SSH接続速度向上のため。
UseDNS no

# sshdデーモン再起動
$ service sshd restart


SSHクライアントを別で起動し、接続確認をしておきましょう。


sudo の設定

sudoコマンドの設定です。

※box 起動時(vagrant up)に利用されます。


sudo設定

# 設定ファイルを編集します。

$ visudo

# tty 無しでの実行を許可します。以下の項目のようにコメントアウトします。
# Defaults requiretty

# wheel グループ参加のユーザが sudo コマンドをパスワード無しで実行できるように設定します。
# 以下の項目のようにアンコメントします。
%wheel ALL=(ALL) NOPASSWD: ALL


vagrant ユーザになってsudoの実行を確認します。


sudo実行確認

# vagrant ユーザに変更します。

$ su - vagrant
# sudo コマンドを利用して /root ディレクトリを表示します。
$ sudo ls /root


selinux の無効化

開発環境のため、selinux は無効化します。


selinux無効化

# 設定ファイルを編集します。

$ vi /etc/sysconfig/selinux

# 以下の項目を変更します。
SELINUX=disabled

# 再起動をして設定を反映します。
$ shutdown -r now

# 再起動後、以下のコマンドを実行して確認します。
$ getenforce
Disabled



iptables の無効化

開発環境のため、iptables(ファイアウォール)も無効化します。


iptablesの無効化

# 各 iptables デーモンの停止・停止確認

$ service iptables stop
$ service iptables status
iptables: Firewall is not running.

$ service ip6tables stop
$ service ip6tables status
ip6tables: Firewall is not running.

# 自動起動を無効化・確認
$ chkconfig iptables off
$ chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

$ chkconfig ip6tables off
$ chkconfig --list ip6tables
ip6tables 0:off 1:off 2:off 3:off 4:off 5:off 6:off



yum リポジトリの登録

必要に応じて追加のレポジトリを登録します。

今回は epel、ius、remi を登録します。3


yumレポジトリの追加

# epel レポジトリをインストールします。

$ yum install epel-release

# ius レポジトリをインストールします。
$ curl -s https://setup.ius.io/ | sh

# remi の GPG Key をインポートします。
$ rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
# remi レポジトリをインストールします。
$ yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm



インストール済みパッケージのアップデート

インストール済みのパッケージをアップデートします。


インストール済みパッケージのアップデート

# yum でインストール済みパッケージのアップデートをします。

$ yum update

# kernel がアップデートされるので再起動します。
$ shutdown -r now



開発環境用パッケージインストール

開発環境用のパッケージをインストールします。

※こちらは任意です。


開発環境用パッケージのインストール

# 開発環境用のパッケージをグループで一括インストールします。

$ yum groupinstall "Development tools"

# マニュアル表示用に man コマンドをインストールします。
$ yum install man man-pages man-pages-overrides man-pages-ja

# ファイルダウンロード用に wget をインストールします。
$ yum install wget



VirtualBox Guest Additions のインストール

VirtualBox のゲスト OS 用追加パッケージをインストールします。

仮想マシンのメニューから、「デバイス」⇒「Guest Additions CD イメージの挿入」を選択します。

WS000009.JPG


VirtualBox_Guest_Additionsのインストール

# CD イメージをマウントするディレクトリを作成します。

$ mkdir /media/cdrom

# CD イメージをマウントします(-r:読み取り専用)。
$ mount -r /dev/cdrom /media/cdrom
# マウントしたイメージファイルを確認します。
$ ls -l /media/cdrom

# VirtualBox Guest Additions をインストールします。
# OpenGL、X.Org はインストールしていない為、失敗またはスキップされます。
$ sh /media/cdrom/VBoxLinuxAdditions.run

# CD イメージをアンマウントします。
$ umount /media/cdrom
# アンマウントを確認します(ファイルが表示されないことを確認します)。
$ ls -l /media/cdrom


インストール完了後、仮想マシンのメニューから、「デバイス」⇒「光学ドライブ」⇒「仮想ドライブからディスクを除去」を選択します。

WS000010.JPG


git のインストール

こちらは任意です。

yum でインストールされる git はバージョンが古いので、ソースから最新版をインストールします。


gitのインストール

# 古いバージョンの git をアンインストールします。

$ yum remove git

# git に必要なライブラリのインストールをします。
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

# git のソースファイルを取得します。
$ cd /usr/local/src
$ wget https://www.kernel.org/pub/software/scm/git/git-2.7.0.tar.gz

# ダウンロードしたパッケージを解凍します。
$ tar zxvf git-2.7.0.tar.gz
$ cd git-2.7.0

# git のインストールをします。
# echo で実行結果を確認しています(0:正常終了)。
$ ./configure --prefix=/usr/local
$ echo $?
$ make
$ echo $?
$ make install
$ echo $?

# インストールの確認をします(バージョン情報を表示します)。
$ git --version
git version 2.7.0



udev ルールの削除

box 起動時のネットワーク設定の為、udev ルールのファイルを /dev/null にリンクします。


udevルールの削除

$ ln -fs /dev/null /etc/udev/rules.d/70-persistent-net.rules



ネットワーク個別設定の削除

個別で指定されている MAC アドレスと UUID を削除します。


ネットワーク個別設定の削除

# ネットワーク設定ファイルを編集します。

/etc/sysconfig/network-scripts/ifcfg-eth0
# 以下の行を削除します。
HWADDR=****
UUID=****


box 作成の最適化

box のサイズを小さくする為の作業となります。

まずは、yum で利用したファイルのキャッシュを削除します。

$ yum clean all

次に、フラグメンテーションを解消します。

box 作成時の圧縮率を上げるため、ゼロ埋めしたファイルを作成し、削除します。

$ dd if=/dev/zero of=/EMPTY bs=1M

$ rm -f /EMPTY

ここまでで OS の設定は完了です。

シャットダウンします。

$ shutdown -h now


ssh ネットワーク設定変更

作業用のポートフォワーディングの設定を削除します。


  • 仮想マシンの設定から、「ネットワーク」を選択します。

  • 「高度」を展開し、「ポートフォワーディング」をクリックします。

  • 作成したルールを選択し、右側のアイコンの削除ボタンをクリックします。

  • 「OK」ボタンをクリックし、設定を反映させてください。

WS000011.JPG


box 作成

box 作成用のゲスト OS の設定ができたので、box を作成します。


box の作成

コマンドプロンプトを起動します。

# box 作成用のフォルダ(任意)に移動します。

> cd xxxx(box 作成用のフォルダ)

# box を作成します。
# --base:作成対象の仮想マシン名、--output:出力 box ファイル名
> vagrant package --base CentOS-6.7-x86_64 --output CentOS-6.7-x86_64.box
==> CentOS-6.7-x86_64: Exporting VM...
==> CentOS-6.7-x86_64: Compressing package to: C:/appli/vagrant/centos/CentOS-6.7-x86_64.box

# 作成した box ファイルを確認します。
> dir
...
YYYY/MM/DD hh:mm 689,442,753 CentOS-6.7-x86_64.box
...

約700MBのファイルとなりました。


作成した box の動作確認

作成した box を早速登録して、起動してみましょう。


boxの起動確認

# 作成した box を vagrant に登録します。

# --name:vagrant への登録名、xxxx.box:作成した box ファイル名(パス)
> vagrant box add --name CentOS-6.7-x86_64 CentOS-6.7-x86_64.box

# 登録した box を確認します。
> vagrant box list
CentOS-6.7-x86_64 (virtualbox, 0)

# Vagrantfile を作成します。
> vagrant init CentOS-6.7-x86_64

# box を起動します。
> vagrant up

# 起動した box に ssh で接続します。
> vagrant ssh


お疲れ様でした、以上となります。

オリジナルの ISO を元にして box を作成する際に参考にして頂ければ幸いです。


■参考URL





  1. URLから「Base Distribution」にある表の対象バージョン(6.7 ⇒ x86_64)をクリックします。ミラーサイトの一覧が表示されるので、適当なサイトをクリックします。ISO イメージ一覧のページが表示されるので、対象のファイルをダウンロードします。 



  2. 「vagrant ssh」コマンドのデフォルトで利用されるキーペアの公開鍵です。box を外部公開用に起動する場合は各ユーザのキーペアを変更してください。参考URL:https://github.com/mitchellh/vagrant/tree/master/keys/ 



  3. CentOS レポジトリ一覧