Skip to content

Vagrant環境整備

Kenichi Omichi edited this page Apr 5, 2022 · 2 revisions

OpenStack を構成していた Intel NUC を Vagrant でシンプルに管理したいと思い、Ubuntu20.04 のクリーンインストールから始めた。 OpenStack 開発をしていた時は良かったが、3台程度のマシンを OpenStack で管理するのは効率が悪くて辛すぎるので(バージョンアップ、障害調査など)。 その時の記録。

環境

  • Ubuntu 20.04
  • Intel NUC 32GB mem

USBメモリからのUbuntu20.04インストール

Windows で RUFUS を使ってブータブル USB メモリを作ろうとしたが失敗したので、Ubuntu 20.04 Desktop で作った手順が以下の通り。

  1. Ubuntu 20.04 LTS server の ISO イメージ(ubuntu-20.04.4-live-server-amd64.iso) をダウンロード
  2. Startup Disk Creator をUbuntu 20.04 Desktop で起動
  3. 公式の手順 で Startup Disk Creator を使ってブータブルUSBメモリを作成
  4. NUC の BIOS 上で USB から起動するように変更
  5. 手順 3. で作成したブータブル USB メモリを入れた状態で NUC を起動
  6. 通常通り Ubuntu 20.40 Server を設定、インストール (できれば自動化したい)。NVMe SSDなのでインストールがかなり速い。

WIFI設定

上記の通常インストールだと WIFI 設定ができないので、インストール後に個別設定。

  1. ネットワークデバイスの確認。下記の例だと wlp58s0 がWIFIネットワークデバイス。
$ ls /sys/class/net/
eno1  lo  wlp58s0
  1. 既存のネットワークコンフィグファイルの確認
$ ls /etc/netplan/
00-installer-config.yaml
  1. 既存ネットワークコンフィグファイルにWIFIネットワークデバイスの設定を追加(サーバなので固定IP設定)
$ sudo vi /etc/netplan/00-installer-config.yaml

+ network:
+   version: 2
+   wifis:
+     wlp58s0:
+       addresses: [192.168.1.91/24]
+         gateway4: 192.168.1.254
+         nameservers:
+           addresses: [192.168.1.254]
+           search: []
+       access-points:
+         "SSID_name":
+           password: "WiFi_password"
  1. WIFIの有効化 上記のコンフィグファイルからWIFIを有効化。 ただし、wpasupplicant パッケージがインストールされていない場合、これを実行してもWIFI有効にならない。
$ sudo netplan --debug apply

TODO: USBインストールの時点で自動的にwpasupplicantパッケージをインストールする

VagrantによるKubernetesクラスタ構築

Kubernetesクラスタデプロイメントツールである Kubespray には Vagrantfile が含まれているのでそれを利用する。

  1. まずは必要なパッケージをインストール
$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils python3-venv
  1. libvirtd サービスが動作していることを確認
$ sudo systemctl status libvirtd
  1. vagrant コマンドを実行するユーザを libvirt と kvm のグループに追加
$ sudo adduser <username> libvirt
$ sudo adduser <username> kvm
  1. 上記のグループ追加を反映するため、ターミナルからログアウトする
$ exit

これを行わないと、vagrant up 時に以下のようなエラーを出力する

Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
  1. venv を作成し、Kubespray に必要な pip モジュールをインストールする
$ python3 -m venv ~/kubespray-venv
$ source ~/kubespray-venv/bin/activate
$ cd kubespray
$ pip3 install -r tests/requirements.txt
  1. vagrant-libvirt プラグインをインストールする(~/.vagrant.d/ 配下にプラグインがインストールされる)
$ sudo apt install libvirt-dev build-essential
$ vagrant plugin install vagrant-libvirt
  1. Kubespray で vagrant を実行する
$ vagrant up

この際、ubuntu18.04 のVMイメージが ~/.vagrant.d/boxes/ 配下に格納される。

$ ls ~/.vagrant.d/boxes/generic-VAGRANTSLASH-ubuntu1804/3.6.12/libvirt/ -lh
total 1.4G
-rw-rw-r-- 1 oomichi oomichi 1.4G Apr  5 21:12 box.img
-rw-rw-r-- 1 oomichi oomichi  301 Apr  5 21:12 info.json
-rw-rw-r-- 1 oomichi oomichi   59 Apr  5 21:12 metadata.json
-rw-rw-r-- 1 oomichi oomichi 2.0K Apr  5 21:12 Vagrantfile
Clone this wiki locally