今更感はありますが最近 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 | 作成したリソースを破棄・削除する |
調べたこと、気づいたこと
STATE ファイルについて
作成したリソースの情報は STATE ファイルと呼ばれるファイルに保存される。ファイル名のデフォルトは terraform.tfstate
他の開発者とリソース状況を共有するには STATE ファイルをネットワーク上に持つ必要がある。これは Backends という設定で制御でき、Terraform Cloud や S3 など様々なネットワーク上のストアに対応している。
→ https://www.terraform.io/language/settings/backends
AWS 上に作成したリソースの扱い
AWS 上のリソースを管理する際、CloudFormation は特に関連せず。
なので STATE ファイルを無視すれば「リソースの初期作成のみ Terraform で、その後の運用は手動で」というパターンもキレイにできる。
学び始めに何度も見るサイト
公式のチュートリアル。いくつかのステップに分かれていて概要の説明、Terraform のインストールから説明されているので、まずはここから。
provider のレジストリ。ここから使いたい provider を探したり、ドキュメントを見ることが可能。学び始めだけではなく、おそらく Terraform を使っていく上で一番多く(長く)見ることになる。