たそ@ITインフラ初心者

taso@初心者エンジニア

新卒2年目 エンジニアが適当に語るブログてす

Terraform Cloudを使ってみた

最初に

こんにちは たそ(@taso_int)です。 1年も半分が過ぎようとしています。色々忙しいですね。 6/14~6/16までInteropが開催されます。私は2日目と3日目に参加します。 なので私に会いたい方は2日目か3日目にお願いします。(需要ゼロ)

今日はTerraform Cloudを触っていこうと思います。 公式にTerraform Cloudのチュートリアルをそのまま進めていきます。 ローカルからTerraform cloudにアクセスし、AWS内にEC2インスタンスを立てます。

developer.hashicorp.com

Terraform Cloudとは

Terraform Cloudは、HashiCorpによって提供されるInfrastructure as Code (IaC)ツール、Terraformのクラウドベースのプラットフォームを指します。

Terraformを動かす際に、ローカル マシンではなく一貫性のある信頼性の高い環境で Terraform の実行を管理することでデータや機密情報を安全に保存することが出来ます。さらにバージョン管理システム(GitHub)に接続が出来るので、管理や開発がしやすくなります。

まだ全容が分かってないですが、個人的にはTerraformの実行をTerraform Cloud側が担ってくれるのは結構ありがたいと思いました。

内容

最初に話した通り、公式にTerraform cloudのチュートリアルをそのまま進めていきます。 ゴールとしてはAWS内にEC2インスタンスを立てるところになります。

https://developer.hashicorp.com/terraform/tutorials/cloud-get-started/cloud-sign-up

環境

以下に環境と準備について書いておきます。
今回はAWSでTerraformのCLIを実行するためにインスタンスを立てましたが、GitHubのCodespacesでやるのもありだと思いました。

実行環境 AWS
Amazon linux t2.micro
Terraform v1.4.6 on linux_amd64

その他
Terraform Cloudのログイン準備および組織の作成
AWSのクレデンシャル準備

インストール

ターミナルからサクッとインストールします。他のインストールに関してはドキュメントを参考にしてください。

developer.hashicorp.com

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
sudo yum -y install terraform
$ terraform version
Terraform v1.4.6 on linux_amd64

Terraform Cloudと連携

ブラウザTerraform Cloudにアクセスをして、Tokenを生成します。 余談ですが最初API Tokenを生成して、その後のTerraform の実行に失敗しました。 恐らくユーザーのTokenが必要になるかと思います。

https://app.terraform.io/app/settings/tokens

ターミナルからTerraform Cloudにログインします。

Terraform login
Do you want to proceed?
  Only 'yes' will be accepted to confirm. ## yesとうつ

  Enter a value: yes

Token for app.terraform.io:
  Enter a value: <API token>

上手く行くとログインできます。

クレデンシャルの登録

Terraform Cloudには変数セットがあり、そこに変数を登録することでワークスペースなどで再利用することが可能です。 今回だとAWSのクレデンシャルが当てはまります。

Setting→Variable sets→Create Variable setで作成できます。 KeyとValueで登録することが出来て、複数登録が可能です。 今回はAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYをenvironmentのオプションを選択して登録します。 またSensitiveの属性を付けることで隠すことが出来ます。

ワークスペースの作成

チュートリアル用にリポジトリがあるので、ターミナルからそれをCloneします。

https://github.com/bashicorp/learn-terraform-cloud.git

git clone https://github.com/bashicorp/learn-terraform-cloud.git
cd learn-terraform-cloud

terraform.tfにTerraform CloudとAWSの情報があり、Terraform Cloudのorganizationを自分が設定した組織名に変更します。

その後terraform initを実行し、Terraform Cloud has been successfully initialized!が出れば、問題ないです。

実際にWorkspacesに追加されます。

Terraform変数の登録

ワークスペース内で使用する変数を登録します。 ワークスペース→Variable→Workspace variables→Add variable

今回はinstance_nameとinstance_typeを設定します。

Terraformの実行

ターミナルからTerraform applyを実行します。問題なければ成功します。 今回はus-west-1(北カリフォルニア)で作成されています。

またTerraform Cloud側で実行履歴や何を作成したかを画面で確認できます。

Terraform CloudのUIで実行する場合は、runs→Start a new runで実行できます。

作成リソースの削除

リソースが作られたことが確認できたので、削除します。 ターミナルからTerraform destroyを実行します。

Terraform CloudのUIで実行する場合は、Setting→Destruction and Deletion→Queue destroy planを実行します。

Runsの同カテゴリではなかったです。

感想

Terraform Cloudを少し触ってみましたが、めちゃくちゃ便利ですね。 クレデンシャルの管理とか実行履歴系など欲しいところをちゃんと機能としてあるのがとても良いと思いました。 Azureでも試してみたいので近いうちにやろうと思います。 ここまで読んでいただきありがとうございました。