LoginSignup
0
0

More than 1 year has passed since last update.

【Equinix Metal/BMaaS】vSphere/vSAN環境をTerraformで一撃デプロイ①

Last updated at Posted at 2021-11-15

VMwareのSDS(Software Defined Storage)ソリューションであるvSANで構成されたvSphereクラスタを、Equinix MetalのBMaaS(Baremetal as a Service)上に構築してみました。

Terraformを利用する事で、約1時間でvSAN構成のvSphereクラスタを一撃デプロイできます。

vSAN、Equinix Metalについては以下リンクを参照ください。
VMware Virtual SAN 入門: 〜 従来のストレージと VSAN の違い〜
Equinix Metal

====

====

今回は、デプロイされる環境/デプロイ仕様の解説と事前準備を行います。

環境構成図

EsXi_EM-terraform_rev-Terraform_vsphere-working.png

環境仕様・デプロイの流れ

構成図の赤点線範囲がTerraformにより構築される部分です。
事前にMinIO用サーバをEquinix Metal環境に構築し、Edge-gateway(ゲートウェイノード)と通信できる状態にしておきます。

MinIOにはバケットを作成し、vCenterのISOファイルとvSAN管理用PythonSDKを配置します。
※MinIOサーバはデプロイ用資材置き場になっているだけなので、デプロイ完了後は削除しても構いません。

Terraformのデプロイ処理を開始すると、各サーバのデプロイに加えてゲートウェイノードに流し込まれたインストールスクリプトにより、ESXiノードのプロビジョニング、vCenterアプライアンスのデプロイとvSphereクラスタ構成、vSAN構成まで一貫して構築してくれます。

デプロイ後は、ゲートウェイノード経由でパブリックNWに公開されたvCenter(vSphereクライアント)の操作が可能です。
vCenter/ESXiノードのメンテナンスについては、ゲートウェイノードを踏み台にする or L2TP/IPsecVPNを利用して各ホストへSSH接続する必要があります。

なお、今回作成するvSphere/vSAN環境は動作確認用の環境です。
高度な冗長性・セキュリティ面の考慮・調整は特に行っていません。予めご了承ください

vSphereクラスタのスペック

デプロイ後に作成されるクラスタのスペックは以下の通りです。
ESXiホストの台数はTerraform変数ファイルを変更することで増減できますが、vSAN最小構成要件である[ESXiホスト3台]とした場合の数値になります。

EsXiホストの数 物理CPU 物理メモリ データストア
3台 72コア 192GB 各ホスト:95GB×3、vSAN:キャパシティ2620GB,キャッシュ670GB

作業環境、Ver、必要なもの等

  • 作業用PC
    • terraform:0.14.8
    • metal(provider):1.1.0
    • terraform-metal-vsphere(module):2.3.0
    • git:2.30.0
    • L2TP/IPSec VPNクライアント(VPN経由で接続する場合に必要)
  • vCenter/vSAN構成用の資材 ※MyVMwareからDL
    • vCenterインストール用ISOファイル、Ver 7.0 U1 build17491101
    • vSAN管理用PythonSDK
  • Equinix Metalアカウント
    • APIトークン ※ポータルで発行してください。

また、本記事の作業で作成されるMetalサーバは以下の通りです。

サーバクラス 台数 物理CPU 物理メモリ ストレージ 用途
c3.small.x86 2 8コア 32GB 480GB×2 MinIO用×1,ゲートウェイノード用×1
c3.medium.x86 3 24コア 64GB (boot用)240GB×2,480GB×2 ESXiノード用×3

Metalサーバクラスの詳細スペックについては、公式ページをご確認ください。

Bare Metal Servers - Equinix Metal

参考資料

Equinix MetalがメンテしているGithubリポジトリのガイダンスに沿って作業を進めます。

事前準備

0. terraform インストール

公式手順は↓のリンク参照。 筆者はWindows10+WSL(ubuntu)にインストールして使っています。
Install Terraform

1. terraformモジュール一式を作業用端末へDL(git clone)する

作業用端末に、GithubリポジトリのTerraformモジュール一式をDLします。
フォルダのファイル構成は以下の通りです。各ファイルは次回編集していきます。

