LoginSignup
14
24

More than 5 years have passed since last update.

Vagrant box 作成手順(CentOS 7.4)

Posted at

はじめに

2年前に Vagrant の box 作成の記事 を投稿しました。
当時はまだ6系を触る機会が多かったのですが、最近は7系にも慣れ、7系が主流となってきたことから遅ればせながら投稿することにしました。
各ソフトウェアのバージョンも上がっていることから検証も踏まえて記事にしています。

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

環境情報

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

  • Windows 7 (64bit / Pro)
  • VirtualBox 5.2.6
  • Vagrant 2.0.2

ISO ファイル準備

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

仮想マシンの作成

仮想マシンの新規作成

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

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

  • 名前:適当に(今回は CentOS-7.4-x86_64 にしました)。
  • タイプ:Linux
  • バージョン:Red Hat (64-bit)

メモリーサイズ

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

ハードディスク

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

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 CentOS7」を選択します。

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

WS000007.JPG

Language Selection

  • 「日本語」⇒「日本語」を選択し、「続行」をクリックします。

WS000008.JPG

インストールの概要

順に設定していきます。

ディスクパーティション設定

  • 「システム」⇒「インストール先」をクリックする。

WS000009.JPG

  • 「インストール先」のダイアログが表示される。
  • 今回は自動設定されているパーティション構成のままのため、「完了」をクリックする。

WS000010.JPG

ネットワーク設定

  • 「システム」⇒「ネットワークとホスト名」をクリックする。

WS000011.JPG

  • 右上のNICの有効・無効を「オフ」から「オン」にする。
  • 左上の「完了」をクリックする。

WS000012.JPG

インストール開始

  • 右下の「インストールの開始」をクリックする。
    ※各種設定は任意で設定してください(今回は最小限です)。

WS000013.JPG

root のパスワード設定

  • 「ROOTパスワード」をクリックする。

WS000014.JPG

  • root のパスワードは「vagrant」を設定します。
  • パスワードが弱いことを指摘されますが、「完了」を2度クリックし確定させます。

WS000015.JPG

インストール完了

  • インストールが完了すると再起動を求められるので、そのまま「再起動」をクリックし再起動します。

WS000016.JPG

OS のインストールが完了したので、次から BOX 用に設定変更します。
※この時点で一度VMを停止し virtualbox の機能でスナップショットをとっておくと、失敗した際に戻すことも簡単です。

OS 設定変更

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

ssh でのログイン

ここからは普段使用している ssh クライアント(Teraterm、PuTTY等)を使用して作業します。
「仮想マシンの設定変更」で設定したポートフォワーディングの設定に従い、ssh接続を行います。

  • 接続先ホスト名(IPアドレス): localhost (127.0.0.1)
  • 接続先ポート:2222
  • 接続タイプ:SSH
  • アカウント:root
    ※パスワードはインストール時に設定したパスワード。

WS000017.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デーモン再起動
$ systemctl restart sshd.service

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

sudo の設定

sudoコマンドの設定です。
※box 起動時(vagrant up)に利用されます。

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

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

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

sudo実行確認
# vagrant ユーザに変更します。
$ su - vagrant
# sudo コマンドを利用して /root ディレクトリを表示します。
$ sudo ls /root
# vagrant ユーザからログアウトします。
$ logout

selinux の無効化

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

selinux無効化
# 設定ファイルを編集します。
$ vi /etc/sysconfig/selinux

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

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

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

firewalld の無効化

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

firewalldの無効化
# firewalld デーモンの停止
$ systemctl stop firewalld.service

# 自動起動を無効化
$ systemctl disable firewalld.service

# 設定内容の確認
$ systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

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-7.rpm

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

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

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

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

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

開発環境用のパッケージをインストールします。
※こちらは任意です。

開発環境用パッケージのインストール
# グループインストール前準備
$ yum groups mark convert
# 開発環境用のパッケージをグループで一括インストールします。
$ yum groupinstall "Development tools"

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

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

# bash コマンドの補完機能を拡張するパッケージをインストールします。
$ yum install bash-completion

VirtualBox Guest Additions のインストール

VirtualBox のゲスト OS 用追加パッケージをインストールします。
仮想マシンのメニューから、「デバイス」⇒「Guest Additions CD イメージの挿入」を選択します。

WS000018.JPG

VirtualBox_Guest_Additionsのインストール
# 必要なパッケージを先にインストール
$ yum install kernel-devel

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

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

# VirtualBox Guest Additions をインストールします。
$ sh /media/cdrom/VBoxLinuxAdditions.run

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

インストール完了後、仮想マシンのメニューから、「デバイス」⇒「光学ドライブ」⇒「仮想ドライブからディスクを除去」を選択します。
※マウント解除できない場合は、強制マウント解除でアンマウントする

WS000019.JPG

git のインストール

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

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

# ius レポジトリから最新の git を取得・インストール
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker git2u

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

udev ルールの削除

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

udevルールの削除
$ ln -fs /dev/null /etc/udev/rules.d/70-persistent-net.rules

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

個別で指定されている UUID と IPV6 の設定を削除します。

ネットワーク個別設定の削除
# ネットワーク設定ファイルを編集します。
$ vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 以下の行を削除します。
UUID=****
IPV6~=****

box 作成の最適化

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

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

$ yum clean all

次に、フラグメンテーションを解消します。
box 作成時の圧縮率を上げるため、ゼロ埋めしたファイルを作成し、削除します。
※ディスクサイズを大きくとっていると処理に時間がかかります。

$ dd if=/dev/zero of=/EMPTY bs=1M
# 以下のエラーメッセージが出力されますが問題ありません。
# dd: `/EMPTY' の書き込みエラー: デバイスに空き領域がありません

$ rm -f /EMPTY

ここまでで OS の設定は完了です。
シャットダウンします。

$ shutdown -h now

ssh ネットワーク設定変更

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

  • 仮想マシンの設定から、「ネットワーク」を選択します。
  • 「高度」を展開し、「ポートフォワーディング」をクリックします。
  • 作成したルールを選択し、右側のアイコンの削除ボタンをクリックします。
  • 「OK」ボタンをクリックし、設定を反映させてください。

WS000020.JPG

box 作成

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

box の作成

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

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

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

# 作成した box ファイルを確認します。
> dir
...
YYYY/MM/DD  hh:mm       693,759,364 CentOS-7.4-x86_64.box
...

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

作成した box の動作確認

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

boxの起動確認
# 作成した box を vagrant に登録します。
# --name:vagrant への登録名、xxxx.box:作成した box ファイル名(パス)
> vagrant box add --name CentOS-7.4-x86_64 CentOS-7.3-x86_64.box

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

# 適当なフォルダに移動してから、Vagrantfile を作成します。
> cd xxxx( VM 起動用のフォルダ )
> vagrant init CentOS-7.4-x86_64

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

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

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

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


■参考URL


  1. URLから「Base Distribution」にある表の Linux Version 7 の 「CD and DVD ISO Images」の項にある「mirror」をクリックします。ミラーサイトの一覧が表示されるので、適当なサイトをクリックします。ISO イメージ一覧のページが表示されるので、対象のファイルをダウンロードします。 

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

  3. CentOS レポジトリ一覧 

14
24
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
14
24