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

CentOS7の綺麗なboxを自作する

More than 3 years have passed since last update.

はじめに

CentOS7の綺麗なboxを作る備忘録。
yum updateはしないので、ISOイメージからインストールしたまんま。
好みに応じてカスタマイズしてください。

事前準備

次の準備が完了していること。わからない場合はグーグル先生にでも聞きましょう。

1.VirtualBoxセットアップ済み
2.vagrantセットアップ済み
3.CentsOS7のMinimal ISOダウンロード済み(今回はCentOS-7-x86_64-Minimal-1511.isoを準備)

仮想マシンの作成

VirtualBoxでベースになる仮想マシンを作成します。

1.メニューから「仮想マシン」->「新規」を選択

2.名前とオペレーティングシステム、メモリーサイズ、ハードディスクに次の内容を入力し作成ボタンを押す

項目 設定内容
名前 vagrant-centos-7-x86_64-minimal-1151
タイプ Linux
バージョン Red Hat (64-bit)
メモリーサイズ 512MB
ハードディスク 仮想ハードディスクを作成する

3.ファイルの場所、ファイルサイズ、ハードディスクのファイルタイプ、物理ハードディスクにあるストレージに次の内容を入力し作成ボタンを押す

項目 設定内容
ファイルの場所 vagrant-centos-7-x86_64-minimal-1151 ※デフォルト値のまま
ファイルサイズ 64.00GB
ハードディスクのファイルタイプ VDI (VirtualBox Disk Image)
物理ハードディスクにあるストレージ 可変サイズ

仮想マシンの初期設定

仮想マシンの不要なハードウエアを無効にします。

1.仮想マシンvagrant-centos-7-x86_64-minimal-1151を右クリックし設定を選択
2.システムタブを開き、起動順序にあるフロッピーのチェックを外す
3.オーディオタブを開き、オーディオを有効化のチェックを外す
4.ポートタブを開き、続いてUSBタブを開いて、USBコントローラーを有効化のチェックを外す
5.OKを押す

ポートフォワーディングの設定

1.仮想マシンvagrant-centos-7-x86_64-minimal-1151を右クリックし設定を選択
2.ネットワークタブを開き、アダプター 1にある高度をクリックし、ポートフォワーディングを押す
3.右にある+を押し、名前にssh、ホストIPに127.0.0.1、ホストポートに2222、ゲストポートに22を設定しOKを押す
4.OKを押す

仮想マシンにCentOS7のインストールメディアを設定し起動する

仮想マシンにCentOS7のインストールメディアを設定し起動します。

1.仮想マシンvagrant-centos-7-x86_64-minimal-1151を右クリックし設定を選択
2.ストレージタブを開き、コントローラー: IDEにぶら下がっているを選択
3.光学ドライブの右にあるCDマークのアイコンをクリックし、仮想光学ディスク・ファイルを選択
4.予めダウンロード済みのCentOS-7-x86_64-Minimal-1511.isoを選択
5.OKを押す
6.仮想マシンvagrant-centos-7-x86_64-minimal-1151を右クリックし起動->通常起動を選択

CentOS7のインストール

1.Install CentOS 7を選択
2.インストール時に使用する言語で日本語を選択
3.システムインストール先をクリックし、ファイルシステムを好みのレイアウトに変更する。テスト用途であれば、マウントポイント/に割り当てる領域をgrowとする。
4.インストールを開始する
5.インストール中に、ROOTパスワードを設定する。パスワードはvagrantとする。

SELinuxの無効化

# setenforce 0
# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

ネットワークの起動設定

1.インタフェース名の確認

# nmcli c s
NAME    UUID                                  TYPE            DEVICE
enp0s3  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  802-3-ethernet  --

2.ONBOOTをyesにする、と同時にネットワークにもDHCPで接続される。

# nmcli c m enp0s3 connection.autoconnect yes

vagrantユーザの追加

ユーザvagrantを作成し、パスワードをvagrantとする。
sudoersの設定も行う。

