このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


2026年1月30日金曜日

やってみよう Terrafrom で自動作成 その2 仮想マシンの作成(Linux)

今回は、vSphere を使って Ubuntu の仮想マシンを展開する手順とゲストOSのカスタマイズ方法についてやっていこうと思います。

マニュアルはこちらです
https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs

vSphere 側の準備
Terrafrom を実行する前に、展開する仮想マシンの元になるテンプレートを作成する必要があります。
今回は、仮想マシンを作成してゲストOSに Ubuntu をインストールしたものを用意しました。
仮想マシンの展開にかかる時間を短くするためにリンククローンを使用したいので、スナップショットを1つだけ作成しておきます。

vSphere の構成としては以下のような感じで初期状態です。


tfファイルの作成。

1.Terrafrom を導入したマシンにログインします。
ここでは Ubuntu を使用しています。

2.作業用のディレクトリを作成します。

3.Terrafrom が 何を使ってどの環境にログインできるようにするための tfファイルを作成します。
 1つの tfファイルに全部書いてもいいんですが、このログインに使う情報は別の仮想マシンを作りたいとき
 などに使いまわしができたほうが楽なので私はファイルを分けています。

このファイルに記載する内容は以下のようになります。

vSphere-login.tf
terraform {
  required_providers {
    vsphere = {
      source  = "hashicorp/vsphere"
      version = "~> 2.5"
    }
  }
}

provider "vsphere" {
  user           = "administrator@vsphere.local"
  password       = "Vmware1!Vmware1!"
  vsphere_server = "vc01.snt-demo.lab"

  allow_unverified_ssl = true
}
ここには2つの内容が書かれています。
以下の部分は、Terraformが各製品を扱う際に使用するプロバイダーというプラグインを、利用する製品に合わせて指定しています。
今回使う製品が vSphere なので hashicorp/vsphere になっています。
terraform {
  required_providers {
    vsphere = {
      source  = "hashicorp/vsphere"
      version = "~> 2.5"
    }
  }
}
以下の部分は vCenter へのログイン情報になります。
allow_unverified_ssl = true は自己証明書を使っているので、証明書の検証をスキップするために入れています。
provider "vsphere" {
  user           = "administrator@vsphere.local"
  password       = "Vmware1!Vmware1!"
  vsphere_server = "vc01.snt-demo.lab"

  allow_unverified_ssl = true
}
これで、Terrafrom が vSphere の製品を扱うことを理解して、接続先である vCenter とログインするためのアカウントおよびパスワードを知っている状態となります。

3.仮想マシン展開用のtfファイルの作成
 次に仮想マシンを展開する部分です。
 今回は仮想マシン以外のリソースは作成しません。

記載内容は以下になります。

create-test-vm01.tf
#使用するリソース(データセンター、クラスタ、データストア、ポートグループ、テンプレート用マシン)の指定
data "vsphere_datacenter" "dc" {
  name = "DC01"
}

data "vsphere_datastore" "datastore" {
  name          = "nfs01"
  datacenter_id = data.vsphere_datacenter.dc.id
}

data "vsphere_compute_cluster" "cluster" {
  name          = "CL01"
  datacenter_id = data.vsphere_datacenter.dc.id
}

data "vsphere_network" "network" {
  name          = "vm-DPortGroup"
  datacenter_id = data.vsphere_datacenter.dc.id
}

data "vsphere_virtual_machine" "template" {
  name          = "ubuntu-tmp"
  datacenter_id = data.vsphere_datacenter.dc.id
}

#作成するリソースの内容
resource "vsphere_virtual_machine" "vm" {
  name             = "test-vm01"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 2048
  guest_id = data.vsphere_virtual_machine.template.guest_id

  firmware = data.vsphere_virtual_machine.template.firmware

  network_interface {
    network_id   = data.vsphere_network.network.id
    adapter_type = data.vsphere_virtual_machine.template.network_interface_types[0]
  }
  
  # DHCPがない環境のためIPアドレス設定の確認を無視
  wait_for_guest_ip_timeout  = 0
  wait_for_guest_net_timeout = 0


  disk {
    label            = "disk0"
    size             = data.vsphere_virtual_machine.template.disks.0.size
    eagerly_scrub    = false
    io_reservation   = 1
    thin_provisioned = true
  }

  clone {
    template_uuid = data.vsphere_virtual_machine.template.id
    linked_clone  = true
  }
}

