😽

Terraform Cloudのはじめかた (クラウドサービスのアカウント不要)

2024/02/19に公開

前回の記事ではTerraform Cloudの機能について色々と話したが、もしかすると自分で評価したい人がいるかもしれないので、Terraform Cloudを最短でセットアップして試す手順を一応残しておく。

手順

1. Terraform Cloudのアカウント登録

まずTerraform Cloudの利用を開始するために、アカウントの作成が必要となる。

Terraform Cloudのアカウント作成ページはこちら

作成の手順としては、ユーザ名(=自分の本名)、メールアドレス、パスワードを入力して、あとは送られてきた認証メールのリンクをクリックするだけで完了するだけなので、特に深くは説明しない。

ちなみにユーザ名はTerraform Cloudの機能を色々触った後で変更しようとしても、どこかで参照が残っているのが原因で自分の場合は変更できなかった

本気で変更しようと思えば出来るはずだが、一応登録時点で気をつけた方がいい。

あとパスワードは10文字以上を要求される点も注意。

認証リンクをクリックすると、Terraform Cloudのホームに遷移する。

2. Terraform Cloudにログイン

会員登録が完了したら、terraform loginコマンドを任意のディレクトリで実行して、さらに "yes"と入力してEnter を実行すると、ブラウザが開いて以下のようなトークン発行画面に遷移する。

$ terraform login
Terraform will request an API token for app.terraform.io using your browser.
...
Do you want to proceed?
  Only 'yes' will be accepted to confirm.

  # yesと入力してEnter
  Enter a value:yes

検証目的なので深く考えず、Generate tokenボタンをクリックする。

すると以下の認証トークンが表示されているページに遷移する。

右下の赤枠部にあるCopyボタンをクリックしてトークン文字列をコピーした後、ターミナルに戻ってトークンをペーストする。

...
# トークンをペーストしてEnter
Token for app.terraform.io:
  Enter a value:1B*******

Retrieved token for user erueru-tech

以上の手順でローカル環境でのTerraform Cloudログイン完了となる。

ログインが完了すると、以下のようなTerraformのロゴのアスキーアートが表示される。

そしてよく見るとロゴの下に以下のようなメッセージが表示されている。

New to TFC? Follow these steps to instantly apply an example configuration:

$ git clone https://github.com/hashicorp/tfc-getting-started.git
$ cd tfc-getting-started
$ scripts/setup.sh

実はチュートリアルに書いてある手順よりも、こちらの手順で利用を始める方が速くTerraform Cloudのセットアップが完了する

ちなみに自分はHashiCorpのロゴに視線を誘導されて、初回は完全に見落としてしまっていた。

3. Terraform Cloudのセットアップ

ここからは、Terraform Cloud内にTerraformのワークスペースを作成してリソースをプロビジョニングしていく作業になる。

基本的にはtfc-getting-startedプロジェクトをローカルにcloneしてきて、scripts/setup.shを実行するだけでよい。

なおこの記事のタイトルにも書いている、クラウドサービス(AWS等)のアカウント不要の秘密は、このプロジェクトで使っている以下のproviderにある。

provider.tf
# 以下抜粋
...
provider "fakewebservices" {
  token = var.provider_token
}

fakewebservicesはTerraform Cloudの検証専用のモッククラウドサービスで、vpc、load_balancer、server、databaseの全4種類のリソースを生成できる。

(fakewebservicesのドキュメントはこちら)

この種明かしを見て、やはりクラウドサービス上でリソースの作成、変更、破棄を行いながら、Terraform Cloudの動作確認をしたいと思ったのであれば、残念ながらクラウドサービスのアカウントおよびプロジェクトを作成する必要がある。

(クラウドサービスを使用してTerraform Cloudの検証を行う場合は、tfc-getting-startedではなく、チュートリアルの手順でセットアップを行わないといけない点に注意)

とりあえずここでは、fakewebservicesに対するプロビジョニングをTerraform Cloud上で実行する方法を説明していく。

セットアップはscripts/setup.shを実行するだけが、実行後にキーボード入力を要求されるので、勢い余ってsetup.sh実行時にEnterキーを連打しないように気をつけたい。

