SDDC Import/Export for VMware Cloud on AWS Tool で構成をリストアしてみた

VMware Flings(VMware社のエンジニアとコミュニティ)によって作成された構成の入出力ツールを使ってみました Part.2

こんにちは、AWS事業本部の荒平(@0Air)です。

最近、VMware Cloud on AWSの社内環境を立て直す機会がありました。
以前この SDDC Import/Export Tool を使ってバックアップした構成を環境に戻す手順を試してみたので、お伝えします。利用バージョンは v1.8.0です。

前回の記事↓

今回取り扱うツールはこちらです。概要や使い方の詳細については、以下のGitHubもご参照ください。

使ってみた

(1) 前提準備

繰り返しとはなりますが、前回の記事を参照の上、PythonやGit、ツールの準備、バックアップデータがある状態で本手順を実施する想定です。

バックアップデータがない場合は、まずはそちらからご確認ください。

手元の環境では、以下のようなファイル階層となっていました。

[~/sddc-import-export-for-vmware-cloud-on-aws] $ tree
.
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── VMCImportExport.py
├── __pycache__
│   ├── VMCImportExport.cpython-311.pyc
│   └── vmc_auth.cpython-311.pyc
├── api-test.py
├── config_ini
│   ├── aws.ini
│   ├── config.ini
│   ├── config.ini.vcdr.sample
│   ├── vcenter.ini
│   └── vmc.ini
├── invoke_lambda.py
├── json
│   ├── cgw-networks.json
│   ├── cgw.json
│   ├── cgw_groups.json
│   ├── dfw.json
│   ├── dfw_details.json
│   ├── dhcp-static-binding.json
│   ├── flex_seg.json
│   ├── mcgw.json
│   ├── mcgw_fw.json
│   ├── mcgw_static_routes.json
│   ├── mgw.json
│   ├── mgw_groups.json
│   ├── mpl.json
│   ├── natrules.json
│   ├── public.json
│   ├── ral.json
│   ├── route_config.json
│   ├── s3-service_access.json
│   ├── sddc_info.json
│   ├── service_access.json
│   ├── services.json
│   ├── vpn-bgp.json
│   ├── vpn-dpd.json
│   ├── vpn-ike.json
│   ├── vpn-l2.json
│   ├── vpn-l3.json
│   ├── vpn-local-bgp.json
│   └── vpn-tunnel.json
├── reference
│   ├── Export_NSX-T_FW_config_from_an_SDDC.py
│   ├── Export_SDDC_config.py
│   ├── Import_NSX-T_FW_config.py
│   ├── Import_SDDC_config.py
│   ├── README.md
│   └── pyVMC.py
├── requirements.txt
├── sddc_import_export.py
├── testvmc.py
├── vcenter.py
├── vmc.py
└── vmc_auth.py

(2) 復元先のSDDC IDを控える

SDDCグループの画面、またはSDDCグループの追加画面(下記)より、目的のSDDC IDをコピーしておきます。
今回の検証では新規のSDDCを用意したため、SDDCグループに追加も実施しました。

(3) 構成ファイルを更新する

config_iniフォルダ内にある、vmc.ini ファイルを変更します。 今回は復元を行うため、dest_の値を埋めます。(15, 20, 21行目)

[vmcConfig]
# Use Gov Cloud URLs - you must enable this if you're using VMware Cloud on AWS GovCloud
gov_cloud_urls = False

# Service URLs, should never change
strProdURL              = https://vmc.vmware.com
strCSPProdURL           = https://console.cloud.vmware.com

# GovCloud
strGovProdURL           = https://www.vmc-us-gov.vmware.com
strGovCSPProdURL        = https://console.cloud-us-gov.vmware.com

# Refresh tokens generated in the VMC console. Users have a separate token in each org
source_refresh_token    = X
dest_refresh_token      = {VMware Cloud on AWSのAPIトークン ※前回記事参照}

# Organization and SDDC IDs are easily found in the support tab of any SDDC
source_org_id           = X
source_sddc_id          = X
dest_org_id             = {リストア先の組織ID}
dest_sddc_id            = {(2)でコピーしたリストア先のSDDC ID}

(4) テストモードでインポートを実行する

次のコマンドにより、インポートを実行しエラーがないことを確認します。
私の環境では、1度目の実行でエラーが出たのですが再度実行することで正常に起動できました。

python3 sddc_import_export.py -o import

ログの例(伏せ字の部分は独自に編集したものです):

[~/sddc-import-export-for-vmware-cloud-on-aws] $ python3 sddc_import_export.py -o import

Import mode: test
Token expires at 2023-06-19 00:25:45.300133
Importing data into org XXXXXXXXXXXXXX (XXXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXX), SDDC Classmethod-Tokyo (XXXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXX), SDDC version 1.22v2
Beginning CGW network import...
Import results:

