TL;DR
- プロバイダは
terraform initでダウンロードされる実行可能な Plugin で、required_providersブロックで定義する。 - AWS と Google Cloud のプロバイダを例に、設定の書き方と主な引数を見る。
内容
第3章 Terraformをはじめようの 3.2 節。公式ドキュメントは https://developer.hashicorp.com/terraform/language/providers 。
Terraform のプロバイダ
プロバイダは、terraform init の実行時にダウンロードされる実行可能な Plugin である(第1章を参照)。プロバイダは Terraform Registry で配布されており、自分で作って配布することもできる。
使うプロバイダは terraform ブロックの中の required_providers ブロックで定義する。provider ブロックには、認証情報やプロジェクトの詳細など、初期化に必要な引数を書く。どのファイル(.tf / .tf.json)に書いてもよいが、慣習として providers.tf や required_providers.tf という名前のファイルにまとめるとよい。
引数はプロバイダごとに異なるが、どのプロバイダも version と alias のメタ引数に対応している。
provider "azurerm" {
features {}
alias = "nonprod_01_subscription"
}AWS のプロバイダ
AWS のプロバイダ(https://registry.terraform.io/providers/hashicorp/aws/latest)は次のように書く。
terraform {
required_version = ">= 1.7"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.32.1"
}
}
}
provider "aws" {
region = "us-east-1"
access_key = "..."
secret_key = "..."
}主な引数は次の 3 つで、どれも任意である(一覧)。
access_key: AWS のアクセスキーsecret_key: アクセスキーに対応するシークレットキーregion: リソースをデプロイするリージョン
それぞれ環境変数 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION から取得できる。プロファイルを指定した場合は、認証情報ファイルから取得することもできる。
Google Cloud のプロバイダ
Google Cloud のプロバイダ(https://registry.terraform.io/providers/hashicorp/google/latest)は次のように書く。
terraform {
required_version = ">= 1.7"
required_providers {
google = {
source = "hashicorp/google"
version = "5.12.0"
}
}
}
provider "google" {
credentials = file("account.json")
project = "my-google-project-id"
region = "europe-west2"
zone = "europe-west2-b"
}主な引数は次のとおりで、どれも任意である(一覧)。
credentials: Google Cloud へのログイン情報を持つ JSON ファイルのパス。非推奨であるproject: リソースを管理する Google Cloud のプロジェクト名region: リソースを配置するリージョンzone: リージョン内の特定のゾーン