🌟
たしなむ程度にTerraform
Terraformとは
HashiCorpという会社が開発した、いわゆるIaC(Infrastructure as Code)です。IaCとは様々なインフラ構成や運用の管理をコードで行うということです。
今回はTerraformを使って簡単にローカルにnginxをデプロイしてみたいと思います。
動かしてみる
まずは、こちらからterraform cli
をインストールします。
次に適当にディレクトリを作ってそこへ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