初心者でもできる!ホワイトクラウドASPIREのAPI機能で自動化を始めよう

2024年10月18日掲載

キービジュアル

本記事はホワイトクラウドASPIREの新API機能を使用して、基本操作(仮想マシングループの作成、仮想マシンの作成、仮想マシンの編集、仮想マシンのパワーオン)の自動化プロセスを紹介している初心者向けの記事です。

目次

①本記事はこんな方にお勧めです

本記事では企業の業務効率化を図るための第一歩として、ASPIREのAPI機能を利用した基本操作(仮想マシングループの作成、仮想マシンの作成、仮想マシンの編集、仮想マシンのパワーオン)の自動化プロセスを紹介します。

APIを使った自動化をしたことがない方も、この記事を読めば基本操作の自動化がスムーズに行えるようになります。

操作手順は、ポータルでの設定からPowerShellスクリプトの実行まで、初心者の方にも分かりやすいように丁寧に説明していますので、自動化を検討されている方はぜひこの機会にトライしてみてください。
PowerShellが実行できるWindows環境を使用して、ASPIRE環境への操作を実施します。

APIを使いこなし、業務の効率化を図りましょう。自動化の世界があなたを待っています!

②今回の自動化内容

今回はホワイトクラウドASPIREにて2024年5月27日にリリースされたAPI機能を用いて下記項目の自動化を実施してみたいと思います。APIに関するマニュアルも公開されていますので併せて確認してください。

今回構築する構成は、以下の構成図の通りです。実行機器はASPIREセルフポータルサイトにアクセスできるWindowsサーバからPowerShell ISEを使用してスクリプトを実行します。

Windows 2022テンプレートを使用して3台の仮想マシンを構築し、1台目は、最低限の設定のみ、2台目はハードウェアスペックを変更、3台目はバックアップ世代の変更を指定します。

最後に、全台のSysprep を実行します。

実施内容

  • Windows2022テンプレートを使用して3種類の仮想マシン(TestVM01~03)を構築
  • 仮想マシングループはTestVMG01で作成
  • TestVM01では、ゲストOSのカスタマイズのみ実施
  • TestVM02では、ゲストOSのカスタマイズとHWを増設(1vCPU,メモリ1GB,nic追加,10GB新規Disk追加)
  • TestVM03では、ゲストOSのカスタマイズとバックアップ世代数を変更(BK0→BK1)
  • 全台の仮想マシンを起動し、Sysprepを実行する

③GUI操作との比較

初めに、今回作成したスクリプトで環境を構築した場合と、GUI操作で同様の環境を構築した場合で、どれくらい時間短縮できるのかを紹介します。
GUI操作での構築内容は本ブログで紹介するPowerShellスクリプトで作成した内容と同様の操作を実施しています。
GUI操作の結果は

開始 21:48:05 終了 21:59:05 約11分!!

本記事で紹介するPowerShellスクリプトを実行した結果は

開始時刻 17:16:56 終了時刻 17:18:04 約1分!!

たった3台のVM構築でしたが、結果10分も短縮できました。
スクリプトによる構築なので事前に設定パラメータをしっかり確認しておけば設定ミスや作業漏れも発生しません。

それではAPIを利用するための事前準備からスクリプトの紹介をしていきます。

④事前準備

実行環境はWindows PowerShell ISEです。
まずはAPIを利用するためのユーザ発行とAPIキー、シークレットキーの発行を実施します。

手順1 セルフポータルサイトにログイン

ASPIREセルフポータルサイトにアクセスし、仮想マシンの構築先であるテナントにログインします。
ログイン方法はご利用ガイドの[セルフポータルサイトにログイン/ログアウトする]をご確認ください。

手順2 APIを利用する(スクリプト内で使用する)ユーザの作成

[ユーザ]で[+]をクリックし、[新規ユーザの追加]を実施してください。今回は例として、APIuseradminでユーザ管理者を作成しました。

既存のユーザでも実施可能なため、ユーザ作成が不要な方は本手順をスキップしてください。

