GCP,terraform已使用terraform代码安装在GCP项目A“测试实例”实例上,如何在项目B上部署/创建实例?

时间:2019-11-21 10:54:27

标签: json google-cloud-platform terraform terraform-provider-gcp

GCP,将terraform安装在GCP项目A“测试实例”实例上,使用terraform如何在Project-B上部署实例?

我能够使用gcloud命令执行此操作,有人知道该怎么做吗?

private defineBackImage(someArg) {
  if (stuff) {
    this.backgroundImageString = url1;
  } else {
    this.backgroundImageString = url2;
  }
}

2 个答案:

答案 0 :(得分:1)

您面临的问题与访问控制有关。 您正在尝试从Project-A中的VM运行terraform,并且terraform代码想在Project-B中创建新的VM(或其他资源)。

默认情况下,附加到Project-A VM的服务帐户没有足够的权限在Project-B中创建任何资源。为了解决这个问题,您可以在文件夹级别(或组织级别)创建一个服务帐户,该帐户有权在所需项目中创建VM,然后将该服务帐户附加到运行terraform的VM。

希望这会有所帮助。

答案 1 :(得分:0)

我建议您使用Terraform Variables,同时使用.tfvars个文件和多个Terraform Workspaces。然后,您可以在工作空间之间切换,并分别为每个特定项目应用tfvar。

例如

# variables.tf

variable "project_id" {
  type        = string
}

然后在terraform配置中使用变量:

# main.tf

provider "google" {
  project = var.project_id
  region = "us-central1"
  zone = "us-central1-c"
}

然后,tfvars将如下所示:

# vars/dev.tfvars

project_id = "my-dev-project"

然后可以像通常那样使用计划/应用程序在工作区中完全调用(请参阅文档):

terraform workspace select dev

terraform plan -var-file vars/dev.tfvars