クローン元と同じでいい場合は data.vsphere_virtual_machine.template でテンプレートマシンを指定し、guest_id や firmware など参照させたい内容をくっつけるとテンプレートマシンの情報を使ってくれます。
テンプレートマシンとは異なる設定にしたい仮想マシン名やCPUやメモリといった値は直接書き込んで指定しています。

4.terrafromコマンドの実行  作成したtfファイルから仮想マシンの作成を行っていきます。 4-1.tfファイルを作成したディレクトリで初期化処理

以下のコマンドを実行します。
terraform init
4-2.tfファイルの確認

以下のコマンドを実行して apply 可能か確認します。
terraform plan
4-3.仮想マシンの展開

以下のコマンドを実行して仮想マシンを展開します。
terraform apply
実行していいか確認されるので yes を入力します。
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes
成功すると以下のようにメッセージが出力されます
vsphere_virtual_machine.vm: Creating...
vsphere_virtual_machine.vm: Creation complete after 9s [id=421723e4-5f72-d210-9a4f-d503258be315]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

4-4.作成物の削除

作成したものを削除するときは以下のコマンドで削除します。
terraform destroy
こちらも実行していいか確認されるので yes を入力します。
Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes

vsphere_virtual_machine.vm: Destroying... [id=421723e4-5f72-d210-9a4f-d503258be315]
vsphere_virtual_machine.vm: Still destroying... [id=421723e4-5f72-d210-9a4f-d503258be315, 10s elapsed]
vsphere_virtual_machine.vm: Destruction complete after 14s

Destroy complete! Resources: 1 destroyed.

これで仮想マシンの作成と削除ができるようになりました。
次回は、作成する仮想マシンのゲストOSをカスタマイズする方法についてやっていきたいと思います。

2026年1月5日月曜日

VMware vSphere Foundation 9 の構築 その4 既存 vSphere 環境からの移行

前回までで新規での環境構築が終わりましたので、今回からは既存の vCenter と ESX のある環境を VVF にする手順についてやっていきたいと思います。
移行に入る前に以下の準備が必要です。

・DRS/HAを有効にする
・分散仮想スイッチにポートを移行している
・標準仮想スイッチは削除する

作業手順は以下の流れになります。

1. 既存の vCenter と ESX をアップグレードして 9 にする
2. VCF Installer で既存環境を選択し VVF 9 に構築する
3. VCF Operations でライセンス等の設定を行う

バージョンを9にする際、一般的には vCenter の ISOイメージから GUI を使用して 9 へアップグレードし、Lifecycle Manager を使って ESX のアップグレードになると思います。
その際ですが、Lifecycle Manager のデポで ESX のバージョンがうまくダウンロードできなくなっていたら以下の2つの KB で対処できるようです。

Resetting the VMware Update Manager Database
https://knowledge.broadcom.com/external/article/316581/resetting-vmware-update-manager-database.html
Authenticated Download Configuration Update Script
https://knowledge.broadcom.com/external/article/389276

私は、検証用の仮想マシンで作業していたので ESX 9 の IOSイメージを仮想マシンにマウントして、CDから起動しアップグレードをしました。
こっちのほうが楽なうえに早いので・・・

既存環境の vSphere 8 を VMware vSphere Foundation 9 に移行していきます。
VCF Installer にログインし『VMware Cloud Foundation』を選ぶところは新規構築と同じです。
既存コンポーネントで、『VMware vCenter Server』にチェックを入れます。
『全般情報』は 9.0.0.0 を設定します。
『VCF Operations』でサイズやパスワードの設定をします。
『vCenter』で既存の vCenter にログインするための認証情報を入力します。
『確認』で必要に応じて設定を確認します。
『検証とデプロイ』で検証に成功することを確認し、デプロイを実施します。
エラーが検出された場合は対応が必要ですが、警告については確認をクリックすればデプロイ可能となります。
処理が終わると、以下のようにパスワードの確認と VCF Operations へリンクが表示されます。
この後はVCF Operations の設定に入ります。
これは新規構築でも既存環境からの移行でも共通です。
一応、以前のブログで紹介しているのでそちらをご覧ください。
一番肝心なライセンス登録の部分については、ライセンスがないので説明を省いていますが・・・
VMware vSphere Foundation 9 の構築 その5 VCF Operations の設定