🌟

たしなむ程度にTerraform

2023/04/08に公開

Terraformとは

HashiCorpという会社が開発した、いわゆるIaC(Infrastructure as Code)です。IaCとは様々なインフラ構成や運用の管理をコードで行うということです。

今回はTerraformを使って簡単にローカルにnginxをデプロイしてみたいと思います。

動かしてみる

まずは、こちらからterraform cliをインストールします。
https://developer.hashicorp.com/terraform/downloads

次に適当にディレクトリを作ってそこへmain.tfファイルを作成します。main.tfには以下のように構成します。

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.0.1"
    }
  }
}

provider "docker" {}

resource "docker_image" "nginx" {
  name         = "nginx"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.image_id
  name  = "tutorial"

  ports {
    internal = 80
    external = 8000
  }
}

TerraformがDockerを操作できるようにするために必要なプロバイダーというプラグインをダウンロードするプロジェクトを初期化します。

$ terraform init

applyコマンドによってnginxサーバをプロビジョニングします。
※確認を求められたらyesと入力します。

プロビジョニングとは、必要に応じてネットワークやコンピュータの設備などのリソースを提供できるよう予測し、準備しておくことです。

$ terraform apply
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

と表示されればDocker上にコンテナが作成されてnginxが動いているはずなのでlocalhost:8000にアクセスしてみてnginxのページが表示されれば成功です。

削除する場合は以下のようにします。
※こちらも確認を求められたらyesと入力します。

$ terraform destroy

Terraform(HCL)の構文、書き方

terraform

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.0.1"
    }
  }
}

terraform{}はterraformがインフラストラクチャのプロビジョニングに使用するのに必要なプロバイダーなど、Terraformの設定が含まれています。

required_providers

required_providers {
  docker = {
    source  = "kreuzwerker/docker"
    version = "~> 3.0.1"
  }
}

プロバイダーの要件は、ローカル名、ソースの場所、バージョンの制約で構成されます。

Discussion