ユーザを分けると権限を分けたり、実行ログを確認しやすくなるため、スクリプトごとにユーザを作成することをお勧めします。
※必要な権限は実施したいAPIによって異なります。ポータルUIと同等の権限設定となるため、ご利用ガイドの[ユーザ管理者とユーザの権限について]をご確認ください。

手順3 作成したユーザにAPIキーとシークレットキーを発行

[テナント設定]-[設定]-[API]をクリックし、[発行]をクリックします。
APIで使用するユーザアカウントの右で[発行]をクリックするとAPIキーとシークレットキーが発行されます。

Notepad等にAPIキーとシークレットキーをコピー後[OK]をクリックします。

APIキーとシークレットキーはこのタイミングのみ確認することができます。コピーし忘れにご注意ください。コピーできなかった場合は対象アカウントのAPIキーで[削除]をクリックし、再度手順3を実施してください。

※APIキーを削除する場合は対象APIユーザの右にある赤枠の削除をクリック

以上でポータル側の準備は完了です。

⑤スクリプト作成

ポータル側での準備が完了したため、スクリプトを作成していきます。

手順1 APIキー、シークレットキーの.iniファイルの作成

私が作成した見本は、test_profile.ini からダウンロード可能です。

.txtファイルで添付していますので保存する際には.iniに拡張子を変更してください。
以下で修正が必要なポイントを解説します。

内容はご利用の環境に合わせて適当な値に修正してください。

 

APU*******契約番号を入力します
ユーザ名事前準備で作成してAPIキーを発行したユーザ名を入力します
apikey事前準備で控えたAPIキーを入力します
secretkey事前準備で控えたシークレットキーを入力します
podname

スクリプトを実行したい対象リソース名を確認し、下記条件で入力します

VC05_*****_**-契約番号の場合:East_Zone11_VC05
VC06_*****_**-契約番号の場合:East_Zone11_VC06
VC07_*****_**-契約番号の場合:East_Zone12_VC07
VC05_*****_**-契約番号の場合:East_Zone12_VC08
VC02_*****_**-契約番号の場合:West_Zone11_VC02

location

東西どちらの契約リソースか確認し、下記条件で入力します

東で契約しているリソースの場合:east
西で契約しているリソースの場合:west

今回はファイル名:test_profile.iniで作成をしました。今回の対象リソースはVC07_Committed_01で実施したいため、

podname=East_Zone12_VC07
location=east

で作成しました。

手順2 PowerShellスクリプトの作成

作成したものは、onodatest.ps1 よりダウンロード可能です。

.txtファイルで添付していますので保存する際に「.txt」を削除して、.ps1に拡張子を変更して保存してください。

以降で修正が必要な箇所を解説していきます。
黄色のハイライトは環境によって修正が必要な項目です。
適当な値に修正してください。

ポイント① #設定ファイルの読み込み

52行目〜55行目で読み込む.iniファイルを指定しています。
今回は.ps1ファイルと.iniファイルのフォルダ階層を下記にしました

.ps1ファイル格納先 G:\onodaswork\API_test\onodastest.ps1
.iniファイル格納先 G:\onodaswork\API_test\profile\test_profile.ini

.ps1ファイルと.iniファイルの保存先とファイル名に応じて修正します

ポイント② #ロケーション/#Pod名/#APIキー

58行目~66行目で.iniファイルから必要な各変数を格納しています。
APU*******:.iniファイル内に記載した契約番号を入力します。

ポイント③ #テンプレート定義

94行目~95行目で使用する仮想マシンテンプレートを指定しています。
今回はカタログ名”Softank701_Catalog”のテンプレート名”Win2022 Std 64bit”を使用したいため、下記のように記載します。
※カタログ名の指定はPoint⑤で実施するため、ここではテンプレート名の定義のみになります

ポイント④ #契約リソースID、ストレージID取得

136行目~150行目で仮想マシンの作成先である契約リソースIDとストレージ区分を指定するためのストレージIDを取得します。
今回は下記を対象としました。
※2種類のストレージ区分で仮想マシンを作成したいので区分1と区分2を定義

