RDBOX-HQをWindowsのVirtualBoxでセットアップしてみました


はじめに

RDBOXは、Linuxベースで構築することを前提としています

『自分が使っている Windows マシンで使えたらよいのに...』って思ったことはありませんか?

今回、Windows マシンで構築してみました

【ご注意】今回の記事では、Windows マシンに以下のアプリを導入します

  • VirtualBox
  • vagrant
  • Git for Windows

では、参考にしてください

実行環境

今回使用した環境です

Windows

項目 内容 備考
エディション Windows 10 Pro 64bit版
バージョン 1809 Windows Update で最新に更新済み

機器

項目 内容 備考
プロセッサ Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3.41GHz
実装RAM 16.0 GB(15.9 GB 使用可能)
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
製造元 HP Inc.
仮想化支援 IntelVT を有効化 AMD の CPU を使用する場合は AMDV を有効化
※VirtualBoxで64bit OS を動かす際に必要

ネットワーク

項目 内容 備考
DHCPサーバ 利用可能
Internet接続 あり
Proxyサーバ なし

使用する Windows アプリの導入

  • 注意(ご了承ください)

    • 本記事に出てくるバージョン番号等は、記事作成当時(2019年11月下旬)のものです
    • アプリのバージョン違いによる画面や動作に違いがある可能性があります
  • VirtualBox をインストール

    1. ダウンロード
    2. 取得ファイル名を確認
      • VirtualBox-6.0.14-133895-Win.exe
      • Oracle_VM_VirtualBox_Extension_Pack-6.0.14.vbox-extpack
    3. インストーラを起動してインストール(詳細省略、他の人の記事見てください)
      • 忘れずに機能拡張(extpack)をインストール
  • vagrant をインストール

    1. ダウンロード
    2. 取得ファイル名を確認
      • vagrant_2.2.6_x86_64 .msi
    3. インストーラを起動してインストール(詳細省略、他の人の記事見てください)
  • Git for Windows をインストール

    1. ダウンロード
    2. 取得ファイル名を確認
      • Git-2.24.0.2-64-bit.exe
    3. インストーラを起動してインストール(詳細省略、他の人の記事見てください)
      • 【重要】Git Bash は必ずインストールしてください
  • 上記アプリインストール後は、念のため Windows を再起動してから、以降の処理を行ってください

今回構築する環境

  • RDBOX-HQ(仮想マシン3台)
    • VPN Server
    • Kubernetes master
    • Kubernetes node 01
  • RDBOX 環境 setup(仮想マシン1台)
  • RDBOX master(Raspberry PI 1台)

ssh 鍵ペアの作成

  • Git Bash を起動し、以下の条件で鍵ペアを作成
    • 鍵の長さ(bit数)は 2048 ビット
    • 鍵種別は 'RAS'
    • パスフレーズは任意の文字列(忘れないように注意)
$ ssh-keygen.exe -b 2048 -t rsa -N 'YourPassphrase'
  • 以下のようなファイルが作成される
$ ls ${HOME}/.ssh/id_rsa*
/c/Users/YourName/.ssh/id_rsa
/c/Users/YourName/.ssh/id_rsa.pub

GitHub から clone

  • Git Bash を起動する
    • 以降は、Git Bash プロンプトからの入力がほとんどになります
  • VirtualBox のコマンド(VBoxManage.exe)を起動できることを確認
    • 以下の例では、バージョン番号が表示されたのでOK
    • もし [command not found] と表示された場合、タイプミス、もしくは、VirtualBox のインストールに失敗していると思われます
$ VBoxManage.exe --version
6.0.14r133895
  • GitHub より RDBOX を clone する
    • 今回は、${HOME}/git ディレクトリ以下に clone します
$ mkdir ${HOME}/git
$ cd ${HOME}/git
$ git clone https://github.com/rdbox-intec/rdbox.git

仮想マシン(VPNServer / Kubernetes master)を構築

  • conf/rdbox-hq-vb.params 準備
$ cd ${HOME}/git/rdbox/tutorials/setup-rdbox-hq-vb
$ cd conf
$ cp rdbox-hq-vb.params.sample  rdbox-hq-vb.params
$ # ↑ 今回はファイル修正せず、デフォルト設定を使用します
$ vi rdbox-hq-vb.params        ← 設定変更が必要な方は、このタイミングで修正してください
  • VPNServer / Kubernetes(master) 用仮想マシンの構築
$ cd ../build-initVM
$ bash createVagrantfileOfInitVM.sh
$ bash setupInitVM.sh
$ bash setupInitVM.sh rdbox-master    ← [ご注意] Windows 環境だと rdbox-master 作成を指示する必要がある
  • この時点で、以下のような2台の仮想マシンが作成されている
    • rdbox-vpn
    • rdbox-master

