最初に
こんにちは たそ(@taso_int)です。 1年も半分が過ぎようとしています。色々忙しいですね。 6/14~6/16までInteropが開催されます。私は2日目と3日目に参加します。 なので私に会いたい方は2日目か3日目にお願いします。(需要ゼロ)
今日はTerraform Cloudを触っていこうと思います。 公式にTerraform Cloudのチュートリアルをそのまま進めていきます。 ローカルからTerraform cloudにアクセスし、AWS内にEC2インスタンスを立てます。
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のクレデンシャル準備
インストール
ターミナルからサクッとインストールします。他のインストールに関してはドキュメントを参考にしてください。
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_ID
とAWS_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でも試してみたいので近いうちにやろうと思います。 ここまで読んでいただきありがとうございました。