win10にvagrantとVirtualBoxでCentOS8の開発環境を自作する方法
windows10にvagrantとVirtualBoxでCentOS8の開発環境を自作する方法です。
目次
試した環境は以下です。
Vagrant 2.2.7
VirtualBox 6.1
始めにWindows10にVagrantとVirtualBoxをインストールしておく必要がある。
インストールは以下のページからインストーラをダウンロードしてインストールする。
加えて、CentOS8のisoファイルが必要。
CentOS8のisoファイルは以下からダウンロードしておく。
「CentOS Linux DVD ISO」からダウンロード。
1. VirtualBoxにCentOS8をインストールする
VirtualBoxにCentOS8をインストールします。
ここでは、CentOS8は一先ず最小構成でインストールしていきます。
VatualBoxを起動します。
「新規」をクリック。

名前に任意の文字列を入力。
ここでは「CentOS8」にしました。
「次へ」をクリック。

メモリーサイズを指定。
デフォルトでは「1024MB」。お好みで増減させる。
ここでは「2048MB」にしました。
「次へ」をクリック。

「仮想ハードディスクを作成する」を選択して「作成」をクリック。

「VDI(VirtualBox Disk Image)」を選択して「次へ」をクリック。

「可変サイズ」を選択して「次へ」をクリック。

仮想ハードディスクのサイズを指定する。
デフォルトでは「8GB」だが、お好みで増減する。
ここでは「16GB」にしました。
「作成」をクリック。

設定が終わるとVirtualBoxのリストに「CentOS8」が作成される。

「CentOS8」を選択した状態で、「設定」をクリック。

設定リストの
「ストレージ」→「コントローラ:IDE 空」を選択し、
属性「光学ドライブ」の右端のアイコンをクリック。

「仮想光学ディスクの選択/作成」をクリック。

「追加」をクリックして先に用意しておいた「CentOS8のisoファイル」を指定する。

ストレージデバイスのコントローラ:IDEに指定したisoファイルが表示される。

つづいてネットワークの設定をします。
この設定を施すと、VirtualBox上のCentOS8に、Putty等を用いてlocalhost:2222でSSH接続することができるようになります。
「ネットワーク」をクリックする。
「アダプター 1」タブ中の「高度」をクリックする。

「ポートフォワーディング」をクリック。

右端の「+」アイコンをクリック。

「ホストポート」に「2222」を入力。
「ゲストポート」に「22」を入力し「OK」をクリック。

「CentOS8」を選択した状態で「起動」をクリック。

起動するとVirtualBoxのコンソールが立ち上がる。
コンソール上の「Install CentOS Linux 8」を選択しEnterキーを押下。

インストーラが立ち上がったら、インストール時に使用する言語に「日本語」を選択し「続行」をクリック。

インストール概要の「システム」下のアイコンをクリック。

パーティションの設定だが、ここはデフォルト設定に任せて「完了」をクリック。

「ソフトウェアの選択」をクリック。

「最小限のインストール」を選択し「完了」をクリック。

「時刻と日付」をクリック。

地域:「アジア」、都市:「東京」を選択し、「完了」をクリック。

「ネットワーク」をクリック。

Ethernetを「オン」に変更し、「完了」をクリック。

「インストールの開始」をクリック。

「rootパスワード」をクリック。

rootパスワードは「vagrant」にすること。
※パスワードが単純なため「完了」を2回クリックする。

「ユーザーの作成」をクリックする。

vagrantユーザを作成する。
パスワード:vagrant
※このユーザは必須。
※パスワードが単純なため「完了」を2回クリックする。

インストール終了までしばらく待ち。

インストールが完了したら「再起動」をクリック。

再起動されるが、仮想ドライブにCentOS8のisoファイルが指定されたままなのでインストール画面が立ち上がってくるので、一旦、仮想マシンの電源をオフにする。

コンソール画面の右上「×」をクリック。
「仮想マシンの電源オフ」を選択し「OK」をクリックする。

「CentOS8」が選択された状態で「ストレージ」の「光学ドライブ」が「空」になっていることを確認し「起動」をクリック。

これでVirtualBox上のCentOS8が起動する。

