はじめに
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にログインして下記メニューを開きます
赤枠内のAPI KEYをコピーしておきます。
画面を閉じる、ほかページへの遷移などを行うとAPI KEYは確認できなくなります。
ご注意ください!!
発行したAPI KEY を環境変数にセットする
コマンドプロンプトを起動します。
set TROCCO_API_KEY={TROCCO_API_KEY}
を実行します。
実行して、特に何も表示されなければ大丈夫です。
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が追加されていることを確認できました!
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はすごく難しそうに感じますが、実行してみると 意外とどうにかなるかも・・・? と思えるぐらいには苦手意識が消えました!
今回のような基本的な操作であれば誰でもできそうです。
次はチーム機能などと絡めて、実際の運用でのユーザ管理について考えていく予定です!
ユーザーのアドレスやパスワードなどをある程度自動で設定することも可能なようです。
色々試して便利に使える部分を共有できたらと思います。