# groupadd -g 500 vagrant
# useradd -g vagrant -u 500 vagrant
# passwd vagrant
※パスワードは「vagrant」とする

# vi /etc/sudoers.d/vagrant
vagrant ALL=(ALL) NOPASSWD: ALL

sshでログイン

ここからはターミナルソフトで接続して作業を行う。
コピー&ペーストが使えると作業が楽である。

ログイン情報

項目
ホスト 127.0.0.1
ポート 2222
ユーザ vagrant
パスワード vagrant
OSXの場合はターミナルやiTerm2等で次のコマンドを実行
$ ssh -p 2222 vagrant@127.0.0.1

Windowsの場合はTeratermやPuttyやPoderosa、Rlogin等でどうぞ

Vagrant sshの設定

$ install -m 0700 -d $HOME/.ssh
$ echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==" > $HOME/.ssh/authorized_keys
$ chmod 600 $HOME/.ssh/authorized_keys

Requirettyの設定

Vagrantではttyなしでsudoできるようにする必要がある。
/etc/sudoersを編集するためにvisudoコマンドを実行。

$ sudo visudo

Defaults requirettyの次の行にDefaults:vagrant !requirettyを追加する

/etc/sudoers
 Defaults    requiretty
+Defaults:vagrant !requiretty

GuestAdditionsのインストール

GuestAdditionsインストール準備

$ sudo yum -y install epel-release
$ sudo yum -y install -y bzip2 gcc make kernel-devel-`uname -r` dkms gcc-c++

Guest Addions CD imageのセット

VirtualBoxのゲストコンソールウインドウをアクティブにした際のメニューDevicesからInsert Guest Additions CD image...を選択

GuestAdditionsのインストール

ターミナルに戻り、次のコマンドを実行する。

$ sudo mount -r /dev/cdrom /mnt
$ sudo /mnt/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.0.14 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 5.0.14 of VirtualBox Guest Additions...
Removing existing VirtualBox DKMS kernel modules[  OK  ]
Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox DKMS kernel modules[  OK  ]
Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
Building the VirtualBox Guest Additions kernel modules[  OK  ]
Doing non-kernel setup of the Guest Additions[  OK  ]
Starting the VirtualBox Guest Additions [  OK  ]
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.

Guest Addions CDのアンマウント

$ sudo umount /mnt

ボックスサイズの最小化

不要なものを消します。
ddしてrmするのは、ボックスを小さくするおまじない。

$ sudo rm /root/.bash_history
$ sudo yum clean all
$ sudo rm -fr /var/log/*
$ sudo rm -fr /tmp/*
$ sudo dd if=/dev/zero of=/0 bs=4k
$ sudo rm /0
$ history -c

シャットダウン

$ sudo shutdown -h now

ボックスの作成

ここからはローカルで作業します。

$ vagrant package --base vagrant-centos-7-x86_64-minimal-1151
==> vagrant-centos-7-x86_64-minimal-1151: Clearing any previously set forwarded ports...
==> vagrant-centos-7-x86_64-minimal-1151: Exporting VM...
==> vagrant-centos-7-x86_64-minimal-1151: Compressing package to: /Users/uemura/package.box
$ ls -l package.box
-rw-r--r--  1 uemura  staff  488472508  2 19 15:20 package.box

ボックスの追加

$ vagrant box add centos-7-1151 package.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos-7-1151' (v0) for provider:
    box: Unpacking necessary files from: file:///Users/uemura/package.box
==> box: Successfully added box 'centos-7-1151' (v0) for 'virtualbox'!
$ vagrant box list
centos-7-1151     (virtualbox, 0)

仮想マシンの作成とログイン

作成したボックスで仮想マシンを作成しログインしてみる。

$ mkdir centos-7-1151-test
$ cd centos-7-1151-test
$ vagrant init centos-7-1151
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

$ vagrant up
==> default: Importing base box 'centos-7-1151'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: centos-7-1151-test_default_1455863337249_43904
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => /Users/uemura/centos-7-1151-test

$ vagrant ssh

ログインできたらOK!

ShibuyaBizman
Sales Engineer, Sales
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