masarasiの日記

私は Mackerel CRE テクニカルサポート担当です。

terraform provider mackerel をはじめて使った

terraform provider mackerel をはじめて使ってみました。

terraform は使ったことがなかったので難しそうなイメージだったのですが、導入から実行まで意外と簡単に使えました。

terraform provider mackerel は Terraform Registry で公開しています。

registry.terraform.io

インストール方法

インストールは公式ドキュメントの内容に沿って行う。

developer.hashicorp.com

Install Terraform の項目でインストールする環境のインストール方法を表示する。ここでは Linux を選択し、Amazon Linux に表示される yum コマンドを実行する。インストールはこれだけで完了。

任意で Quick start tutorial の内容を実行してちゃんと動くか確認する。

セットアップ

適当なディレクトリの中に main.tf を作成する。

下記は Mackerel の通知チャンネルを新規作成する場合の例。

terraform {
  required_version = ">= 1.3.0"
  required_providers {
    mackerel = {
      source  = "mackerelio-labs/mackerel"
      version = "~> 0.3.0"
    }
  }
}

resource "mackerel_channel" "email" {
  name = "terraform"

  email {
    emails = ["xxxxx@xxxxx.ne.jp"]
    events = ["alert", "alertGroup"]
  }
}

main.tf 解説

terraform のバージョン指定

terraform {
  required_version = ">= 1.3.0"

terraform のバージョンを指定する。演算子の意味は下記の通り。

  • = 指定したバージョンのみ許可
  • != 指定したバージョン以外を許可
  • >, >=, <, <= 左から、指定値より大きい、以上、未満、以下、のバージョンを許可
  • ~> 末尾の数字が指定値以上のバージョンを許可
    • たとえば ~> 1.0.0 の場合 1.0.11.0.2 は許可されるが 1.1.x は許可しない
    • ~> 1.x にした場合 1.11.2 が許可される

自分の環境では v1.3.7 だったので => 1.3.0 にしている。

terraform -v
Terraform v1.3.7

バージョン指定については公式ドキュメントを参照。

developer.hashicorp.com

terraform provider mackerel の読み込み

  required_providers {
    mackerel = {
      source  = "mackerelio-labs/mackerel"
      version = "~> 0.3.0"
    }
  }

version はその時リリースされているバージョンに合わせる。

Mackerel への設定内容

resource "mackerel_channel" "email" {
  name = "terraform"

  email {
    emails = ["xxxxx@xxxxx.ne.jp"]
    events = ["alert", "alertGroup"]
  }
}

terraform provider mackerel ドキュメント を参照して、Mackerel に実行したい設定を記述する。上記は terraform という名前の Email channel を新規作成する場合の内容。詳しくは Resource: mackerel_channel を参照。

初期化

初回のみ実行する。

terraform init

実行

terraform apply

main.tf を元に実行される内容が表示される。

Terraform used the selected providers to generate the following execution plan. Resource actions are
indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # mackerel_channel.email will be created
  + resource "mackerel_channel" "email" {
      + id   = (known after apply)
      + name = "terraform"

      + email {
          + emails = [
              + "xxxxx@xxxxx.ne.jp",
            ]
          + events = [
              + "alert",
              + "alertGroup",
            ]
        }
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value:

Enter a value:yes を入力して Enter を押すと実行される。

確認

Mackerel に通知チャンネルが作成されました。超簡単。