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

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

試した環境は以下です。

  • Windows10 pro
  • Vagrant 2.2.7
  • VirtualBox 6.1

始めにWindows10にVagrantとVirtualBoxをインストールしておく必要がある。

インストールは以下のページからインストーラをダウンロードしてインストールする。
Vagrant:https://www.vagrantup.com/
VirtualBox:https://www.virtualbox.org/

加えて、CentOS8のisoファイルが必要。
CentOS8のisoファイルは以下からダウンロードしておく。
https://www.centos.org/download/
「CentOS Linux DVD ISO」からダウンロード。

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が起動する。

VirtualBox上のCentOS8の設定

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

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

selinuxの無効化

SELINUX=enforcing

SELINUX=disabled
に変更して保存。

[root@localhost ~]# vi /etc/sysconfig/selinux

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

[root@localhost ~]# setenforce 0

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

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

[root@localhost ~]# dnf update

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

[root@localhost ~]# reboot

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

ファイアーウォールの停止

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

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

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

vagrantユーザにsudo権限を付与

vagrantユーザにsudo権限を付与しておかないと、vagrantがVirtualBox上のCentOS8に対して行う、固定IP付与等の自動設定が正常に行われないので、必ずsudo権限の付与すること。

[root@localhost ~]# visudo

以下を追加し保存する。

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

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 <version>
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 <version>
 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のコンソール上の
「デバイス」→「光学ドライブ」→「仮想ドライブからディスクを除去」をクリック。

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

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

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

ここでは例として、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.

後処理

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

CentOS8のシャットダウン

CentOS8の設定が終了したので、一旦CentOS8をシャットダウンする。

[root@localhost ~]# shutdown -h now

Vagrantの設定

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

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    <DIR>          .
2020/04/26  12:21    <DIR>          ..
2020/04/26  12:22     1,127,657,440 CentOS8.box

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)

登録した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.

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に固定される。

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_…」が追加され「実行中」になる。

CentOS8にログインする

vagrant sshコマンドでCentOS8にログインできる。

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

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

CentOS8のシャットダウン

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

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

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

タイトルとURLをコピーしました