AWS CloudShellでTerraformを実行してみた

Terraform実行環境の準備は、多分これが一番早いと思います

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。AWS事業本部トクヤマシュンです。

本ブログでは、AWS CloudShellでTerraformを実行する方法をお伝えします。

AWS CloudShellとは?

AWSマネジメントコンソールから利用できる、ブラウザベースの超お手軽シェル環境です。
AWS CLI v2がインストールおよび設定されており、起動ユーザーのIAM権限を使ってAWSコマンドを即座に実行できます。
また、Gitなどのいくつかのツールもプリインストールされています。

起動はマネジメントコンソール右上のロゴをクリックするだけです。

詳細はAWS CloudShell ユーザーガイドをご覧ください。

AWS CloudShellでTerraformを実行する

TerraformはCloudShellに事前インストールされていないため、インストールから始めます。
任意のバージョンを実行するため、ここではtfenvを使います。

HOMEディレクトリにcloneし、シンボリックリンクを作ってパスを通します。
tfenvを使って、利用したいバージョンx.x.xのterraformをインストールします。

cd ~
git clone https://github.com/tfutils/tfenv.git ~/.tfenv
mkdir -p ~/.local/bin/
sudo ln -s ~/.tfenv/bin/* ~/.local/bin/
tfenv install x.x.x
tfenv use x.x.x

インストールは以上で、初回だけ実行すればOKです。
これで実行環境の準備は完了です。
Terraformのバージョン確認コマンドを実行し、次のように表示されればOKです。

$ terraform -version
Terraform vx.x.x // インストールしたバージョンを表示
on linux_amd64

デモ

では、簡単なデモとしてS3バケットを作成してみます。
下記のようなTerraformテンプレートを用意します。

main.tf

data "aws_caller_identity" "this" {}

terraform {
  required_version = "~> 1.2.6"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.23.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

resource "aws_s3_bucket" "terraform_cloudshell_demo" {
  bucket = "terraform-cloudshell-demo-${data.aws_caller_identity.this.account_id}"
}
resource "aws_s3_bucket_acl" "terraform_cloudshell_demo" {
  bucket = aws_s3_bucket.terraform_cloudshell_demo.id
  acl    = "private"
}

このmain.tfはGithubにもアップロードしています。

CloudShellから下のコマンド群を実行することで、Terraformを使ってS3バケットを作成することができます。

cd ~
git clone https://github.com/tfutils/tfenv.git ~/.tfenv
mkdir -p ~/.local/bin/
sudo ln -s ~/.tfenv/bin/* ~/.local/bin/
tfenv install 1.2.6
tfenv use 1.2.6
git clone https://github.com/toku-shun/terraform-cloudshell-demo.git
cd ~/terraform-cloudshell-demo/
terraform init
terraform plan
terraform apply

マネジメントコンソールから確認すると、S3バケットが作成できていることが確認できました。

最後にterraform destroyでS3バケットを削除し、cloneしたディレクトリも削除しておきます。

cd ~/terraform-cloudshell-demo/
terraform destroy
cd ~
rm -rf ~/terraform-cloudshell-demo/

注意点

とても便利なCloudShellを使ったTerraform実行ですが、いくつか注意点があります。

  • 120日間セッションがなければHOMEディレクトリ削除
    • tfstateファイルが削除されると悲惨なので、backendはS3に設定しましょう
      • デモはbackendを設定せず、localにtfstateファイルを保存しています
  • HOMEディレクトリの容量が1GB
    • 大容量のリポジトリは使えません

以上です。

趣味のスパイスカレー

私の趣味はスパイスカレー作りで、ブログに投稿していってます。
相変わらずAWSには全然関係ありませんが、また何かやってんなとお付き合いいただけますと幸いです。

  • ほうれん草豚キーマ
  • キュウリとトマトのライタ

ほうれん草がたっぷり入ったヘルシーな豚キーマカレーです。
カリカリに炒めた豚キーマとホクホクのじゃがいもの食感がコントラストになって楽しいです! 見た目ほど辛くはなく、多くの人に美味しく食べてもらえるカレーができました。

最後に

AWS CloudShellを使ってTerraformを実行してみました。
紹介した方法を使えば、すぐにでもTerraformを実行できますので、一度お試しください。
本ブログがどなたかのお役に立てば幸いです。