はじめに
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 をインストール
- ダウンロード
- https://www.virtualbox.org/wiki/Downloads
- [Windows hosts] をクリック
- [All supported platforms] をクリック
- 取得ファイル名を確認
- VirtualBox-6.0.14-133895-Win.exe
- Oracle_VM_VirtualBox_Extension_Pack-6.0.14.vbox-extpack
- インストーラを起動してインストール(詳細省略、他の人の記事見てください)
- 忘れずに機能拡張(extpack)をインストール
- ダウンロード
-
vagrant をインストール
- ダウンロード
- https://www.vagrantup.com/downloads.html
- Windows 用 [64-bit] をクリック
- 取得ファイル名を確認
- vagrant_2.2.6_x86_64 .msi
- インストーラを起動してインストール(詳細省略、他の人の記事見てください)
- ダウンロード
-
Git for Windows をインストール
- ダウンロード
- https://gitforwindows.org/
- [Download] をクリック
- 取得ファイル名を確認
- Git-2.24.0.2-64-bit.exe
- インストーラを起動してインストール(詳細省略、他の人の記事見てください)
- 【重要】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](https://github.com/rdbox-intec/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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/58a782a8-b3d4-0759-a7c6-d2038c604899.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/b7fbda1f-3b04-1cb0-5139-54017e28cc9b.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 を停止
1. プロパティから名称を setup-rdbox に変更
1. 仮想マシン setup-rdbox を起動
|![renamed-vm.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/d53ee52c-a341-892f-73b0-9037637964a7.png)|
|---|
- Git Bash で ssh コマンドを使い、仮想マシン setup-rdbox にログイン(以降の処理は、このマシン上で実行する)
$ ssh -i ${HOME}/.ssh/id_rsa ubuntu@${IPADRS_setuphq}
- GitHub より [RDBOX](https://github.com/rdbox-intec/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
- 以降は、[手順](https://github.com/rdbox-intec/rdbox/wiki/tutorials-ja#%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89)の「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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/a76bcb97-1ee6-8f09-a32c-20f3fdbeb872.png)|
|---|
- しばらく待ってからブラウザで Kubernetes dashboard アドレスを表示
|![k8s-dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/0e1663eb-f354-1d38-eb69-249e04eea778.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カードの作成](https://github.com/rdbox-intec/rdbox/wiki/setup-rdbox-2-RDBOX_prepare_sd_card-ja)』を実施
- 手順詳細は省略しますが、前の処理で生成した k8s join token を使用します
- しばらく待って Kubernetes dashboard で RDBOX master が参加したことを確認
|![k8s-dashboard-rdbox-master.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/71884826-298c-1c6d-27e3-acab99c2767c.png)|
|---|
# RDBOX-HQ 構築編 step2
- 以降の処理は、Git Bash で ssh コマンドを使い、仮想マシン setup-rdbox にログインしていることを想定しています(RDBOX-HQ 構築編 step1 の続き)
$ ssh -i ${HOME}/.ssh/id_rsa ubuntu@${IPADRS_setuphq}
- 『RDBOX-HQ 構築編 step2 [各サーバの構築-step2](https://github.com/rdbox-intec/rdbox/wiki/setup-rdbox-hq-2-1-servers-step2-ja)』を実施
$ cd ${HOME}/git/rdbox/tutorials/setup-rdbox-hq
$ cd build
$ ./build_kube_node.sh
- しばらく待って Kubernetes dashboard で Kubernetes node01 が参加したことを確認
|![k8s-dashboard-k8s-node01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/13cb594e-bcec-fe9c-554c-3eeef90e3b49.png)|
|---|
- これで**「RDBOX-HQをWindowsのVirtualBoxでセットアップ」を完了**です
<!-- eof -->