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を起動します。
「新規」をクリック。
![](https://sym.me/images/up/135_vb1-768x380.png)
名前に任意の文字列を入力。
ここでは「CentOS8」にしました。
「次へ」をクリック。
![](https://sym.me/images/up/136_vb2-1.png)
メモリーサイズを指定。
デフォルトでは「1024MB」。お好みで増減させる。
ここでは「2048MB」にしました。
「次へ」をクリック。
![](https://sym.me/images/up/137_vb3.png)
「仮想ハードディスクを作成する」を選択して「作成」をクリック。
![](https://sym.me/images/up/138_vb4.png)
「VDI(VirtualBox Disk Image)」を選択して「次へ」をクリック。
![](https://sym.me/images/up/139_vb5.png)
「可変サイズ」を選択して「次へ」をクリック。
![](https://sym.me/images/up/140_vb6.png)
仮想ハードディスクのサイズを指定する。
デフォルトでは「8GB」だが、お好みで増減する。
ここでは「16GB」にしました。
「作成」をクリック。
![](https://sym.me/images/up/141_vb7-1.png)
設定が終わるとVirtualBoxのリストに「CentOS8」が作成される。
![](https://sym.me/images/up/142_vb8-768x446.png)
「CentOS8」を選択した状態で、「設定」をクリック。
![](https://sym.me/images/up/143_vb9-768x446.png)
設定リストの
「ストレージ」→「コントローラ:IDE 空」を選択し、
属性「光学ドライブ」の右端のアイコンをクリック。
![](https://sym.me/images/up/144_vb10.png)
「仮想光学ディスクの選択/作成」をクリック。
![](https://sym.me/images/up/145_vb11.png)
「追加」をクリックして先に用意しておいた「CentOS8のisoファイル」を指定する。
![](https://sym.me/images/up/146_vb12.png)
ストレージデバイスのコントローラ:IDEに指定したisoファイルが表示される。
![](https://sym.me/images/up/147_vb13-1-768x515.png)
つづいてネットワークの設定をします。
この設定を施すと、VirtualBox上のCentOS8に、Putty等を用いてlocalhost:2222でSSH接続することができるようになります。
「ネットワーク」をクリックする。
「アダプター 1」タブ中の「高度」をクリックする。
![](https://sym.me/images/up/148_vb14-768x516.png)
「ポートフォワーディング」をクリック。
![](https://sym.me/images/up/149_vb15.png)
右端の「+」アイコンをクリック。
![](https://sym.me/images/up/150_vb16.png)
「ホストポート」に「2222」を入力。
「ゲストポート」に「22」を入力し「OK」をクリック。
![](https://sym.me/images/up/151_vb17.png)
「CentOS8」を選択した状態で「起動」をクリック。
![](https://sym.me/images/up/152_vb18-768x490.png)
起動するとVirtualBoxのコンソールが立ち上がる。
コンソール上の「Install CentOS Linux 8」を選択しEnterキーを押下。
![](https://sym.me/images/up/153_vb19-1.png)
インストーラが立ち上がったら、インストール時に使用する言語に「日本語」を選択し「続行」をクリック。
![](https://sym.me/images/up/154_vb20-768x632.png)
インストール概要の「システム」下のアイコンをクリック。
![](https://sym.me/images/up/155_vb21-768x629.png)
パーティションの設定だが、ここはデフォルト設定に任せて「完了」をクリック。
![](https://sym.me/images/up/156_vb22-768x640.png)
「ソフトウェアの選択」をクリック。
![](https://sym.me/images/up/157_vb23-768x512.png)
「最小限のインストール」を選択し「完了」をクリック。
![](https://sym.me/images/up/158_vb24-768x488.png)
「時刻と日付」をクリック。
![](https://sym.me/images/up/159_vb25-768x464.png)
地域:「アジア」、都市:「東京」を選択し、「完了」をクリック。
![](https://sym.me/images/up/160_vb26-768x413.png)
「ネットワーク」をクリック。
![](https://sym.me/images/up/161_vb27-768x532.png)
Ethernetを「オン」に変更し、「完了」をクリック。
![](https://sym.me/images/up/162_vb28-768x464.png)
「インストールの開始」をクリック。
![](https://sym.me/images/up/163_vb29-768x637.png)
「rootパスワード」をクリック。
![](https://sym.me/images/up/164_vb30-768x441.png)
rootパスワードは「vagrant」にすること。
※パスワードが単純なため「完了」を2回クリックする。
![](https://sym.me/images/up/165_vb31-768x332.png)
「ユーザーの作成」をクリックする。
![](https://sym.me/images/up/166_vb32-768x441.png)
vagrantユーザを作成する。
パスワード:vagrant
※このユーザは必須。
※パスワードが単純なため「完了」を2回クリックする。
![](https://sym.me/images/up/167_vb33-768x469.png)
インストール終了までしばらく待ち。
![](https://sym.me/images/up/168_vb34-768x644.png)
インストールが完了したら「再起動」をクリック。
![](https://sym.me/images/up/169_vb35-768x645.png)
再起動されるが、仮想ドライブにCentOS8のisoファイルが指定されたままなのでインストール画面が立ち上がってくるので、一旦、仮想マシンの電源をオフにする。
![](https://sym.me/images/up/170_vb36.png)
コンソール画面の右上「×」をクリック。
「仮想マシンの電源オフ」を選択し「OK」をクリックする。
![](https://sym.me/images/up/171_vb37.png)
「CentOS8」が選択された状態で「ストレージ」の「光学ドライブ」が「空」になっていることを確認し「起動」をクリック。
![](https://sym.me/images/up/172_vb38-1.png)
これでVirtualBox上のCentOS8が起動する。
![](https://sym.me/images/up/173_vb40-768x642.png)
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イメージの挿入」をクリック。
![](https://sym.me/images/up/174_vb41-768x643.png)
[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のコンソール上の「デバイス」→「光学ドライブ」→「仮想ドライブからディスクを除去」をクリック。
![](https://sym.me/images/up/175_vb42-768x645.png)
もし以下のダイアログが表示された場合は、「強制マウント解除」をクリック。
![](https://sym.me/images/up/176_vb43-300x174.png)
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_…」が追加され「実行中」になる。
![](https://sym.me/images/up/177_vb44.png)
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_…」が「電源オフ」になる。
![](https://sym.me/images/up/178_vb45.png)