👻

Terraformのクイックスタート

2025/02/14に公開

クイックスタート

概要

このクイックスタートでは、Terraform を使用して Docker コンテナを作成し、NGINX サーバーを起動する手順を解説します。 主に公式のドキュメントを参考にしています。

これは、初心者を対象としています。以下に関する基本的な知識を持っていることを前提としています

  • Dockerおよびコンテナの概念(nginxコンテナを実行するため)
  • 基本的なコマンドライン操作(ls、cd、mkdirなど)

始める前に

  • Terraformをインストールしていること
  • Dockerデスクトップをインストールしていること

リソースを作成する

Terraformを実行して、Dockerコンテナを作成します。

ファイルの作成

適当なディレクトリを作成し、その中にmain.tfという名前のファイルを作成します。

$ mkdir terraform-docker
$ cd terraform-docker
$ touch main.tf

TerraformではHCL(HashiCorp Configuration Language)という言語を使用して、インフラストラクチャをコード化します。Terraformは実行しているディレクトリにある
*.tf ファイルを読み込みます。tf拡張子であればファイル名は何でも構いませんが、慣習的に 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  = "quickstart-nginx"

  ports {
    internal = 80
    external = 8000
  }
}

初期化を行い、Terraformのプロバイダーをインストールします。

$ terraform init

ls コマンドを実行して、生成されたファイルを確認します。

$ ls -a1
.
..
.terraform
.terraform.lock.hcl
main.tf
terraform.tfstate

.terraformディレクトリは、Terraformがキャッシュされたプロバイダプラグインやモジュールの管理、現在アクティブなワークスペースの記録、などを管理するために使用されます。
terraform.tfstateファイルは、よく「ステートファイル」と呼ばれ、Terraformが管理しているインフラストラクチャの状態を記録するために使用されます。

apply コマンドを実行して、リソースを作成します。Terraformから承認を求められた場合は、yes を入力してください。

$ terraform apply

ブラウザで http://localhost:8000 にアクセスして、NGINXのデフォルトページが表示されることを確認します。

コンテナを停止するには、destroy コマンドを実行します。Terraformから承認を求められた場合は、yes を入力してください。

$ terraform destroy

Next Steps

これで、Terraformを使用してDockerコンテナを作成し、NGINXサーバーを起動する方法を学びました。
次のステップとして、好きなクラウドに実際にインフラストラクチャを作成する方法を学びましょう。

  • AWS
  • Azure
  • GCP

Discussion