Vagrant仮想環境でAlmaLinuxを検証する

Linux
スポンサーリンク

自社システムでは、Centos7をメインOSとして色々なサービスを稼働させているが、サポートが2024年6月で切れることから、今後はCentos8に切替て行く計画をしていたが、そのCentos8のサポートが2021年末日で終了すると発表があり、多くの企業で代替案となるOSで頭を抱えていると思う。

今回は、有力候補の一つである「AlmaLinux」をvagrantの仮想環境で検証してみようと思い、環境構築を行った際、久しぶりのvagrantということで、色々と手こずったので、備忘録として記録しておくことにした。

Vagrant+VirtuaBoxをアップグレード

使用する端末は、iMac2020/MacOS Big Sur

数年前にvagrant+VirtualBoxでCentOS7の検証環境を構築していたが、最近は使用しておらず、ほったらかしだったこともあり、最初にVagrant+VirtualBoxをアップグレードする作業を行う。

(1)VirtualBoxをアップグレード

VirtulBoxを起動すると、新しいバージョンがリリースされている旨の案内とダウンロード先のURLが案内されるので、その案内に従い、最新バージョンのインストーラーをダウンロード&実行する。

インストール作業は、画面の指示に従うだけで、特に難しいことはない。

(2)Vagrantをアップグレード

アップデート前のバージョンを確認

% vagrant -v      
Vagrant 2.2.10

Homebrewでアップデート

% brew update 
% brew install vagrant --cask

アップデート後のバージョンを確認

% vagrant -v
Vagrant 2.2.16

Guest Additionsの自動化プラグインをバージョンアップ

$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Fetching vagrant-proxyconf-2.0.10.gem
Fetching micromachine-3.0.0.gem
Fetching vagrant-vbguest-0.29.0.gem

AlmaLinuxの導入

初期化

% mkdir AlmaLinux8
% cd AlmaLinux8
% vagrant init almalinux/8
% vagrant up --provider virtualbox
  :
  :
==> default: Configuring proxy for Yum...
[default] GuestAdditions versions on your host (6.1.22) and guest (6.1.18) do not match.
Last metadata expiration check: 1:02:02 ago on Tue 11 May 2021 10:28:57 AM JST.
Package kernel-devel-4.18.0-240.22.1.el8_3.x86_64 is already installed.
Package kernel-devel-4.18.0-240.22.1.el8_3.x86_64 is already installed.
Package gcc-8.3.1-5.1.el8.alma.x86_64 is already installed.
Package binutils-2.30-79.el8.x86_64 is already installed.
Package make-1:4.2.1-10.el8.x86_64 is already installed.
Package perl-interpreter-4:5.26.3-417.el8_3.x86_64 is already installed.
Package bzip2-1.0.6-26.el8.x86_64 is already installed.
Package elfutils-libelf-devel-0.180-1.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Mounting Virtualbox Guest Additions ISO to: /mnt
mount: /mnt: mount point does not exist.
Unmounting Virtualbox Guest Additions ISO from: /mnt
umount: /mnt: no mount point specified.
==> default: Checking for guest additions in VM...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

umount /mnt

Stdout from the command:



Stderr from the command:

umount: /mnt: no mount point specified.

この時点で、2つの問題に遭遇し、その対応に四苦八苦してしまった。

  1. vagrant upでOS起動時にエラーが発生する
  2. private_networkの設定が有効にならない
Vagrant.configure("2") do |config|
    :
  config.vm.network "private_network", ip: "192.168.33.20"
    :

問題解決

    :
[default] GuestAdditions versions on your host (6.1.22) and guest (6.1.18) do not match.
    :

Guest OS起動時のエラーは、GuestAdditionのバージョンがHost側とGuest側で合っていないため、Guest起動時に自動的にバージョンアップをしようとして失敗しているらしい。

ネットをググると手動で対応する方法が紹介されていたので、それを参考に対応してみたところ、エラーが発生しなくなった。

対応手順

ログイン
% vagrant ssh

インストーラーをダウンロードする為に、wgetコマンドをインストール
$ sudo dnf install wget

インストーラーをダウンロードする
$ cd /tmp
$ wget https://download.virtualbox.org/virtualbox/6.1.22/VBoxGuestAdditions_6.1.22.iso

ダウンロードしたファイルをマウントする
$ sudo mkdir /mnt
$ sudo mount -t iso9660 /tmp/VBoxGuestAdditions_6.1.22.iso /mnt

インストーラーを実行する
$ cd /mnt
$ sudo ./VBoxLinuxAdditions.run

$ exit

再起動

% vagrant reload
==> default: Attempting graceful shutdown of VM...
==> default: Checking if box 'almalinux/8' version '8.3.20210427' is up to date...
==> 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: Configuring proxy environment variables...
==> default: Configuring proxy for Yum...
[default] GuestAdditions 6.1.22 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /Users/h-tsunoya/vagrant/AlmaLinux8
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

ログイン
% vagrant ssh

IPアドレス確認
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:36:c5:7a brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 84655sec preferred_lft 84655sec
    inet6 fe80::734:16bd:26b3:3ac3/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:64:05:4c brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.20/24 brd 192.168.33.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe64:54c/64 scope link 
       valid_lft forever preferred_lft forever

結論だけ記載したが、最初は2つの問題を別々に考えていたことに加え、private_networkの設定が有効にならない問題を先に対応しようとして、nmcliコマンドを乱打してしまい、深みにハマってしまった。そのお陰で、nmcliコマンドを勉強することは出来たが、vagrantの設定が有効にならない問題の解決には至らなかった。

結局、GuestAdditionのバージョンを揃えることで、private_networkの設定が有効にならない問題も同時に解決することが出来たが、落ち着いてエラーメッセージを読めば、/mntのディレクトリが無かったのでマウントが出来なかっただけだったということに気づけた筈だと反省。

多分、/mntのディレクトリを作成して再起動するだけで自動更新されたように思う。


コメント