首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCP,terraform安装在GCP项目-A 'test- instance‘实例上,使用terraform代码,如何在项目-B上部署/创建实例?

GCP,terraform安装在GCP项目-A 'test- instance‘实例上,使用terraform代码,如何在项目-B上部署/创建实例?
EN

Stack Overflow用户
提问于 2019-11-21 18:54:28
回答 2查看 199关注 0票数 1

GCP,terraform安装在GCP project-A 'test- instance‘实例上,使用terraform如何在project-B上部署实例?

我可以用gcloud命令来做,有谁知道怎么做吗?

代码语言:javascript
复制
provider "google" {
  project = "project-b"
  region = "us-central1"
  zone = "us-central1-c"
}

resource "google_compute_instance" "vm_instance" {
  name = "terraform-instance"
  machine_type = "f1-micro"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }

  network_interface {
    # A default network is created for all GCP projects 
    network = "default"
    access_config {}
  }
}
EN

回答 2

Stack Overflow用户

发布于 2019-11-21 20:56:10

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

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

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2019-11-21 20:18:02

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

例如:

代码语言:javascript
复制
# variables.tf

variable "project_id" {
  type        = string
}

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

代码语言:javascript
复制
# main.tf

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

然后,tfvar将如下所示:

代码语言:javascript
复制
# vars/dev.tfvars

project_id = "my-dev-project"

然后,可以像通常一样使用plan/apply在您的工作区内完成完整的调用(请参阅文档):

代码语言:javascript
复制
terraform workspace select dev

terraform plan -var-file vars/dev.tfvars
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58973232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档