LoginSignup
9
9

More than 1 year has passed since last update.

Terraform Cloudの始め方

Posted at
1 / 24

Terraform Cloudの始め方を解説します。
5人まで無料で使用できるので、個人利用の場合は、重宝できそうだと思い試してみます。
image.png


アカウント作成

こちらからアカウントを作成してください。
image.png


主な入力情報
  • ユーザ名
  • メールアドレス
  • パスワード
  • 利用規約の同意
  • プライバシーポリシーの同意

メールアドレス認証

こんな感じのメールが送られてくるので、URLをクリックし認証を行います。

Hello,

Please confirm this email address for your Terraform Cloud account by clicking on the link below:

https://app.terraform.io/confirmation?confirmation_token=XXXXXXXXXXXXXXXXXXX

Best,
HashiCorp

認証完了画面

認証完了です。
image.png
※ワークフローの選択がありますが、「サンプル構成で試すか」「自分で一から作るか」の選択になるので、今回は下の「自分で一から作る」かたちで始めます。


組織の作成

今回は、一人でしか使用しないので、ここは好きな名前でいいと思います。
※会社の場合は、会社名でいいかなと。
image.png


Workspaceを作成

今回は、バージョン管理ワークフローで作成していきます。
image.png


バージョン管理のプロバイダー

今回は、Githubを使用します。
image.png
※Github側の認証に入るので、認証を進めてください。


コードをGitHubにPush

ここからGithubに移ります。
Github上にリポジトリがないと、ワークスペースの作成ができない為、コードをPushしていきます。

・AWS ProviderとVPCを作成するコードをGitHubにPushします。

main.tf
variable "aws_access_key" {}
variable "aws_secret_key" {}

provider "aws" {
  access_key = var.aws_access_key
  secret_key = var.aws_secret_key
  region = "ap-northeast-1"
}

resource "aws_vpc" "test-vpc" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "test-vpc"
  }
}

リポジトリを選択し、ワークスペースを作成

image.png


ワークスペース作成完了

image.png


環境変数を追加

IAMユーザのアクセスキーとシークレットキーをTerraform Variablesに設定する。

  • aws_access_key
  • aws_secret_key

image.png


試しに実行してみる

Queue plan で実行してみる。
image.png


実行結果(Plan)

VPC作成しますよと出ていますね。
image.png


実行結果(Apply)

apply finished しているので、作成できていそうですね。
※デフォルトの設定だとApplyは手動でボタンをクリックすることによってapplyが走ります。
image.png


AWS側で確認

VPCが作成されていました!
image.png


MainにMerge自動plan & applyをやってみる

Applyを自動実行する設定に変更します。
SettingsからGeneralで、Apply MethodをAuto applyに変更し、Save settingsで保存です。
image.png


Pull Requestを出してみる

サブネットを作成してみます。
まずはテストとしてMulti-AZのSubnetを追加するコードをMainから切った別ブランチ(develop)にPushします。

main.tf
// 追加コード
resource "aws_subnet" "test-subnet-a" {
  vpc_id     = aws_vpc.test-vpc.id
  cidr_block = "10.0.0.0/28"
  availability_zone = "ap-northeast-1a"

  tags = {
    Name = "test-subnet-a"
  }
}

resource "aws_subnet" "test-subnet-c" {
  vpc_id     = aws_vpc.test-vpc.id
  cidr_block = "10.0.0.16/28"
  availability_zone = "ap-northeast-1c"

  tags = {
    Name = "test-subnet-c"
  }
}

実行結果(plan)

Pull Requestを作成すると自動でテスト(terraform plan)が走り、Terraform Cloud上ではこんな感じでテスト(terraform plan)が走っています。
image.png


実行結果(apply)

MainにMergeされると、自動的にapplyされます。
image.png


お片付け

環境のdestroyを実行したい場合、SettingsからDestruction and Deletionで、削除することが可能です。
image.png


まとめ

terraformのバージョン管理など自作で作ると大変な作業でしたが、クラウドサービスをうまく使えば、個人利用の範囲であれば活用できそうです。Terraform Cloudが自動実行されるタイミングはMainの変更とPull Request作成時のみとなっており、もちろんPull Rqeustのときはplanのみの実行で、MainにMergeされない限りapplyは実行されないため、安全なCI/CDが組めそうです。


終わり

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9