---
title: "NutanixをTerraformで試してみる | grasys blog"
url: "https://blog.grasys.io/post/yizumi443/nutanix-terraform/"
description: "NutanixをTerraformで操ってみます。 こんにちは、yizumi443（いずみよんよんさん）です。 先日ニュースになったようなならないような、な、Nutanix。HCIの代表的なプロダクツのひとつです。 もちろん、これも仮想化環境であり、Terraformから操ることができます。 1.Nunatixとは、…"
---

# NutanixをTerraformで試してみる

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[yizumi443](/authors/yizumi443/)
-   公開日：2020年12月21日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#Nutanix](/tags/nutanix/)[#Terraform](/tags/terraform/)

![NutanixをTerraformで試してみる](/_astro/og-image.DDSiu2Ny_XHpDd.webp)

NutanixをTerraformで操ってみます。

こんにちは、yizumi443（いずみよんよんさん）です。

先日ニュースになったようなならないような、な、[Nutanix](https://www.nutanix.com/jp)。HCIの代表的なプロダクツのひとつです。

もちろん、これも仮想化環境であり、Terraformから操ることができます。

## 1.Nunatixとは、HCIとは

NutanixはHCI製品の名前であり、またその製品を開発・販売する企業の名前でもあります。

そしてHCIはハイパーコンバージド・インフラストラクチャのことで、以下の特徴を持ちます。

-   ハイパーバイザ、仮想SAN、仮想LANを統合
-   これらを実現するハードウェアとソフトウェアをセットで商品化する

もしHCIの運用を開始したのち、リソースが不足してきたら、商品を買い増すだけで拡張が可能になります。

すでにオンプレミスサーバやデータセンタを運用している企業にとって、プライベートクラウドを平易に構築し水平スケールもできる、HCI。 Nutanixは当初専用ハードでこれを製品化し、じょじょに他ハードウェアでの動作をサポートするようになり、ついにNested VMとしても動作可能となっています。

## 2.Nutanix Test Driveでお試し可能

ハイパーバイザ上で仮想マシンを起動させ、その中でさらに別のハイパーバイザを動作させるNested VMでも、Nutanixは動作します。 まさにGCEでは[Nested VMがサポートされており](https://cloud.google.com/compute/docs/instances/enable-nested-virtualization-vm-instances)、Nutanixが提供する試用版、[Test Drive](https://www.nutanix.com/jp/one-platform)はこのサービスにより提供されています。

このTest Drive、メールアドレスの登録のみで、GCEインスタンスで動作するNutanixを2時間無料試用できる、というもの。 Nutanixには[無料で利用できるCommunity Editionもあります](https://www.nutanix.com/jp/products/community-edition)が、[必要なハードウェアのスペックがなかなかです](https://qiita.com/hanakara_milk/items/f2d21d552c929ed0272d)ので、まずTest Driveから触ってみるのがお手軽でしょう。

## 3.Terraformでインスタンスを作成してみる

もちろん、TerraformのNutanixプロバイダを使い、かんたんにNutanix内でのVMの操作が可能です。

しかしじっさいにいじってみようとすると、[Terraformの公式ドキュメント](https://registry.terraform.io/providers/nutanix/nutanix/latest/docs/resources/virtual_machine)の内容だけでは不十分なことに気づきます。

これらはある程度Nutanixにくわしければ解決可能なので、実務上困ることはないと思われますが、試用のため、ここでノウハウをご紹介いたします。

### 3-1.プロバイダ設定

TerraformのNutanixプロバイダは、以下のように設定します。もちろんじっさいには、endpointは変数とすべきでしょう。

Plain textcontent\_copy

```
provider "nutanix" {
  username     = "nutanix"
  password     = "nutanix/4u"
  endpoint     = "<Test Driveのサブドメイン名>.nutanixtestdrive.com"
  insecure     = true
  port         = 443
}
```

なお、Test Driveは**認証なしで呼び出せてしまう**ため、`username`と`password`には何を指定してもよいようです。

そのため、これらは変数とせずにダミー値としています。（なお、管理コンソールPrismから起動したVMへのログインアカウントおよびパスワードが、まさにこれらの値です）

### 3-2.クラスタの取得

Nutanixは1「物理」サーバ（もちろん、Nested VMでは物理に対応してはいません）をノードとみなし、ノードを束ねた構成をクラスターと呼びます（ブロックは説明省略）。

そして、VMやサブネットを作成する対象はクラスターであるため、Nutanixからこれらを操作する場合、まず「操作できるクラスター」を選択しなければなりません。

Test Driveの場合、対象のクラスターは“AOSonGCP”という名前を持つため、これをデータソースから検索してローカル変数に設定します。

Terraformドキュメント内のサンプルコードでは、これを「クラスターのリストの先頭」として固定で取得していますが、じっさいのTest Driveにおいて、「先頭にならないことがある」事実を確認済ですので、検索は必須です。

Plain textcontent\_copy

```
data "nutanix_clusters" "clusters" {}

locals {
  cluster_uuid = [for c in data.nutanix_clusters.clusters.entities: c if c.name == "AOSonGCP"].0.metadata.uuid
}
```

### 3-3.デフォルトサブネットの取得

Nutanixクラスターにはサブネットをいくつでも追加できますが、その際、デフォルトで設定済みのサブネットを取得しなければならないことがあります。 追加のサブネットを作成せずにVMが外界と通信するような場合、です。この場合でもVMには明示的な指定が必要です。

Test Driveでは、デフォルトのサブネットは“default-net”という名前です。

Plain textcontent\_copy

```
data "nutanix_subnet" "default_net" {
  subnet_name = "default-net"
}

locals {
  default_subnet_uuid = data.nutanix_subnet.default_net.metadata.uuid
}
```

### 3-4.サブネットの作成

サブネットを新たに作成する場合、対象のクラスターのUUID、整数値を指定する`vlan_id`、デフォルトゲートウェイとサブネットIPが必要です。サブネットは、`198.168.5.0/24`以外の任意の範囲で作成することができます。

なお、**作成し起動したVM上でネットワーク設定コードを動かすような場合（オンプレからの移植などで）、IPやゲートウェイなどを省略することで対応できます**。

Plain textcontent\_copy

```
resource "nutanix_subnet" "nic1" {
  name         = "test-nic-1"
  cluster_uuid = local.cluster_uuid

  vlan_id     = 101
  subnet_type = "VLAN"

  prefix_length = 20

  default_gateway_ip = "10.5.80.1"
  subnet_ip          = "10.5.80.0"
}
```

### 3-5.プリセットイメージの検索

VMは作成しただけではもちろん動かず、OSを設定する必要があります。これは、動作環境が整えられているディスクイメージをディスクに割り当てることでかんたんに可能となります。

そのディスクイメージはもちろん、自前で作成したものをPrismやAPI経由で登録し、それを使うことが可能ですが、Test Driveにあらかじめ設定されているイメージをPrismやAPIから確認することができ、それを指定することでTerraformからでも利用できます。

以下の名前はあくまでも例であり、じっさいには指定可能なイメージ名をPrismやAPIで得ておく必要があります。

Plain textcontent\_copy

```
data "nutanix_image" "image" {
  image_name = "CentOS-7-x86_64-1810.qcow2"
}

locals {
  default_image_uuid = data.nutanix_image.image.metadata.uuid
}
```

### 3-6.VMの作成

いよいよVMの作成です。

以下の例では、サブネットとしてデフォルトネットと、先に作成するnic1を指定しています。そしてディスクは先に指定したCentOS7のイメージから生成し追加しています。

Plain textcontent\_copy

```
resource "nutanix_virtual_machine" "vm1" {
  name         = "test-target"
  cluster_uuid = local.cluster_uuid

  num_vcpus_per_socket = 1
  num_sockets          = 1
  memory_size_mib      = 2048

  nic_list {
    subnet_uuid = local.default_subnet_uuid
  }

  nic_list {
    subnet_uuid = nutanix_subnet.nic1.metadata.uuid
    ip_endpoint_list {
      ip =   "10.5.80.2"
      type = "ASSIGNED"
    }
  }

  disk_list {
    disk_size_mib         = 10240
    data_source_reference = {
      kind = "image"
      uuid = local.default_image_uuid
    }
  }
}
```

## 終わり

以上のとおり、Test DriveをTerraformから操作することで、Nutanixを気軽に体験することができます。

ただし、すでに設定されているNutanixをTerraformで操る場合、さまざまな工夫が必要になってきます。今後機会があれば、そちらについても触れてみたいと思います。

## この記事を書いた人

[![](/_astro/noicon.CTHOhNiB_Z24aAgM.webp)](/authors/yizumi443/)

### [yizumi443](/authors/yizumi443/)

yizumi443のプロフィールと執筆記事をご覧いただけます。

[プロフィールと記事一覧](/authors/yizumi443/)