Terraform CloudのWorkspaceを作る
Terraform CloudのWorkspaceを作る
前回 Terraform Cloud にアカウントを発行したので Workspace を作ってみましょう。
とりあえず今はからですね、画面からポチポチ作っても良いのですが、せっかくなのでこれもTerraformで作ってみましょう。
Terraform Cloud Providerを使う
Terraform Enterprise Provider 略して tfe
providerがあります。
これがTerraform Cloudを管理するTerraform Providerです。
とりあえずの provier定義は以下
provider tfe {}
オプションも指定できるが、環境変数でわたせるので今回はその方式
-
token
- このあとで生成するトークンを指定
-
TFE_TOKEN
の環境変数で指定可能、
-
hostname
- デフォルト
app.terraform.io
なので通常利用であれば特に指定しなくてよいと思う -
TFE_HOSTNAME
の環境変数で指定可能
- デフォルト
Terraform Cloud トークンを取得
Terraform Cloudの Settings
を開いて、Teams
設定からチームトークンを生成します。
生成されたトークンは Warning にもあるように一回きりなので気をつけてください。
紛失した場合は再作成してください。
Terraform で Workspace を作る
とりあえずかんたんなサンプルとして以下を用意します。
これはterraform cloud上に test workspaceを作るコードになります。
provider tfe {}
resource tfe_workspace test {
name = "test"
organization = "mominosin"
}
最初に初期化して、TFE_TOKENに上で取得したトークンを渡しplanをしてみます。
❯ terraform init
❯ TFE_TOKEN=<TOKEN> terraform plan
planの結果はこのようになります。
❯ TFE_TOKEN=<TOKEN> terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
------------------------------------------------------------------------
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# tfe_workspace.test will be created
+ resource "tfe_workspace" "test" {
+ auto_apply = false
+ external_id = (known after apply)
+ file_triggers_enabled = true
+ id = (known after apply)
+ name = "test"
+ operations = true
+ organization = "mominosin"
+ queue_all_runs = true
+ terraform_version = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
------------------------------------------------------------------------
Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.
planで問題ないならapplyします。
❯ TFE_TOKEN=<TOKEN> terraform apply
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# tfe_workspace.test will be created
+ resource "tfe_workspace" "test" {
+ auto_apply = false
+ external_id = (known after apply)
+ file_triggers_enabled = true
+ id = (known after apply)
+ name = "test"
+ operations = true
+ organization = "mominosin"
+ queue_all_runs = true
+ terraform_version = (known after apply)
}
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
tfe_workspace.test: Creating...
tfe_workspace.test: Creation complete after 0s [id=ws-KcNddjr6WWs4rEmP]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Resources: 1 added
となっているので1つWorkspaceが作れたようです。
Terraform Cloud上を確認すると test workspaceが生成されています。
test workspaceを開くと、そのWorkspaceへstateファイルの保存先として指定する方法が書かれています。
トークンを渡さない場合
仮にトークンを渡さないとエラーになります。
❯ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
------------------------------------------------------------------------
Error: required token could not be found
on workspace.tf line 1, in provider "tfe":
1: provider tfe {}
最後に
今回は短めですが Terraform Cloud へ Terraformを使ってWorkspaceを作成する方法を書いてみました。
次回は workspace にgitや、環境変数などの設定を引き続きTerraformで作成していく予定です。
今回利用したコードは terraform-cloud-workspaces / pre_workspace においてあるのでご興味あれば御覧ください。
Discussion