対象リソース:VC07_Committed_01
ストレージ区分1:VC07_ST01_SSD1_BK0
ストレージ区分2:VC07_ST01_SSD1_BK1

ポイント⑤ #テンプレート情報取得

152行目〜159行目で使用する仮想マシンテンプレートIDを取得しています。
ポイント③でも記載しましたが、今回はカタログ名”Softank701_Catalog”のテンプレート名”Win2022 Std 64bit”を使用したいため、ポイント③で定義した”$templateName”を使用して、下記のように記載します。

ポイント⑥ #仮想マシングループの作成

166行目〜190行目で仮想マシングループを作成しています。
今回の仮想マシングループ名は”TestVMG01”で作成しています。

ポイント⑦ #仮想マシン1台目の作成

199行目〜250行目で1台目の仮想マシンを作成しています。
下記がBody内の解説です。

templateVmId$templateVmIdを使用(ポイント⑤で定義)
vmNameTestVM01(仮想マシン名)
guestNameTestVM01(コンピュータ名)
vmgroupId$vmgroupIdを使用(ポイント⑥で定義)
storageId$storageIdを使用(ポイント④で定義)

仮想マシン作成後に、作成した仮想マシンを編集するための仮想マシンIDを取得し、$vmId_TestVM01として定義します。

また、この後仮想マシンの編集を行いたいため、252行目〜260行目で作成した”TestVM01”の仮想マシンID($vmId_TestVM01)を使用して各種IDを取得しています。

ポイント⑧ #ゲストOSのカスタマイズ

268行目~357行目で、作成した”TestVM01”でゲストOSのカスタマイズを実行しています
“TestVM01”で実施する設定は下記になります。

・ゲストOSのカスタマイズを有効化
・ローカル管理者パスワードを許可
・パスワードを”password”で指定

対象仮想マシンの指定はポイント⑦で定義した”TestVM01”の仮想マシンID($vmId_TestVM01)を使用します。
下記がBody内の解説です。

vmStorageId$vmStorageId_TestVM01を使用(ポイント⑦で定義)
storageId$storageIdを使用(ポイント④で定義)
nicId$nicId_TestVM01を使用(ポイント⑦で定義)
macAdress$macAddress_TestVM01を使用(ポイント⑦で定義)
guestOsCustomizeFlgtrue(ゲストOSのカスタマイズを有効化)
adminPwdResetFlgtrue(ローカル管理者パスワードを許可)
adminPwdKbn2(パスワードを指定)
adminPwdpassword
firmwareKbnファームウェア区分。1(BIOS) / 2(EFI)から選択。※
bootSecureBootFlgセキュアブートフラグ。true / falseから選択。※
bootDelayTime起動遅延時間。0~10(秒)で指定。※
bootBiosSetupFlg強制セットアップフラグ。true / falseから選択。※

※今回はカタログ名”Softank***_Catalog”のテンプレート”Win2022 Std 64bit”のデフォルト値を採用します。

ポイント⑨ #仮想マシンの起動

364行目〜379行目で仮想マシンを起動させています。
対象仮想マシンの指定はポイント⑦で定義した”TestVM01”の仮想マシンID($vmId_TestVM01)を使用します。
ゲストOSのカスタマイズを有効化して仮想マシンを起動するとsysprepが実行されるため、これで1台目が完成です。

ポイント⑩ #仮想マシン2台目、3台目の作成

以降はポイント⑦~⑨(195行目~380行目)を必要な仮想マシンの台数分、繰り返す形になります。
今回は汎用的に使用できるようにするため、繰り返し記載をしています。
2台目以降の1台目と差分になる部分を解説していきます。

差分① TestVM02

“TestVM01”との差分で2台目の仮想マシン”TestVM02”では下記を変更します。

・ゲストOSのカスタマイズに加え、HWを増設
 (1vCPU追加,メモリ1GB追加,nic追加,10GB新規Disk追加)

スクリプト内の454行目〜562行目で”TestVM01”と同様にゲストカスタマイズを実施するタイミングでHWを増設しています。
対象仮想マシンの指定はTestVM01同様に仮想マシン作成時に$vmId_TestVM02を定義することで指定します。
下記がBody内の解説です。

