ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

Terraform NIFCLOUD Provider の NAS/Kubernetes Service Hatoba/サーバーセパレート機能を使ってみた

こんにちは、ニフクラエンジニアの b:id:nifcloud-developers です。

今回は、Terraform NIFCLOUD Provider の v1.4.0 と v1.5.0 で対応した以下のリソースの構築方法を簡単に説明いたします。

・ニフクラ NAS
・ニフクラ Kubernetes Service Hatoba
・ニフクラ サーバーセパレート

Terraform NIFCLOUD Provider の基本的な利用方法などは以前の記事で詳しく紹介しているので、併せてご参照ください。
ニフクラがTerraformに対応したので使ってみた【基礎編】
ニフクラがTerraformに対応したので使ってみた【応用編】

f:id:nifcloud-developers:20210928153335j:plain

NAS 作成

ニフクラNAS リソースを利用します。
加えて、この NAS サーバーに対してのファイアウォールnifcloud_nas_security_group リソースを利用することで設定できます。

以下は、NAS サーバーを作成する設定ファイル例になります。

resource "nifcloud_nas_instance" "example" {
  identifier              = "nas001"
  availability_zone       = "east-11"
  allocated_storage       = 100
  protocol                = "nfs"
  type                    = 0
  nas_security_group_name = nifcloud_nas_security_group.example.group_name
}

resource "nifcloud_nas_security_group" "example" {
  group_name        = "group001"
  availability_zone = "east-11"
}

上記リソースを apply することで、NFS プロトコルでストレージが 100GB の NAS を作成することができます。

Kubernetes Service Hatoba 作成

ニフクラ Kubernetes Service Hatoba Kubernetes クラスターを作成するには nifcloud_hatoba_cluster リソースを利用します。
加えて、この Kubernetes クラスターに対してのファイアウォールは nifcloud_hatoba_firewall_group リソースを利用することで設定できます。

以下は、Kubernetes Service Hatoba で Kubernetes クラスターを作成する設定ファイル例になります。

resource "nifcloud_hatoba_cluster" "example" {
  name           = "cluster001"
  description    = "memo"
  firewall_group = nifcloud_hatoba_firewall_group.example.name
  locations      = ["east-11"]

  addons_config {
    http_load_balancing {
      disabled = true
    }
  }

  node_pools {
    name          = "default"
    instance_type = "medium"
    node_count    = 1
  }
}

resource "nifcloud_hatoba_firewall_group" "example" {
  name = "group001"
}

上記リソースを apply することで、サーバータイプ medium のノードが1つあるKubernetes クラスターを作成することができます。

サーバーセパレート作成

ニフクラサーバーセパレートは、指定したサーバー2台を異なる物理ホスト上に分離的に配置する機能です。冗長化用途のサーバーが物理ホスト障害の影響を同時に受ける確率を下げる目的で利用します。

サーバーセパレートを実施するには、nifcloud_separate_instance_rule リソースを利用します。

以下は、 nifcloud_instance リソースで設定した2台のサーバーをセパレートする設定ファイル例になります。

resource "nifcloud_separate_instance_rule" "example" {
  instance_id        = [nifcloud_instance.example1.instance_id, nifcloud_instance.example2.instance_id]
  availability_zone  = "east-11"
  description        = "test"   
  name               = "example001"
}

resource "nifcloud_instance" "example" {
  count = 2
  instance_id = "example00${count.index + 1}"
  availability_zone = "east-11"
  image_id          = data.nifcloud_image.ubuntu.id
  key_name          = nifcloud_key_pair.example.key_name
  security_group    = nifcloud_security_group.example.group_name
  instance_type     = "mini"
  accounting_type   = "2"

  network_interface {
    network_id = "net-COMMON_GLOBAL"
  }

  network_interface {
    network_id = "net-COMMON_PRIVATE"
  }
}

resource "nifcloud_security_group" "example" {
  group_name        = "examplefw"
  availability_zone = "east-11"
}

resource "nifcloud_key_pair" "example" {
  key_name   = "examplekey"
  public_key = "c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCZ1FEVjJpcjBTWjUvWTBCRm9DK1pRMVU4SUpISWZTWkc2QUljbHFCclhqaTNYZ2h3eG9PYzgxUkZmTW55aVB3OGRsakVodlFTcnl0eXpZNkhkVDZZZVR1OWhYWE9sckw3SlExbDVWbEZmT3VsZGlWQi92YTVzL2ZNQlR2SG50aHh4a3hiTm9BYkphQ1lxQVJucStHemU2clNGOEFHOC9DckUwckxuK2tlK1Jkb0d6Mk9uRlc0MDZId01uZVBkRm1QSzFKYjhUZVZMNzUyN3pUaUs0anV2SXU2TlQ2MU96aDh4OHZzRkhzNm52NWRRR0FCdm8rMjUycDJMdUlwczlnNDIydmg1VGhpQ0FPTmRXdjQvZHZrVWg4NDN6a1VRL0tISGNhWkpjcG1zdXNPNUhnbzdKLzk4VVVBU0NPVGgwSVZxZjFtQXdxRkZLVjFkTEw2YnJES2lTTFMwQVkwWUdkMHMvN3lGMTdIK2o1VDVPNjd2Z0RqbTR3K041MFhvUVIwbU5BY0t3UVM0NHhkWkRxallXTzVuc0ZVOWZZY3RsejQ2Qk5xTk51My9GOWJVbFhBM0dkY2FHRmw5elZZQjVwWTdqOW9jbFQ1VWNXdkY1UXByYWFRZGhxVEkxZjFRclRLRkN6Vm1Dc1ROWkZBZU1VMVcwTWFUU1QreVljK0NNc2xSa009IFNDSjAwMDg3QHVidW50dQo="
}

data "nifcloud_image" "ubuntu" {
  image_name = "Ubuntu Server 20.04 LTS"
}

上記リソースを apply することで、サーバー2台をセパレートするルールを作成することができます。

まとめ

今回は、Terraform NIFCLOUD Provider の v1.4.0 と v1.5.0 で対応したリソースの構築方法をご紹介しました。

Terraform NIFCLOUD Provider は現在、多くのニフクラリソースに構築に対応しています。
ぜひとも一度ご利用いただき、構築の自動化(Infrastructure as Code)にご活用くださると嬉しいです!!