7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TerraformでTROCCOのユーザーを作ったり消したりしてみる

Last updated at Posted at 2025-01-16

はじめに

TROCCOでは、コード管理の実現による、より安全かつガバナンスを担保した環境の管理を実現できるようにAPI機能の拡張を行っています。
Terraform Provider for TROCCOの提供も始まっています。

本記事では、コード管理の超初級編としてTerraformをインストールしTerraformでTROCCOのユーザーを作ったり消したりしてみます。

コード管理ってどんな感じ?? Terraformってどうやって使うの?? といったイメージをつける参考などに見ていただけると幸いです!

今回のゴール

Terraformを利用してTROCCOのユーザーを作成したり削除したりする

環境

Windows 64bitを使用しています。
Terraformはローカルで実行しています。

参考

弊社のDさんが公開している下記記事を参考に進めていきます!

TerraformでのTROCCOのリソース管理についてのみ知りたい方向け

Terraformとは??というところから詳しく知りたい方向け
Terraformのコマンドなどについても紹介しています
下記記事ではTROCCOのリソース作成とGoogle Cloudのリソースの作成を行っています。

Terraformのインストールと設定

早速やっていきます!
下記記事を参考にインストールとPathの設定、確認を行いました。

Terraformの初期設定をする

main.tf というファイルを作成します。
中身には下記を記入して保存します。

terraform {
  required_providers {
    trocco = {
      source = "registry.terraform.io/trocco-io/trocco"
    }
  }
}

provider "trocco" {
  region  = "japan"
}

TROCCO API KEYを発行する

TROCCOにログインして下記メニューを開きます

スクリーンショット 2025-01-14 184338.png

新規作成をクリックします
スクリーンショット 2025-01-14 184559.png

名前を設定して保存します
スクリーンショット 2025-01-14 184615.png

赤枠内のAPI KEYをコピーしておきます。

スクリーンショット 2025-01-14 184818.png

画面を閉じる、ほかページへの遷移などを行うとAPI KEYは確認できなくなります。
ご注意ください!!

発行したAPI KEY を環境変数にセットする

コマンドプロンプトを起動します。
set TROCCO_API_KEY={TROCCO_API_KEY} を実行します。
実行して、特に何も表示されなければ大丈夫です。

スクリーンショット 2025-01-14 190405.png

Terraformの初期化

Terraformを初期化します。
cd コマンドでTerraformをインストールしたフォルダへ移動し、terraform initを実行します。成功すると Terraform has been successfully initialized! が出力されます

TROCCOのユーザー情報を設定する

下記の使用例で試していきます!

resource "trocco_user" "example" {
  email                           = "trocco@example.com"
  password                        = "Jb1p4f1uuC"
  role                            = "member"
  can_use_audit_log               = false
  is_restricted_connection_modify = false
}

上記を作成したmain.tfファイルの下部に追記します。
resource "trocco_user" "example" {"example" はこのリソースを表す任意の名前となるようなのでusersに書き換えました。

terraform {
  required_providers {
    trocco = {
      source = "registry.terraform.io/trocco-io/trocco"
    }
  }
}

provider "trocco" {
  region  = "japan"
}

resource "trocco_user" "users" {
  email                           = "trocco@example.com"
  password                        = "Jb1p4f1uuC"
  role                            = "member"
  can_use_audit_log               = false
  is_restricted_connection_modify = false
}

resourceブロックの構成についての参考記事は下記です
https://zenn.dev/shimiyu/articles/7db8ddc9443c82

ファイルを変更したら保存するのを忘れないようにご注意ください!
後述のコマンドを実行したときにエラーが発生します

terraform plan コマンドでリソースへの影響を表示する

terraform planを実行して、現状の実体との差分を確認します。

>terraform plan

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:

  # trocco_user.users will be created
  + resource "trocco_user" "users" {
      + can_use_audit_log               = false
      + email                           = "trocco@example.com"
      + id                              = (known after apply)
      + is_restricted_connection_modify = false
      + password                        = (sensitive value)
      + role                            = "member"
    }

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

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if
you run "terraform apply" now.

実行した場合、新規作成(create)で1つ追加される(1 to add)ということがわかります。

terraform apply コマンドでユーザを追加する

terraform applyを実行して、上記で確認した実態との差分を反映させます。
途中でDo you want to perform these actions?と聞かれるのでyesで実行します。

>terraform apply

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:

  # trocco_user.users will be created
  + resource "trocco_user" "users" {
      + can_use_audit_log               = false
      + email                           = "trocco@example.com"
      + id                              = (known after apply)
      + is_restricted_connection_modify = false
      + password                        = (sensitive value)
      + role                            = "member"
    }

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: yes

trocco_user.users: Creating...
trocco_user.users: Creation complete after 1s

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

1つの追加が完了した(Apply complete! Resources: 1 added)事がわかります。
TROCCOのユーザー画面でも、trocco@example.comが追加されていることを確認できました!

image.png

TROCCOに作ったユーザーを削除する

main.tfに追記したresourceを削除して保存します。
terraform planを実行すると、下記が表示されました。

>terraform plan
trocco_user.users: Refreshing state...

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

Terraform will perform the following actions:

  # trocco_user.users will be destroyed
  # (because trocco_user.users is not in configuration)
  - resource "trocco_user" "users" {
      - can_use_audit_log               = false -> null
      - email                           = "trocco@example.com" -> null
      - id                              = 10276 -> null
      - is_restricted_connection_modify = false -> null
      - password                        = (sensitive value) -> null
      - role                            = "member" -> null
    }

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

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if
you run "terraform apply" now.

実行した場合、削除(destroy)で1つ削除される(1 to destroy)ということがわかります。
terraform applyを実行します。

>terraform apply
trocco_user.users: Refreshing state...

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

Terraform will perform the following actions:

  # trocco_user.users will be destroyed
  # (because trocco_user.users is not in configuration)
  - resource "trocco_user" "users" {
      - can_use_audit_log               = false -> null
      - email                           = "trocco@example.com" -> null
      - id                              = 10276 -> null
      - is_restricted_connection_modify = false -> null
      - password                        = (sensitive value) -> null
      - role                            = "member" -> null
    }

Plan: 0 to add, 0 to change, 1 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: yes

trocco_user.users: Destroying...
trocco_user.users: Destruction complete after 0s

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

リソースが一つ削除された(Apply complete! Resources: 0 added, 0 changed, 1 destroyed.)事がわかります。
TROCCOのユーザー管理画面を確認しても、trocco@example.comは削除されていることが確認できました。

おわりに

TerraformとTROCCOのユーザーAPIではこんな感じでコードでのユーザ管理ができるよ、というご紹介でした。
ネット上の記事を見てると、Terraformはすごく難しそうに感じますが、実行してみると 意外とどうにかなるかも・・・? と思えるぐらいには苦手意識が消えました!
今回のような基本的な操作であれば誰でもできそうです。

次はチーム機能などと絡めて、実際の運用でのユーザ管理について考えていく予定です!
ユーザーのアドレスやパスワードなどをある程度自動で設定することも可能なようです。
色々試して便利に使える部分を共有できたらと思います。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?