前回の投稿では、Terraformの概要とIIJ GIOインフラストラクチャーP2 Gen.2 フレキシブルサーバリソース(以下 Gen.2 FSR)のAPIについて紹介しました。
第2回である本記事では、実際にコードを用いて仮想マシンを作成する方法についてご説明します。
Terraformを使用して仮想マシンを作成する | #1 Terraformの概要とGen.2 FSRのAPIについて |
---|
#2 Terraformを使用した仮想マシン作成(前半) |
#3 Terraformを使用した仮想マシン作成(後半) |
目次
Terraformの公式サイトから、利用しているOSに対応した実行ファイルをダウンロードします。
ダウンロードしたファイルを任意のディレクトリに保存し、環境変数にPathを通します。
以下の仮想マシンを例に、Terraformの定義ファイルの書き方についてご紹介します。
定義ファイルに設定できる項目は仮想マシンの詳細画面と同じ内容です。
terraform {
required_providers {
vcd = {
source = "vmware/vcd" // VMware Cloud Director Terraform Providerを指定
}
}
}
provider "vcd" {
auth_type = "api_token" // 認証方式を指定(固定値)
api_token = "XXXXXXXX" // 事前に作成したAPIトークン
org = "svrssa-XXXXXXXX" // 組織名。「API情報」タブに記載
vdc = "svrssa-XXXXXXXX" // 組織VDC名。「API情報」タブに記載
url = "https://vcd14.gen2.p2.iijgio.jp/api" // APIエンドポイント。「API情報」タブに記載
max_retry_timeout = 3 // リトライ回数
}
// OSライブラリ
data "vcd_catalog" "win_lib" {
org = "os-library" // 組織名(固定値)
name = "OSライセンス:Windows" // カタログ名(固定値)
}
// OSテンプレートの例
data "vcd_catalog_vapp_template" "win2022" {
catalog_id = data.vcd_catalog.win_lib.id // vcd_catalogのIDを参照
name = "Windows Server 2022 (1.2)" // 実在のOSテンプレートの名前
}
// 作成する仮想マシンの定義
resource "vcd_vm" "SampleVM" {
name = "SampleVM" // 仮想マシン名
computer_name = "SampleVM" // コンピュータ名
vapp_template_id = data.vcd_catalog_vapp_template.win2022.id //項番2で定義したOSテンプレートのIDを参照
cpus = 2 // 仮想CPUの数
cpu_cores = 2 // ソケットあたりのコア数
cpu_hot_add_enabled = false // CPUホットアドの有効・無効
memory = 8192 // メモリのサイズ(MB単位)
memory_hot_add_enabled = false // メモリホットアドの有効・無効
power_on = false // 電源の状態
accept_all_eulas = true // EULAに同意する(固定値)
// システムディスクの定義
override_template_disk {
bus_type = "paravirtual"
size_in_mb = "102400" // ディスク容量(MB単位)
bus_number = 0
unit_number = 0
storage_profile = "basic" // ブロックストレージプールの品目を「basic」 or 「standard」で指定
}
// NICの定義
network {
name = "プライベートネットワーク" // 仮想マシンが接続するプライベートネットワークセグメントの名称を記載
type = "org"
ip_allocation_mode = "MANUAL"
ip = "192.168.1.10"
is_primary = true
}
// ゲストOSのカスタマイズを定義
customization {
enabled = true
change_sid = true
auto_generate_password = false
admin_password = "xxxxxxxx" // OSパスワードを指定
terraform {
required_providers {
vcd = {
source = "vmware/vcd" // VMware Cloud Director Terraform Providerを指定
}
}
}
provider "vcd" {
auth_type = "api_token" // 認証方式を指定(固定値)
api_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" // 事前に作成したAPIトークン
org = "svrssa-xxxxxxxxxxxxx" // 組織名。「API情報」タブに記載
vdc = "svrssa-xxxxxxxxxxxxx" // 組織VDC名。「API情報」タブに記載
url = "https://vcd14.gen2.p2.iijgio.jp/api" // APIエンドポイント。「API情報」タブに記載
max_retry_timeout = 3 // リトライ回数
}
// OSライブラリ
data "vcd_catalog" "win_lib" {
org = "os-library" // 組織名(固定値)
name = "OSライセンス:Windows" // カタログ名(固定値)
}
// OSテンプレートの例
data "vcd_catalog_vapp_template" "win2022" {
catalog_id = data.vcd_catalog.win_lib.id // vcd_catalogのIDを参照
name = "Windows Server 2022 (1.2)" // 実在のOSテンプレートの名前
}
// 作成する仮想マシンの定義
resource "vcd_vm" "SampleVM" {
name = "SampleVM" // 仮想マシン名
computer_name = "SampleVM" // コンピュータ名
vapp_template_id = data.vcd_catalog_vapp_template.win2022.id //項番2で定義したOSテンプレートのIDを参照
cpus = 2 // 仮想CPUの数
cpu_cores = 2 // ソケットあたりのコア数
cpu_hot_add_enabled = false // CPUホットアドの有効・無効
memory = 8192 // メモリのサイズ(MB単位)
memory_hot_add_enabled = false // メモリホットアドの有効・無効
power_on = false // 電源の状態
accept_all_eulas = true // EULAに同意する(固定値)
// システムディスクの定義
override_template_disk {
bus_type = "paravirtual"
size_in_mb = "102400" // ディスク容量(MB単位)
bus_number = 0
unit_number = 0
storage_profile = "basic" // ブロックストレージプールの品目を「basic」 or 「standard」で指定
}
// NICの定義
network {
name = "プライベートネットワーク" // 仮想マシンが接続するプライベートネットワークセグメントの名称を記載
type = "org"
ip_allocation_mode = "MANUAL"
ip = "192.168.1.10"
is_primary = true
}
// ゲストOSのカスタマイズを定義
customization {
enabled = true
change_sid = true
auto_generate_password = false
admin_password = "xxxxxxxx" // OSパスワードを指定
}
}
定義ファイルと同じディレクトリで、以下のコマンドを実行して仮想マシンを作成します。
terraform init // 実行するディレクトリ配下でTerraformを使用する環境を整えます。
terraform plan // クラウド側へ反映を行わず、定義ファイルの実行内容の確認のみを行います。
terraform apply // 定義ファイルに従ってクラウド上に仮想マシンを作成します。
terraform applyのコマンドを実行し、仮想マシンの作成が完了すると以下のとおり表示されます。
vcd_vapp.SampleVM: Creating...
vcd_vapp.SampleVM: Creation complete after 5s [id=urn:vcloud:vapp:########]
vcd_vapp_vm.SampleVM: Creating...
vcd_vapp_vm.SampleVM: Still creating... [10s elapsed]
vcd_vapp_vm.SampleVM: Still creating... [20s elapsed]
vcd_vapp_vm.SampleVM: Still creating... [30s elapsed]
vcd_vapp_vm.SampleVM: Still creating... [40s elapsed]
vcd_vapp_vm.SampleVM: Still creating... [50s elapsed]
vcd_vapp_vm.SampleVM: Creation complete after 53s [id=urn:vcloud:vm:########]
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
今回ご紹介した仮想マシンの作成は、VMware Cloud Director Terraform Providerが提供する「vcd_vm」を使用します。
より詳しいVMware Cloud Director Terraform Providerの利用方法や、Gen.2 FSRでの利用可否については次のマニュアルをご確認ください。