vmNameTestVM02(仮想マシン名)
guestNameTestVM02(コンピュータ名)
vcpu2(仮想CPUの数)
cpuCorePerSocket1(ソケットあたりのコア数)
memory5120(メモリ:MB)
firmwareKbnファームウェア区分。1(BIOS) / 2(EFI)から選択。※
bootSecureBootFlgセキュアブートフラグ。true / falseから選択。※
bootDelayTime起動遅延時間。0~10(秒)で指定。※
bootBiosSetupFlg強制セットアップフラグ。true / falseから選択。※

storages内の"vmStorageId"~"storageId"を追加することで新規Diskを追加することができます。
nicも同様に、nics内の"nicId"~"macAddress"を追加することで新規nicを追加することができます。
※今回はカタログ名”Softank***_Catalog”のテンプレート”Win2022 Std 64bit”のデフォルト値を採用します。

差分② TestVM03

“TestVM01”との差分で3台目の仮想マシン”TestVM03”では下記を変更します。

・ゲストOSのカスタマイズに加え、バックアップ世代数を変更(BK0→BK1)

スクリプト内の659行目〜749行目で”TestVM01”と同様にゲストカスタマイズを実施するタイミングでストレージ区分を変更しています。

対象仮想マシンの指定はTestVM01同様に仮想マシン作成時に$vmId_TestVM03を定義することで指定します。

下記がBody内の解説です。

vmNameTesttVM03(仮想マシン名)
guestNameTestVM03(コンピュータ名)
storageId$storageId2を使用(ポイント④で定義)
firmwareKbnファームウェア区分。1(BIOS) / 2(EFI)から選択。※
bootSecureBootFlgセキュアブートフラグ。true / falseから選択。※
bootDelayTime起動遅延時間。0~10(秒)で指定。※
bootBiosSetupFlg強制セットアップフラグ。true / falseから選択。※

※今回はカタログ名”Softank***_Catalog”のテンプレート”Win2022 Std 64bit”のデフォルト値を採用します。

手順3 PowerShellスクリプトの実行

ここまでで事前準備は完了です。実際に実行してみます。

セルフポータルサイトでAPIのログを確認してみます。
[ログ]-[タスク一覧(API)]で確認すると、問題なく動作していることが確認できます。

仮想マシングループと仮想マシンを確認すると

TestVMG01に3台の仮想マシンが作成されており、Windows2022で作成されていることがわかります。
また、TestVM02はHW構成、TestVM03ではストレージ区分が変更できました。

ゲストOSのカスタマイズも実施できており、sysprepも実行されていました。

⑥最後に

多くのVM数をまとめて作りたい場合は、ぜひ今回紹介したPowerShellスクリプトを使用して構築を自動化してみてください。30台ほどの構築であれば、オペレーションミスもなく、単純計算で100分ほど時間短縮が可能だと思います。

本記事で紹介したPowerSellスクリプトのポイント⑦〜⑨を繰り返すだけで台数変更が可能です。

当然Windows2022だけでなく、他のテンプレートでも実施可能ですし、組み合わせも可能です。

個人的にはGUI操作時の待ち時間を気にしなくていいのがストレスフリーでした!

今回ご紹介させていただいたAPI(仮想マシングループの作成、仮想マシンの作成、仮想マシンの編集、仮想マシンのパワーオン)以外にも多くのAPI機能をリリースしてます。

APIの利用方法や使用可能機能一覧は、ホワイトクラウドASPIREご利用ガイドの”APIを利用する”をご確認ください。

また、今後もAPI機能は続々と追加していきますので心待ちにしていただければと思います。

このブログをきっかけに是非自動化を推進していっていただければと思います!

最後まで読んでいただき、ありがとうございました。

関連サービス

ソフトバンクが提供する国産クラウドで、SLA99.999%を誇る国産クラウドの柔軟な基盤で企業のデジタルトランスフォーメンションをサポートいたします。

おすすめの記事

条件に該当するページがございません