win10にvagrantとVirtualBoxでCentOS8の開発環境を自作する方法 | プロサバメモ

WEBプログラミングやサーバ設定などのメモ場

win10にvagrantとVirtualBoxでCentOS8の開発環境を自作する方法

2020.04.252022.04.23

windows10にvagrantとVirtualBoxでCentOS8の開発環境を自作する方法です。

目次

試した環境は以下です。

Windows10 pro
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
パスワード:vagrant
※このユーザは必須。
※パスワードが単純なため「完了」を2回クリックする。

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

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

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

コンソール画面の右上「×」をクリック。

「仮想マシンの電源オフ」を選択し「OK」をクリックする。

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

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

2. VirtualBox上のCentOS8の設定

起動したVirtualBox上のCentOS8にPutty等でSSH接続するしrootでログインする。

接続先IP:127.0.0.1(localhost)
接続先ポート:2222
ID:root
PW:vagrant

2-1. selinuxの無効化

SELINUX=enforcing

SELINUX=disabled
に変更して保存。
[root@localhost ~]# vi /etc/sysconfig/selinux

一時的にselinuxを無効にする。

再起動後は、先に設定したSELINUX=disabledによってselinuxは自動的に無効になる。

[root@localhost ~]# setenforce 0

2-2. CentOS8のアップデートと再起動

CentOS8を最新の状態にupdateする。

[root@localhost ~]# dnf update

kernelのupdateが伴うため、再起動する。

[root@localhost ~]# reboot

立ち上がったら再度、SSHでログインする。

2-3. ファイアーウォールの停止

ファイアーウォールを停止し利便性を確保しておく。

[root@localhost ~]# systemctl stop firewalld
[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 ~]# mkdir /home/vagrant/.ssh
[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権限の付与すること。

[root@localhost ~]# visudo

以下を追加し保存する。

Defaults:vagrant !requiretty
vagrant ALL=(ALL) NOPASSWD: ALL

2-6. GuestAddtionsのインストール

vagrantがVirtualBox上のCentOS8に対して行う、共有フォルダ等の自動設定を行う際に必須。

開発環境のインストール
[root@localhost ~]# dnf groupinstall 'Development tools'

elfutils-libelf-develのインストール

[root@localhost ~]# dnf install elfutils-libelf-devel

GuestAddtionsのCDイメージを仮想CDドライブにセットする。

VirtualBoxのコンソール上の「デバイス」→「Guest Additions CDイメージの挿入」をクリック。

[root@localhost ~]# mount -r /dev/cdrom /mnt
[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サービスが起動されているか確認。

[root@localhost ~]# systemctl status vboxadd
● 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ドライブから取り外す。

[root@localhost ~]# umount /mnt

VirtualBoxのコンソール上の「デバイス」→「光学ドライブ」→「仮想ドライブからディスクを除去」をクリック。

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

2-7. 必要な任意のソフトウェアのインストールと設定

ここで自分の開発に必要な任意のソフトウェアをインストールする。

ここでは例として、vimとhttpdのインストールをする。

[root@localhost ~]# dnf install vim httpd

httpd(apache)の自動起動設定と起動。

[root@localhost ~]# systemctl start httpd
[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のサイズをなるべく小さくしたいため以下の処理を施しておく。

ダウンロードしたパッケージのキャッシュを削除する。

[root@localhost ~]# dnf clean all
22 ファイルが削除されました

仮想ディスクの圧縮

[root@localhost ~]# cd
[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をシャットダウンする。

[root@localhost ~]# shutdown -h now

3. Vagrantの設定

Vagrantコマンドはwindows10の「コマンドプロンプト」で実行する。

3-1. CentOS8のboxファイルの作成

先ほど作成したCentOS8のboxファイルを作成する。

windows10の「コマンドプロンプト」での作業。

boxファイルの保存フォルダを作成する。(任意の場所でOK)
※この例では「c:\vagrant\box」にしている。

c:\>mkdir c:\vagrant\box
c:\>cd c:\vagrant\box

vagrantコマンドでVirutialBoxで作成したCentOS8を元にboxファイルを作成する。

以下コマンド形式。

vagrant package –base VirtualBoxで作成したゲストOS名 –output 任意の文字列.box

VirtualBoxで作成したゲストOS名 = CentOS8

任意の文字列.box = CentOS8.box

としてコマンドを実行した場合、c:\vagrant\boxにCentOS8.boxが作成される。

c:\vagrant\box>vagrant package --base CentOS8 --output CentOS8.box
==> CentOS8: Clearing any previously set forwarded ports...
==> CentOS8: Exporting VM...
==> CentOS8: Compressing package to: c:/vagrant/box/CentOS8.box

boxファイルが作成されたか確認。

c:\vagrant\box>dir
ドライブ 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に登録する。

c:\>cd c:\vagrant\box
vagrant box add 登録box名(任意の文字列) 登録するboxファイル

登録box名(任意の文字列) = local/CentOS8

登録するboxファイル = CentOS8.box

としてコマンドを実行した場合、local/CentOS8という名前でCentOS8.boxが登録される。

c:\vagrant\box>vagrant box add 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が登録されたか確認。

c:\vagrant\box>vagrant box list
local/CentOS8 (virtualbox, 0)

3-3. 登録したboxからCentOS8を作成

CentOS8用のフォルダを作成する。 ここでは、c:\vagrant\local_centos8を作成して、そこにCentOS8を作成する。
c:\>mkdir c:\vagrant\local_centos8 c:\>cd c:\vagrant\local_centos8

登録したboxからCentOS8の作成。

vagrant init 登録box名

登録box名 = local/CentOS8

としてコマンドを実行した場合、c:\vagrant\local_centos8フォルダに「local/CentOS8」box用の設定ファイル「Vagrantfile」が作成される。

c:\vagrant\local_centos8>vagrant init local/CentOS8
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”

config.vm.network “private_network”, ip: “192.168.33.10”

これで、Vagrant経由でCentOS8を起動した際に、CentOS8のIPが192.168.33.10に固定される。

3-5. Vagrant経由でCentOS8を起動

c:\vagrant\local_centos8>vagrant up
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にログインできる。

c:\vagrant\local_centos8>vagrant ssh [vagrant@localhost ~]$

もしくは、192.168.33.10に。Putty等でSSHログインができる。

3-7. CentOS8のシャットダウン

vagrant haltコマンドでCentOS8をシャットダウンできる。

c:\vagrant\local_centos8>vagrant halt
==> default: Attempting graceful shutdown of VM...

VirtualBox上に仮想マシン「local_centos8_default_…」が「電源オフ」になる。

関連記事

TOP