2. VirtualBox上のCentOS8の設定
起動したVirtualBox上のCentOS8にPutty等でSSH接続するしrootでログインする。
接続先ポート:2222
ID:root
PW:vagrant
2-1. selinuxの無効化
を
SELINUX=disabled
に変更して保存。
一時的にselinuxを無効にする。
再起動後は、先に設定したSELINUX=disabledによってselinuxは自動的に無効になる。
2-2. CentOS8のアップデートと再起動
CentOS8を最新の状態にupdateする。
kernelのupdateが伴うため、再起動する。
立ち上がったら再度、SSHでログインする。
2-3. ファイアーウォールの停止
ファイアーウォールを停止し利便性を確保しておく。
[root@localhost ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
2-4. vagrantユーザの公開鍵の設定
vagrantユーザの公開鍵の設定をしておかないと、vagrantがVirtualBox上のCentOS8に対して行う、固定IP付与等の自動設定が正常に行われないので、必ず公開鍵の設定をすること。
[root@localhost ~]# cd /home/vagrant/.ssh
[root@localhost .ssh]# curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0
100 409 100 409 0 0 35 0 0:00:11 0:00:11 --:--:-- 96
[root@localhost .ssh]# chmod 600 /home/vagrant/.ssh/authorized_keys
[root@localhost .ssh]# chown -R vagrant:vagrant /home/vagrant/.ssh
2-5. vagrantユーザにsudo権限を付与
vagrantユーザにsudo権限を付与しておかないと、vagrantがVirtualBox上のCentOS8に対して行う、固定IP付与等の自動設定が正常に行われないので、必ずsudo権限の付与すること。
以下を追加し保存する。
vagrant ALL=(ALL) NOPASSWD: ALL
2-6. GuestAddtionsのインストール
vagrantがVirtualBox上のCentOS8に対して行う、共有フォルダ等の自動設定を行う際に必須。
開発環境のインストール
elfutils-libelf-develのインストール
GuestAddtionsのCDイメージを仮想CDドライブにセットする。
VirtualBoxのコンソール上の「デバイス」→「Guest Additions CDイメージの挿入」をクリック。

[root@localhost ~]# /mnt/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 6.1.6 Guest Additions for Linux........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel
modules. This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup
VirtualBox Guest Additions: or
VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Building the modules for kernel
4.18.0-147.8.1.el8_1.x86_64.
GuestAddtionsサービスが起動されているか確認。
● vboxadd.service
Loaded: loaded (/opt/VBoxGuestAdditions-6.1.6/init/vboxadd; enabled; vendor preset: disabled)
Active: active (exited) since Sat 2020-04-25 22:52:19 JST; 1min 13s ago
Process: 7008 ExecStart=/opt/VBoxGuestAdditions-6.1.6/init/vboxadd start (code=exited, status=0/SUCCESS)
Main PID: 7008 (code=exited, status=0/SUCCESS)
4月 25 22:52:10 localhost.localdomain vboxadd[7008]: VirtualBox Guest Additions: Starting.
4月 25 22:52:10 localhost.localdomain vboxadd[7008]: VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel
4月 25 22:52:10 localhost.localdomain vboxadd[7008]: modules. This may take a while.
4月 25 22:52:10 localhost.localdomain vboxadd[7008]: VirtualBox Guest Additions: To build modules for other installed kernels, run
4月 25 22:52:10 localhost.localdomain vboxadd[7008]: VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup
4月 25 22:52:10 localhost.localdomain vboxadd[7008]: VirtualBox Guest Additions: or
4月 25 22:52:10 localhost.localdomain vboxadd[7008]: VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup all
4月 25 22:52:19 localhost.localdomain vboxadd[7008]: VirtualBox Guest Additions: Running kernel modules will not be replaced until
4月 25 22:52:19 localhost.localdomain vboxadd[7008]: the system is restarted
4月 25 22:52:19 localhost.localdomain systemd[1]: Started vboxadd.service.
GuestAddtionsのCDイメージを仮想CDドライブから取り外す。
VirtualBoxのコンソール上の「デバイス」→「光学ドライブ」→「仮想ドライブからディスクを除去」をクリック。

もし以下のダイアログが表示された場合は、「強制マウント解除」をクリック。

2-7. 必要な任意のソフトウェアのインストールと設定
ここで自分の開発に必要な任意のソフトウェアをインストールする。
ここでは例として、vimとhttpdのインストールをする。
httpd(apache)の自動起動設定と起動。
[root@localhost ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
2-8. 後処理
CentOS8のサイズをなるべく小さくしたいため以下の処理を施しておく。
ダウンロードしたパッケージのキャッシュを削除する。
22 ファイルが削除されました
仮想ディスクの圧縮
[root@localhost ~]# dd if=/dev/zero of=zero bs=4k
dd: 'zero' の書き込みエラー: デバイスに空き領域がありません
2897106+0 レコード入力
2897105+0 レコード出力
11866542080 bytes (12 GB, 11 GiB) copied, 46.2522 s, 257 MB/s
[root@localhost ~]# rm zero
2-9. CentOS8のシャットダウン
CentOS8の設定が終了したので、一旦CentOS8をシャットダウンする。
3. Vagrantの設定
Vagrantコマンドはwindows10の「コマンドプロンプト」で実行する。
3-1. CentOS8のboxファイルの作成
先ほど作成したCentOS8のboxファイルを作成する。
windows10の「コマンドプロンプト」での作業。
boxファイルの保存フォルダを作成する。(任意の場所でOK)
※この例では「c:\vagrant\box」にしている。
c:\>cd c:\vagrant\box
vagrantコマンドでVirutialBoxで作成したCentOS8を元にboxファイルを作成する。
以下コマンド形式。
VirtualBoxで作成したゲストOS名 = CentOS8
任意の文字列.box = CentOS8.box
としてコマンドを実行した場合、c:\vagrant\boxにCentOS8.boxが作成される。
==> CentOS8: Clearing any previously set forwarded ports...
==> CentOS8: Exporting VM...
==> CentOS8: Compressing package to: c:/vagrant/box/CentOS8.box
boxファイルが作成されたか確認。
ドライブ C のボリューム ラベルは OS です
ボリューム シリアル番号は DED2-A56A です
c:\vagrant\box のディレクトリ
2020/04/26 12:21
2020/04/26 12:21
2020/04/26 12:22 1,127,657,440 CentOS8.box
3-2. boxの登録
先ほど生成したCentOS8のboxファイルをvagrantに登録する。
登録box名(任意の文字列) = local/CentOS8
登録するboxファイル = CentOS8.box
としてコマンドを実行した場合、local/CentOS8という名前でCentOS8.boxが登録される。
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'local/CentOS8' (v0) for provider:
box: Unpacking necessary files from: file://c:/vagrant/box/CentOS8.box
box:
==> box: Successfully added box 'local/CentOS8' (v0) for 'virtualbox'!
vagrantにboxが登録されたか確認。
local/CentOS8 (virtualbox, 0)
3-3. 登録したboxからCentOS8を作成
CentOS8用のフォルダを作成する。 ここでは、c:\vagrant\local_centos8を作成して、そこにCentOS8を作成する。登録したboxからCentOS8の作成。
登録box名 = local/CentOS8
としてコマンドを実行した場合、c:\vagrant\local_centos8フォルダに「local/CentOS8」box用の設定ファイル「Vagrantfile」が作成される。
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.
3-4. CentOS8に固定IPを付与
「c:\vagrant\local_centos8\Vagrantfile」ファイルを編集し固定IPの部分を有効化。
以下のコメントアウトを外す。
↓
config.vm.network “private_network”, ip: “192.168.33.10”
これで、Vagrant経由でCentOS8を起動した際に、CentOS8のIPが192.168.33.10に固定される。
3-5. Vagrant経由でCentOS8を起動
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (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: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => C:/vagrant/local_centos8
VirtualBox上に仮想マシン「local_centos8_default_…」が追加され「実行中」になる。

3-6. CentOS8にログインする
vagrant sshコマンドでCentOS8にログインできる。
もしくは、192.168.33.10に。Putty等でSSHログインができる。
3-7. CentOS8のシャットダウン
vagrant haltコマンドでCentOS8をシャットダウンできる。
==> default: Attempting graceful shutdown of VM...
VirtualBox上に仮想マシン「local_centos8_default_…」が「電源オフ」になる。
