Help us understand the problem. What is going on with this article?

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 レポジトリ一覧 

KisaragiZin
自習メモ
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした