问题:为了解决表的 GCP 数据目录标记的一些其他问题,将 terraform 从 0.14.4 更新到 1.0.8 后,我在尝试应用 terraform 时遇到了新错误。
\n\xe2\x94\x82 Error: Request cancelled\n\xe2\x94\x82 \n\xe2\x94\x82 with module.ds-bigquery.google_bigquery_table.prism_tables_no_partition["co.expenses"],\n\xe2\x94\x82 on ds-bigquery/bq-prism-tables.tf line 249, in resource "google_bigquery_table" "prism_tables_no_partition":\n\xe2\x94\x82 249: resource "google_bigquery_table" "prism_tables_no_partition" {\n\xe2\x94\x82 \n\xe2\x94\x82 The plugin.(*GRPCProvider).UpgradeResourceState request was cancelled.\nRun Code Online (Sandbox Code Playgroud)\n和这个痕迹
\nStack trace from the terraform-provider-google_v3.61.0_x5 plugin:\n\npanic: interface conversion: interface {} is string, not map[string]interface {}\n\ngoroutine 4466 [running]:\ngithub.com/hashicorp/terraform-provider-google/google.bigQueryTablecheckNameExists(0xc000df9600, 0x1, 0x1, 0x0, 0x2d21b78)\n /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-google/google/resource_bigquery_table.go:26 +0x164\ngithub.com/hashicorp/terraform-provider-google/google.jsonCompareWithMapKeyOverride(0x2526520, 0xc000543940, 0x2526520, 0xc000543ae0, 0x2d22688, 0x40c201, 0xc000df9f30, 0x10)\n /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-google/google/resource_bigquery_table.go:47 +0x63f\ngithub.com/hashicorp/terraform-provider-google/google.jsonCompareWithMapKeyOverride(0x275dac0, 0xc000c5ec00, 0x275dac0, 0xc000c5f140, 0x2d22688, 0x1, 0xc000f90120, 0xc000fd1000)\n …Run Code Online (Sandbox Code Playgroud) 我目前被列为 Google Workspace 管理员,但由于某种原因,我似乎仍然无法执行某些操作,例如创建文件夹来组织项目。我们使用 terraform 生成一些项目,生成的项目仅授予对权限中直接指定的项目的访问权限。
我看到网站上引用的继承权限/访问权限。我们如何设置它,以便我和其他一些人始终继承访问权限以查看为组织创建的每个项目?
google-cloud-platform terraform google-iam google-cloud-iam terraform-provider-gcp
我想从 GKE 集群 Pod 访问我的 CloudSQL 实例。由于我正在设置,所以我需要携带与 Terraform 配置文件相关的所有 GCP。
按照本教程进行操作:https://cloud.google.com/sql/docs/mysql/quickstart-kubernetes-engine#gcloud_2
我被困在描述创建对等 vpc 连接的两个步骤中。
所以我的问题是以下两个命令的 Terraform 等效项是什么:
gcloud compute addresses create google-managed-services-default \
--global \
--purpose=VPC_PEERING \
--prefix-length=16 \
--description="peering range for Google" \
--network=default
Run Code Online (Sandbox Code Playgroud)
和
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=google-managed-services-default \
--network=default
Run Code Online (Sandbox Code Playgroud)
我试图在https://registry.terraform.io/providers/hashicorp/google/latest/docs中找到它,但找不到合适的。
在GCP上,我尝试使用下面的 Terraform 代码运行Cloud Run服务“renderer”,在此代码中,我使用plus(连接“gcr.io/”、变量var.project_id和“/renderer:latest” +) :
resource "google_cloud_run_service" "renderer" {
name = "renderer"
location = "asia-northeast1"
template {
spec {
containers {
image = "gcr.io/" + var.project_id + "/renderer:latest" // Here
}
service_account_name = google_service_account.renderer_identity.email
}
}
traffic {
percent = 100
latest_revision = true
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我应用上面的代码时,出现以下错误:
resource "google_cloud_run_service" "renderer" {
name = "renderer"
location = "asia-northeast1"
template {
spec {
containers {
image = "gcr.io/" + var.project_id + …Run Code Online (Sandbox Code Playgroud) google-cloud-platform terraform devops terraform-provider-gcp google-cloud-run
我可以使用 Terraform 资源google_storage_bucket创建 Google Cloud Storage Bucket 。
\n但我无法找到带有labels参数的示例,也无法找到有效的语法。
以下通过terraform plan:
resource "google_storage_bucket" "report_staging" {\n name = "some-unique-name"\n \n labels = {\n key = "env" \n value = "dev"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n但给出了 400 错误terraform apply
\xe2\x95\xb7\n\xe2\x94\x82 Error: googleapi: Error 400: Invalid argument., invalid\n\xe2\x94\x82\n\xe2\x94\x82 with module.ndpe_project.google_storage_bucket.report_staging,\n\xe2\x94\x82 on ....main.tf line 130, in resource "google_storage_bucket" "report_staging":\n\xe2\x94\x82 130: resource "google_storage_bucket" "report_staging" {\n\nRun Code Online (Sandbox Code Playgroud)\n我相信上面的语法实际上会创建两个名为“key”和“value”的键。这也将通过计划阶段:
\n\xe2\x95\xb7\n\xe2\x94\x82 Error: googleapi: Error 400: Invalid argument., invalid\n\xe2\x94\x82\n\xe2\x94\x82 with …Run Code Online (Sandbox Code Playgroud) 我是 Terraform 的新手,仍在研究文档,尚未找到一种方法来适应我需要实现的特定解决方案的设置,并希望某种灵魂能够能够推动我朝正确的方向前进。
我正在尝试管理一组参数化模板,这些模板部署支持我们在 GCP 中开发的新应用程序所需的一切。我想要实现的目标是能够将这些模板部署到三个不同的环境,每个环境本身都位于不同的 GCP 项目中。
根据建议,该计划是运行 terraform 并传入
a) 特定的 .tfvars 文件取决于部署到的环境/项目 (dev/test/prod)。
b) 使用 -chdir 参数告诉 Terraform 从“infra-common”文件夹中获取所有模板。
棘手的部分是我们希望每个环境(gcp 项目)在 gcs/storage 中托管它自己的状态文件。
我一直在研究工作区,但工作区似乎只会在单个后端上创建状态子文件夹。
问题:可以这样做或者有更好的方法吗?
谢谢!
我正在使用"google_sql_database_instance"资源来创建仅具有私有IP的云实例,并从变量文件或命令行参数中获取_private_network_的值,或者根本不提供任何值.
所有我想要实现的是,创建只有私有IP实例private_network提供,包括_private_network_参数仅如果提供了它的价值.这里的问题是这个变量不接受空字符串(""),因为它验证了下面的正则表达式.
"projects/((?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?)))/global/networks/((?:[a-z](?:[-a-z0-9]*[a-z0-9])?))$".
我如何创建一个可配置的模块(仅在提供private_network时创建私有IP实例,否则完全忽略该参数)并且不强制要求_private_network_变量的值?
我可以用来terraform在中部署Kubernetes群集GKE。
然后,我将提供程序设置Kubernetes如下:
provider "kubernetes" {
host = "${data.google_container_cluster.primary.endpoint}"
client_certificate = "${base64decode(data.google_container_cluster.primary.master_auth.0.client_certificate)}"
client_key = "${base64decode(data.google_container_cluster.primary.master_auth.0.client_key)}"
cluster_ca_certificate = "${base64decode(data.google_container_cluster.primary.master_auth.0.cluster_ca_certificate)}"
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,terraform与Kubernetes用户互动client,后者无权创建(例如)部署。因此,当我尝试通过以下方式应用更改时,出现此错误terraform:
Error: Error applying plan:
1 error(s) occurred:
* kubernetes_deployment.foo: 1 error(s) occurred:
* kubernetes_deployment.foo: Failed to create deployment: deployments.apps is forbidden: User "client" cannot create deployments.apps in the namespace "default"
Run Code Online (Sandbox Code Playgroud)
我不知道现在该如何进行,应该如何向client用户授予此权限?
如果将以下字段添加到提供程序,则我可以执行部署,尽管在阅读文档之后,这些凭据似乎用于HTTP与群集进行通信,如果通过Internet完成,则是不安全的。
username = "${data.google_container_cluster.primary.master_auth.0.username}"
password = "${data.google_container_cluster.primary.master_auth.0.password}"
Run Code Online (Sandbox Code Playgroud)
还有其他更好的方法吗?
kubernetes google-kubernetes-engine terraform-provider-gcp terraform-provider-kubernetes
我想使用 terraform 部署一个谷歌云运行服务。当我尝试通过“端口”块进行部署以定义容器端口时,出现错误,我必须从模板标记传递容器端口,但无法这样做。这是我的 .tf 文件 -
resource "google_cloud_run_service" "default" {
name = "cloudrun-srv"
location = "us-central1"
template {
spec {
containers {
image = "us.gcr.io/xxxxxx/xxxx.app"
port {
container_port = 19006
}
}
}
}
traffic {
percent = 100
latest_revision = true
}
}
data "google_iam_policy" "noauth" {
binding {
role = "roles/run.invoker"
members = [
"allUsers",
]
}
}
resource "google_cloud_run_service_iam_policy" "noauth" {
location = google_cloud_run_service.default.location
project = google_cloud_run_service.default.project
service = google_cloud_run_service.default.name
policy_data = data.google_iam_policy.noauth.policy_data
}
output "url" { …Run Code Online (Sandbox Code Playgroud) google-cloud-platform terraform terraform-provider-gcp google-cloud-run
我正在尝试使用 Terraform 在 GCP 上创建 VM 实例。确实创建了实例,但我似乎无法通过 SSH 访问这些实例。我的tf文件:
# Cloud Provider
provider "google" {
version = "3.5.0"
credentials = file("./terraform-service-account.json")
project = "terraform-279210"
region = "us-central1"
zone = "us-central1-c"
}
# Virtual Private Network
resource "google_compute_network" "vpc_network" {
name = "terraform-network"
}
# VM Instance
resource "google_compute_instance" "demo-vm-instance" {
name = "demo-vm-instance"
machine_type = "f1-micro"
tags = ["demo-vm-instance"]
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
metadata = {
ssh-keys = "demouser:${file("./demouser.pub")}"
}
network_interface {
network …Run Code Online (Sandbox Code Playgroud)