$ git clone -b v2.2.0 https://github.com/equinix/terraform-metal-vsphere.git 
$ cd terraform-metal-vsphere
$ tree                              
.
├── LICENSE
├── README.md
├── crash.log
├── main.tf
├── outputs.tf
├── scripts 
│   └── get_vcenter_ip.py
├── templates 
│   ├── deploy_vcva.py
│   ├── download_vcenter.sh
│   ├── esx_host_networking.py
│   ├── extend_datastore.sh
│   ├── l2tp_vpn.sh
│   ├── pre_reqs.py
│   ├── update_uplinks.py
│   ├── vcva_template.json
│   └── vsan_claim.py
├── variables.tf
└── versions.tf

2. Metal環境に、MinIO用サーバデプロイ+MinIOインストール

デプロイ先と同じDCに、MinIO用サーバをデプロイします。
デプロイ後、以下ドキュメントを参考にインストールします。

MinIOを使用したオブジェクトストレージ

忙しい人のためにMinIOインストール用のUserDataを用意していますので、こちらをご利用ください。
Ubuntu18.04サーバデプロイ時のUserDataに入力すると、"http://[サーバのグローバルIP::9000"でアクセス可能な状態でMinIOがインストールされます。

#cloud-config
timezone: Asia/Tokyo
locale: ja_JP.utf8
package_upgrade: true
write_files:
-  content: |
     MINIO_ACCESS_KEY="minio"
     MINIO_VOLUMES="/usr/local/share/minio/"
     MINIO_OPTS="-C /etc/minio --address MinIO_GIP:9000"
     MINIO_SECRET_KEY="miniostorage"
   path: /etc/default/minio
   owner: minio-user:minio-user
   permissions: '0644'
runcmd:
  - curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio
  - sleep 5
  - chmod +x minio
  - useradd -r minio-user -s /sbin/nologin
  - chown minio-user:minio-user minio
  - mkdir /usr/local/share/minio
  - mkdir /etc/minio
  - sleep 1
  - chown minio-user:minio-user /usr/local/share/minio
  - chown minio-user:minio-user /etc/minio
  - mv minio /usr/local/bin/.
  - mkdir /opt/minio-data
  - sleep 1
  - chown minio-user:minio-user /opt/minio-data
  - curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service 
  - sleep 5
  - mv minio.service /etc/systemd/system/.
  - SV_GIP=`curl inet-ip.info`
  - sed -i -e "s/MinIO_GIP/$SV_GIP/" /etc/default/minio
  - systemctl daemon-reload
  - systemctl enable minio
  - systemctl start minio

2. MinIOへバケット作成

MinIOサーバへログイン後、MinIO用クライアントのmcコマンドをDLしてバケットを作成します。
※ブラウザ経由でMinIOへアクセスしてバケット作成してもOKです。

[mcコマンドDL、設定]
$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
$ chmod +x mc
$ ./mc alias set localhost http://[serverのGIP]:9000
 Enter Access Key: minio
 Enter Secret Key: miniostorage
 Added `localhost` successfully.

[mcコマンドでバケット作成]
$ ./mc mb localhost/vmware
Bucket created successfully `localhost/vmware`.

作業後、vmware という名称のバケットと、サーバ上のディレクトリが作成されたことを確認します。

$ ./mc ls localhost |grep vmware
[2021-03-12 00:42:36 JST]     0B vmware/

3. vCenter,vSAN構成用のファイルをバケットに配置する

参考サイトに記載があるように、MyVMwareからvCenterISOファイル、vSAN管理用SDKファイルを入手します。
取得後、前の手順で構成したバケット内に、以下構成でファイルを配置します。

オブジェクトストア ルート:
    | 
    | __ vmware

        | 
        | __ VMware-VCSA-all-7.0.1-17491101.iso 
        | 
        | __ vsanapiutils.py 
        | 
        | __ vsanmgmtObjects.py

ブラウザ経由でGUIから配置したい場合は、 http://[serverのGIP]:9000 にアクセスしてください。
※デプロイ時に設定したアクセスキー/シークレットキーを利用してログインする必要があります。

配置後、以下画像の状態になっていればOKです。vSAN_MinIO.png


事前準備は以上になります。
次回はterraform実行前の変数ファイル等を編集していきます。

0
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
0
0