$ scripts/setup.sh
...
First, we'll do some setup and configure Terraform to use Terraform Cloud.

Press any key to continue (ctrl-c to quit):

とはいえ、これ以降発生する計4回の入力要求に対しては、すべて何も入力せずにEnterを実行するだけになる。

まず最初の入力要求でEnterを実行すると、Terraform Cloud上に検証用のオーガナイゼーションとワークスペースが作成される。

ためしにTerraform Cloudにアクセスすると、オーガナイゼーションとワークスペースが作成されていることが確認できる。

...
Next, we'll run 'terraform init' to initialize the backend and providers:

$ terraform init

Press any key to continue (ctrl-c to quit):

次の入力要求に対しても、何も入力せずにEnterを実行。

するとterraform initがローカルで実行され、先ほど作られたワークスペース上でtfc-getting-startedプロジェクトを実行する準備が完了する。

Now it’s time for 'terraform plan', to see what changes Terraform will perform:

$ terraform plan

Press any key to continue (ctrl-c to quit):

...

$ terraform apply -auto-approve

Press any key to continue (ctrl-c to quit):

ここからterraform planコマンド、terraform applyコマンドと続くことになるが、両方ともEnterを実行する。

その際、ターミナルに出力される情報や、Terraform Cloud上で実行されたコマンドの履歴(以下画面)などを確認しながら、検証を進めていくと良い。

4. Private Registry検証用のモジュール追加

(※)以下の手順は面倒なので、Private Registry関連の機能を試したい人のみ推奨

これまでの手順でTerraform Cloudに対してオペレーションを行ったり、Terraform Cloudの機能をUI上から試せるようになったが、Private Registryおよびそれに付随する機能であるConfiguration Designer等は、何かしらのモジュールを登録しなければ操作を試すことができないため、検証用のモジュールを以下の手順で登録する必要がある。

検証用モジュール作成

検証用モジュールの作成手順はGithubを使用する前提で説明する。

まず初めに、自分のGithubアカウント内にHashicorpが提供する検証用モジュールのサンプルリポジトリをforkしてくる必要がある。

それではサンプルリポジトリにアクセスして、以下の赤枠部のForkボタンをクリックする。

次にModule Registryのモジュール命名規則であるterraform-<PROVIDER>-<NAME>に合わせるために、Repository nameをterraform-aws-s3-webappに変更して、画面下部にあるCreate forkボタンをクリックする。

これで検証用モジュールの作成は完了となる。

Terraform Cloudに検証用モジュール登録

次にTerraform Cloudにアクセスして、検証用モジュールのリポジトリを認識させる作業を行う。

Registry機能の赤枠部にあるPublishボタンと、その中にあるModuleリンクをクリック。

次の画面では連携先としてGithubを選択。

選択するとポップアップ画面が表示されて、Terraform CloudからGithubへのアクセスを許可するか確認されるので、Authorize Terraform Cloudボタンを押す。

するとポップアップ内に、Githubのオーガナイゼーションの選択画面が表示されるので、自分のアカウントを選択。

さらに次の画面ではOnly select repositoriesをチェックして、Select repositoriesプルダウンをクリック。

入力ボックスには先ほど作成したterraform-aws-s3-webappを入力して選択する。

あとは画面下部のInstallボタンをクリックすれば、検証用リポジトリとTerraform Cloudの連携は完了となる。

Registry機能の画面に戻ると、terraform-aws-s3-webappリポジトリが認識されている状態になるので、これをクリック。

最後の画面では、検証用リポジトリのコード取得先をmaster、モジュールのバージョンを1.0.0と入力して、最後にPublish moduleボタンを押してモジュールを作成する。

もしモジュール内にあるテストコードの実行(自動生成ではない)も行うようにしたい場合は、Enable testing for Moduleもチェックする。

これでPrivate Registry関連の機能を利用できるようになった。

おわり

検証が完了したら、必要に応じてTerraform Cloud上のオーガナイゼーションの削除や、ローカルマシンでのログアウトを行う。

$ terraform logout

以上がTerraform CloudをFree Edition向けの機能を試すための(おそらくは)最短の手順になる。

もしTerraform Cloudの新しい機能や価値を発見した場合は、コメントなどで教えていただきたい。

Discussion