LoginSignup
5
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-12-07

はじめに

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'
ssh-keygen.png
  • 以下のようなファイルが作成される
$ 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
build-initVM.png

仮想マシン(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台)が作成されている
build-workerVM.png

仮想マシンの 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 を起動
renamed-vm.png
  • 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 構築直後
build_kube_master.png
  • しばらく待ってからブラウザで Kubernetes dashboard アドレスを表示
k8s-dashboard.png
  • 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 が参加したことを確認

k8s-dashboard-rdbox-master.png

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 が参加したことを確認
k8s-dashboard-k8s-node01.png
  • これで「RDBOX-HQをWindowsのVirtualBoxでセットアップ」を完了です
5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0