仮想マシン(Kubernetes node)を構築

  • Kubernetes(node) 用テンプレート(setup-rdbox-hq-vb/conf/Vagrantfile.in.worker)を修正
    • rdbox-hq 構築用サーバから ansible で制御可能とするため public_network(DHCP) を追加
    • 具体的な修正箇所は以下の内容(git diff)を参考
--- a/tutorials/setup-rdbox-hq-vb/conf/Vagrantfile.in.worker
+++ b/tutorials/setup-rdbox-hq-vb/conf/Vagrantfile.in.worker
@@ -23,6 +23,7 @@ Vagrant.configure(2) do |config|
                end
                worker.disksize.size = "WORKER_HDDGB"
                worker.vm.hostname = "WORKER_HOSTNAME"
+               worker.vm.network "public_network",  type: "dhcp"
                worker.vm.network "private_network", ip: "WORKER_PRIVATE_IP", netmask: "PRIVATE_NETMASK", virtualbox__intnet: "rdbox-hq"
                worker.vm.provision "shell", run: "always", inline: <<-ALWAYS_SHELL
                        rm -f /etc/apt/apt.conf.d/01proxy
  • Kubernetes(node) 用仮想マシンの構築
$ cd ../build-workerVM
$ bash createVagrantfileOfWorkerVM.sh
$ bash addWorkerVM.sh

仮想マシン(setup-rdbox)を構築

  • Kubernetes(node)用の設定ファイルを流用し rdbos-setup作業用の仮想マシンの構築
    • 新規に Ubuntu をインストールしても良いが、手間を省くため Kubernetes(worker) の設定を流用する
    • sed コマンドを用いVagrantfileを修正
    • 'rdbox-worker-01' を 'rdbox-worker-90' に変更
    • 'rdbox-k8s-worker-hq-01' を 'rdbox-setup' に変更
    • addWorkerVM.sh スクリプトを起動し仮想マシンを作成
$ sed -i -e 's/rdbox-worker-01/rdbox-worker-90/' Vagrantfile
$ sed -i -e 's/rdbox-k8s-worker-hq-01/rdbox-setup/' Vagrantfile
$ bash addWorkerVM.sh
  • 新たに2台の仮想マシン(合計4台)が作成されている

仮想マシンの IP アドレスの確認

  • VirtualBox 上の仮想マシンは DHCP を使い IP アドレスを取得しているため(IP アドレスが不明)
  • 最初に、仮想マシンの ssh ポート(localhost)の確認する
    • このポートを使い、仮想マシンに ssh 接続して IP アドレスを取得する
$ cd ../bin
$ bash getSshPorts.sh
build-initVM_rdbox-vpn_1574142163625_64069 2222
build-initVM_rdbox-master_1574142647190_89684 2200
build-workerVM_rdbox-worker-01_1574143450492_72936 2201
build-workerVM_rdbox-worker-90_1574145506545_54554 2202
  • 上記コマンド実行結果より、以下のポート番号であることが確認できた
機器種別 ポート番号
VPN server 2222
k8s master 2200
k8s worker 01 2201
k8s worker 90 2202
  • 各仮想マシンのIPアドレス取得と確認(IP アドレスは、あとの処理で使用するのでメモしてください)
$ CMD='ssh -p ${VMPORT} -i ${HOME}/.ssh/id_rsa ubuntu@localhost ifconfig | grep "inet " | grep -v 127 | grep -v 172 | awk '\''{print $2}'\'
$ IPADRS_vpn=`VMPORT=2222 bash -c "$CMD"`
$ IPADRS_k8sm=`VMPORT=2200 bash -c "$CMD"`
$ IPADRS_k8sn=`VMPORT=2201 bash -c "$CMD"`
$ IPADRS_setuphq=`VMPORT=2202 bash -c "$CMD"`
$
$ echo ${IPADRS_vpn}
$ echo ${IPADRS_k8sm}
$ echo ${IPADRS_k8sn}
$ echo ${IPADRS_setuphq}

RDBOX-HQ の構築準備

  • 先ほどの手順で作成した仮想マシン rdbox-worker-90 を使用する
  • VirtualBox マネージャーにて以下の手順で操作し、仮想マシン名称を変更
    1. 仮想マシン k8s worker 99 を停止
    2. プロパティから名称を setup-rdbox に変更
    3. 仮想マシン setup-rdbox を起動
  • Git Bash で ssh コマンドを使い、仮想マシン setup-rdbox にログイン(以降の処理は、このマシン上で実行する)
$ ssh -i ${HOME}/.ssh/id_rsa ubuntu@${IPADRS_setuphq}
  • GitHub より RDBOX を clone する
    • 今回も同様に、${HOME}/git ディレクトリ以下に clone します
