https://www.terraform.io/docs/providers/google/guides/provider_versions.html
β機能をサポートした google-beta というProviderもある。
「要するに、ふつうの gcloud
コマンドの代わりに gcloud beta
コマンドを使うようなもの」
NOTE:
Google Provider Configuration Reference - Terraform by HashiCorp
SYNOPSIS:
provider "google" {
//credentials = "${file("account.json")}"
project = "my-project-id"
region = "us-central1"
zone = "us-central1-c"
version = "3.19.0"
}
credentials
GOOGLE_CREDENTIALS
or GOOGLE_CLOUD_KEYFILE_JSON
or GCLOUD_KEYFILE_JSON
による指定も可能。See also:
未分類のもの:
Providerリファレンスで、「Google Cloud Platform Resources」というカテゴリに属するもの。
Examples:
resource "google_service_account" "terraform" {
account_id = "terraform"
}
resource "google_service_account_key" "terraform_key" {
service_account_id = google_service_account.terraform.name
private_key_type = "TYPE_GOOGLE_CREDENTIALS_FILE"
}
# ローカルにService Account KeyのJSONを保存する
resource local_file "terraform_key_json" {
filename = "./tmp/terraform_service_account_key.json"
content = base64decode(google_service_account_key.terraform_key.private_key)
file_permission = "0600"
directory_permission = "0755"
}
https://www.terraform.io/docs/providers/google/r/google_project_iam.html
google_project_iam_policy
google_project_iam_binding
… role : member = 1 : Nの権限を設定する。Service Accountの権限にも対応google_project_iam_member
… role : member = 1 : 1の権限を設定する。Service Accountの権限にも対応google_project_iam_audit_config
ネットワーク関係:
EXTERNAL
なアドレスも発行できる。Cloud NATに使うのはこっち参考:
限定公開クラスタ(パブリックエンドポイント有り)
resource "google_container_cluster" "experiment" {
name = "experiment"
location = "asia-northeast1"
private_cluster_config {
enable_private_nodes = true
enable_private_endpoint = false
master_ipv4_cidr_block = "172.16.0.0/28"
}
ip_allocation_policy {
# GKE管理のサブネットを作成してもらう
cluster_ipv4_cidr_block = ""
services_ipv4_cidr_block = ""
}
}
google_pubsub_topic_iam_policy
… 該当トピックに対する全ロール x 全メンバーの権限を含むポリシーを管理するgoogle_pubsub_topic_iam_binding
… 特定のロールを持つメンバーセットを管理するgoogle_pubsub_topic_iam_member
… 特定のロール x メンバーの組み合わせを1つ1つ管理するgoogle_pubsub_topic_iam_member
を使うのが無難google_pubsub_subscription_iam_policy
… 該当サブスクリプションに対する全ロール x 全メンバーの権限を含むポリシーを管理するgoogle_pubsub_subscription_iam_binding
… 特定のロールを持つメンバーセットを管理するgoogle_pubsub_subscription_iam_member
… 特定のロール x メンバーの組み合わせを1つ1つ管理する参考:
https://www.terraform.io/docs/providers/google/r/storage_bucket_iam.html
Pub/SubのTopic/Subscription IAMと同じように3種類のリソースが用意されている。
google_storage_bucket_iam_policy
… そのバケットに対するIAM x 権限(Role)をフルコントロールしたい場合に使うgoogle_storage_bucket_iam_binding
… そのバケットに対して特定のRoleの権限を持つIAMメンバーリストを管理するgoogle_storage_bucket_iam_member
… 特定の (IAM x Role) の組合せを管理する。既存の他の権限セットとは独立して管理することが可能特定のIAMアカウントに対して権限を追加したい場合、基本的には google_storage_bucket_iam_member
を使えばよさそう。
Resources: