Terraform を学び始めた僕へ

HashiCorp Terraform 技術メモ

今更感はありますが最近 Terraform を触り始めました。

個人的に Chef や Ansible 、AWS CloudFormation 等のいわゆる IaC 関連の技術には比較的触れていましたが、Terraform はちょっと機会が無くてようやく…です。

本稿では、Terraform というツール自体について学んだ事と、よく見るサイトのリンクをまとめておきます。内容は随時追記していく予定。

インストールや基本的な使い方は後述の公式チュートリアルでしっかりフォローされているのでここでは触れません。あしからず。

そもそも Terraform とは?

公式サイト : https://www.terraform.io/

HashiCorp によって開発された、主にクラウドサービスの環境を管理するための IaC ツール。

特定のクラウド環境に特化したものではなく、AWS / GCP / Azure といった IaaS や Elasticstack のような SaaS など様々なサービスに対応している。この対応範囲の広さは各環境向けに用意された provider と呼ばれるモジュールを利用することで実現されている。
https://www.terraform.io/intro

クラウド環境だけではなく、ローカル環境における Docker や Kubernetes、VMware の環境構築なども可能。

Terraform はオープンソースで開発が進められており MPL-2.0 のもとで無料での利用が可能。なお、Terraform Cloud などの付随する有料の機能もある。

利用の基本的な流れ

設定ファイルでリソースを定義する

Terraform’s Configuration Language と呼ばれる書式を利用して、構築するリソースを宣言する。このときファイルの拡張子は通常 .tf とする。

HashiCorp 謹製の VSCode 拡張機能が有るため、導入しておくと書きやすい。

Terraform’s Configuration Language で書かれた設定ファイルの例

resource "aws_vpc" "main" {
  cidr_block = var.base_cidr_block
}

<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
  # Block body
  <IDENTIFIER> = <EXPRESSION> # Argument
}
CLI コマンドによる操作

設定ファイルを作成後、terraform CLI を利用してチェックや実際のリソース作成等を行う。
terraform CLI にはサブコマンドが多数用意されている。主に使うものをリストアップする。

サブコマンド説明
validate設定ファイルに誤りがないかチェックする
plan設定ファイルによってどのようにリソースが変化するのか確認する
apply設定ファイルの内容に従ってリソースの作成を実行する
show作成されているリソースを表示する
destroy作成したリソースを破棄・削除する
terraform cli の主なサブコマンド

調べたこと、気づいたこと

STATE ファイルについて

作成したリソースの情報は STATE ファイルと呼ばれるファイルに保存される。ファイル名のデフォルトは terraform.tfstate

他の開発者とリソース状況を共有するには STATE ファイルをネットワーク上に持つ必要がある。これは Backends という設定で制御でき、Terraform Cloud や S3 など様々なネットワーク上のストアに対応している。
https://www.terraform.io/language/settings/backends

AWS 上に作成したリソースの扱い

AWS 上のリソースを管理する際、CloudFormation は特に関連せず。

なので STATE ファイルを無視すれば「リソースの初期作成のみ Terraform で、その後の運用は手動で」というパターンもキレイにできる。

学び始めに何度も見るサイト

公式のチュートリアル。いくつかのステップに分かれていて概要の説明、Terraform のインストールから説明されているので、まずはここから。

Terraform Tutorials - HashiCorp Learn
Learn to provision infrastructure with HashiCorp Terraform

provider のレジストリ。ここから使いたい provider を探したり、ドキュメントを見ることが可能。学び始めだけではなく、おそらく Terraform を使っていく上で一番多く(長く)見ることになる。

Terraform Registry
タイトルとURLをコピーしました