$ mkdir ${HOME}/git
$ cd ${HOME}/git
$ git clone https://github.com/rdbox-intec/rdbox.git
  • Windows 用実行環境依存ファイルを修正
    • win/getServerAddressPublic.sh は、各仮想マシンのIPアドレスが対応するように修正
$ cd rdbox/tutorials/setup-rdbox-hq/bin
$ cp -r example win
$ cp aws/getServerSshPort.sh win/
$ echo "echo KubeNode01" >  win/getKubeNodeList.sh
$ vi win/getServerAddressPublic.sh
  • 修正箇所は以下の IP アドレスの部分(前の処理で取得した IP アドレスに書き換える)
    "${SERVER_TYPE_VPNSERVER}" )  echo "192.168.100.1" ;;
    "${SERVER_TYPE_KUBEMASTER}" ) echo "192.168.100.2" ;;
    "${SERVER_TYPE_KUBENODE}" )   echo "192.168.100.100" ;;
  • VirtualBox 設定用ファイルを準備
    • 今回は、デフォルト設定のまま修正せず使用する
$ cd ../conf
$ cp rdbox-hq-vb.params.sample rdbox-hq-vb.params
  • 設定ファイル確認スクリプトファイルを修正
$ cd ../build
$ vi check_build_rdbox_hq.sh
  • 具体的な修正箇所は以下の内容(git diff)を参考
--- a/tutorials/setup-rdbox-hq/build/check_build_rdbox_hq.sh
+++ b/tutorials/setup-rdbox-hq/build/check_build_rdbox_hq.sh
@@ -40,6 +40,9 @@ if [ "${RDBOX_HQ_BUILD_PF}" = "vb" ] ; then
 elif [ "${RDBOX_HQ_BUILD_PF}" = "aws" ] ; then
     echo "passed."
     echo "[INFO] This is 'AWS' setup mode."
+elif [ "${RDBOX_HQ_BUILD_PF}" = "win" ] ; then
+    echo "passed."
+    echo "[INFO] This is 'Windows(vb)' setup mode."
 else
     echo "[ERROR] You must set 'RDBOX_HQ_BUILD_PF' value."
     echo "[ERROR] e.g. 'vb' or 'aws'"

RDBOX-HQ 構築編 step1

  • 構築準備を行った後は、基本的に『RDBOX-HQ 構築編 step1』に書かれた通りの手順です

  • 前の処理で作成した win ディレクトリのスクリプトを使用するように設定する

$ cd ../conf
$ cp bashrc.rdbox-hq.example ${HOME}/.bashrc.rdbox-hq
$ sed -i -e 's/#RDBOX_HQ_BUILD_PF="example"/RDBOX_HQ_BUILD_PF="win"/' ${HOME}/.bashrc.rdbox-hq
$ sed -i -e 's/== "vb"/== "win"/' ${HOME}/.bashrc.rdbox-hq
  • 以降は、手順の「RDBOX-HQ 構築編 step1」からあとを実行します。
    • 【注意】修正済みの ${HOME}/.bashrc.rdbox-hq を conf/bashrc.rdbox-hq.example で上書きしない
$ cd ../build
$ ./build_env_keep_latest.sh
$ ./build_softethervpn.sh
$ ./build_vpnserver.sh
$ ./build_kube_master.sh
  • Kubernetes master 構築直後
  • しばらく待ってからブラウザで Kubernetes dashboard アドレスを表示
  • RDBOX 構築用に k8s join token を生成
$ ./print_kube_join_command.sh
kubeadm join 192.168.179.2:6443 --token auf4l1.tk9jtql8ctgfeej6 --discovery-token-ca-cert-hash sha256:cd80f7663b85015b70d6c817b30145c5492b1040547529b315ee30cb63e444a5

RDBOX の構築

  • 『RDBOX/ロボット構築編 RDBOX用SDカードの作成』を実施

    • 手順詳細は省略しますが、前の処理で生成した k8s join token を使用します
  • しばらく待って Kubernetes dashboard で RDBOX master が参加したことを確認

RDBOX-HQ 構築編 step2

  • 以降の処理は、Git Bash で ssh コマンドを使い、仮想マシン setup-rdbox にログインしていることを想定しています(RDBOX-HQ 構築編 step1 の続き)
$ ssh -i ${HOME}/.ssh/id_rsa ubuntu@${IPADRS_setuphq}
$ cd ${HOME}/git/rdbox/tutorials/setup-rdbox-hq
$ cd build
$ ./build_kube_node.sh
  • しばらく待って Kubernetes dashboard で Kubernetes node01 が参加したことを確認
  • これで「RDBOX-HQをWindowsのVirtualBoxでセットアップ」を完了です