💫

TerraformでAWS,Google Cloudをさわってみる

2024/11/24に公開

はじめに

  • terraformとはなにか?は知っているが、使ったことのなかったので環境構築含めて動かしていきます。

前提条件

  • aws cliインストール済、プロファイル作成済

環境構築

  • terraform の install(バージョン管理ツール経由)
    • asdfをもとからつかっていたため、tfenvを新たに使を管理ツールが増えるという理由でasdfを採用しています
  • versionはブログ投稿時の最新
asdf plugin add terraform
asdf list all terraform
asdf install terraform 1.9.8
asdf list terraform
asdf global terraform 1.9.8
# シェルを再起動 / リロード
terraform -v
  • vscode へ拡張追加

  • HashiCorp Terraform

  • vscodeの設定ファイルで自動フォーマット追加

  • terraform: tf file config

  • terraform-vars: tfvers file config

setting.json
  "[terraform]": {
    "editor.defaultFormatter": "hashicorp.terraform",
    "editor.formatOnSave": true,
    "editor.formatOnSaveMode": "file"
  },
  "[terraform-vars]": {
    "editor.defaultFormatter": "hashicorp.terraform",
    "editor.formatOnSave": true,
    "editor.formatOnSaveMode": "file"
  },

簡単な構築(EC2)

main.tf
provider "aws" {
  profile = "your_profile_name"
  region  = "ap-northeast-1"
}

# aws instance作成
resource "aws_instance" "hello-world" {
  ami           = "ami-023ff3d4ab11b2525"
  instance_type = "t2.micro"
}
  • deploy
terraform init
terraform apply
  • 変更を確認し問題なかったらyes
  • EC2が起動した

  • terraform.tfstateに構築情報がみえる

  • EC2情報変更

main.tf
  tags = {
    Name = "HelloWorld"
  }
  • deploy(変更)
terraform apply

  • destroy(削除)
terraform destroy

簡単な構築(Compute Engine)

  • アプリケーションのデフォルトログインを設定します
gcloud auth application-default login
  • Activeなアカウントは以下で確認します
gcloud auth list
  • インスタンス起動の簡単なサンプルです。deploy,destroyを試してみてください。
main.tf
provider "google" {
  project = "terraform-private-442702"
  region  = "asia-northeast1"
  zone    = "asia-northeast1-a"
}

resource "google_compute_instance" "default" {
  name         = "terraform-instance"
  machine_type = "e2-medium"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {}
  }

  tags = ["web", "dev"]
}

output "instance_name" {
  value = google_compute_instance.default.name
}

さいごに

今回、Terraformを使った環境構築の流れをAWSおよびGCPのEC2インスタンスを例に解説しました。Terraformはインフラのコード化を可能にし、リソース管理をシンプルかつ再現可能にしてくれます。このように、簡単なコマンド操作で環境を作成、変更、削除できるのは非常に便利です。

これからTerraformを使い始める方も、まずは今回紹介したようなシンプルな構築から試してみてください。実際に手を動かすことで、その利便性や強力さを感じられるはずです。

次のステップとしては、複数のリソースを扱ったり、モジュールを使ったり、ステート管理のバックエンドを設定してより大規模なインフラ構成を試してみるのも良いかと思います。

Terraformを活用して、インフラ管理を効率化し、より快適な開発環境を手に入れましょう!

Discussion