+--------------------+--------+----------------------------+--------------------------------------+
|    Display Name    | Result |        Result Note         | Segment ID |
+--------------------+--------+----------------------------+--------------------------------------+
| sddc-cgw-network-1 |  TEST  | Test mode, no changes made | sddc-cgw-network-1 |
| sddc-cgw-sample |  TEST  | Test mode, no changes made | sddc-cgw-sample |
| terraform_segment |  TEST  | Test mode, no changes made | XXXXXXXXXXXXXX |
| XXXXXXXXXXXXXX |  TEST  | Test mode, no changes made | XXXXXXXXXXXXXX |
+--------------------+--------+----------------------------+--------------------------------------+
Warning - Service import set to False, skipping...
Beginning Compute Groups import...
TEST MODE - CGW Group Allow-Internet-Outbound would have been imported.
TEST MODE - CGW Group VMware Cloud on AWS Network would have been imported.
TEST MODE - MGW Group Osaka-HCX would have been imported.
TEST MODE - MGW Group arap-IP would have been imported.
Beginning CGW import...
Service import is set to false, this can cause import errors if service objects are missing.
TEST MODE - Firewall Rule SSH-VMC would have been imported.
TEST MODE - Firewall Rule ALB-VMC would have been imported.
TEST MODE - Firewall Rule Internet-Outbound would have been imported.
Beginning MGW import...
Service import is set to false, this can cause import errors if service objects are missing.
TEST MODE - Firewall Rule HCX inbound-Osaka would have been imported.
TEST MODE - Firewall Rule HCX outbound would have been imported.
TEST MODE - Firewall Rule vCenter Inbound-arap would have been imported.
Beginning Tier-1 Gateway import...
Service import is set to false, this can cause import errors if service objects are missing.
API Call Status 400, text:{
  "httpStatus" : "BAD_REQUEST",
  "error_code" : 500127,
  "module_name" : "Policy",
  "error_message" : "Cannot create an object with path=[/infra/tier-1s/Compute_Gateway-NAT] as it already exists."
}
Beginning Tier-1 Gateway Static Route import...
Service import is set to false, this can cause import errors if service objects are missing.
TEST MODE - Tier 1 Gateway static routes would have been imported.
Beginning Tier-1 Gateway Firewall policy and rules import...
Service import is set to false, this can cause import errors if service objects are missing.
TEST MODE - Tier 1 Gateway firewall policy and rules would have been imported.
Beginning import of Connected VPC Managed Prefix List configuration
TEST MODE - Connected VPC Managed Prefix List mode would have been enabled
Beginning import of SDDC Route Aggregation Lists...
TEST Mode - Route Aggregation lists would have been imported
Beginning import of SDDC Route Configurations...
TEST Mode - Route configuration would have been imported
Beginning DFW import...
Service import is set to false, this can cause import errors if service objects are missing.
Beginning import of flexible segments...
Import results:

+--------------+--------+-------------+------------+
| Display Name | Result | Result Note | Segment ID |
+--------------+--------+-------------+------------+
+--------------+--------+-------------+------------+
Beginning Public IP import...
TEST MODE - Previous IP XX.XX.XX.XX would have been remapped.
TEST MODE - Previous IP XX.XX.XX.XX would have been remapped.
TEST MODE - Previous IP XX.XX.XX.XX would have been remapped.
Beginning NAT import...
Beginning Service Access import...
TEST MODE - Service Access s3 would have been importeed.
Beginning VPN import...
Beginning IKE Profiles...
IKE Profiles imported.
Beginning VPN Tunnel Profiles...
Tunnel profiles imported.
DPD Profiles imported.
Beginning BGP Neighbors...
BGP neighbors imported.
Beginning Local BGP...
TEST MODE - Local BGP config  would have been imported.
Local BGP configuration imported.
Beginning L3VPN...
L3VPN configurations imported.
Beginning L2VPN...
L2VPN configurations imported.
Import has been concluded. Thank you for using SDDC Import/Export for VMware Cloud on AWS.

念の為、インポートされるデータに相違がないかを確認します。

(5) ライブモードに変更する

手順(4)で実行したテストモードでは実際に値が変更されることはありません。
config_iniフォルダ内にある、config.ini ファイルを開き、ライブモードに変更します。

以下の記述を見つけ、import_mode = live に修正して保存します。

[importConfig]

# Set this to True if you want to do continuous sync operations i.e. a periodic sync of
# DFW rules from a source to a destination SDDC. The default method of import operations 
# is a PUT. Setting this flag to True changes the method to a PATCH
# Not all settings are supported for sync - public IP and NAT mapping are unsupported
sync_mode = False

# Folder to import JSON configurations from
import_folder = json

# Import mode
# import_mode = test
#  - No changes will be made to the destination SDDC
#
# import_mode = live
#  - Changes will be made to the destination SDDC
import_mode = live    ### test -> liveに変更

# Script will warn, ask for a confirmation before continuing in live mode
# Set this to false if you are absolutely sure you have your script configured correctly and want to run it automatically
import_mode_live_warning = True

(6) ライブモードでインポートを実行する

再度、次のコマンドを実行し、構成情報をインポートします。

python3 sddc_import_export.py -o import

なお、途中で「宛先SDDCの設定が変更されますが宜しいですか?」と確認が入るので、「y」と回答します。

Script is running in live mode - changes will be made to your destination SDDC. Continue in live mode? (y/n): y

ログについては割愛しますが、デフォルトのGWが重複しているであったり、目的リソースが無いなどのエラーメッセージは少し出ていたので、各自確認されることをお勧めします。
今回検証では、SDDC バージョン1.20から1.22の移行だったので復旧できるか心配でしたが、確認できた範囲では概ね欠けることなくリストアできていました。

復元したかった目的のルールが反映されていれば、無事構成がインポートできています。
(SDDC バージョン1.22からゲートウェイファイアウォールの画面は NSX に移行しました)

おわりに

SDDC Import/Export Toolを用いて、VMware Cloud on AWSのSDDC構成をリストアしてみました。
特に管理ゲートウェイやコンピュートゲートウェイは、数が多いと再設定がなかなか面倒なため、一括で戻せるのはすごくありがたいです。

ちなみに、準備には30分程度、リストアの実行時間は十数秒だったので、工数を削減でき、ものすごく優秀なツールでした。

このエントリが誰かの助けになれば幸いです。

それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!

参考