GCP,terraform安装在GCP project-A 'test- instance‘实例上,使用terraform如何在project-B上部署实例?
我可以用gcloud命令来做,有谁知道怎么做吗?
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 {}
}
}发布于 2019-11-21 20:56:10
您面临的问题与访问控制有关。您正在尝试从Project-A中的VM运行terraform,而terraform代码想要在Project-B中创建新的VM (或其他资源)。
默认情况下,附加到Project-A VM的服务帐户没有足够的权限在Project-B中创建任何资源。要解决此问题,您可以在文件夹级别(或组织级别)创建一个服务帐户,该帐户具有在所需项目中创建VM的权限,然后您可以将该服务帐户附加到运行terraform的VM。
希望这能有所帮助。
发布于 2019-11-21 20:18:02
我建议你使用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"
}然后,tfvar将如下所示:
# vars/dev.tfvars
project_id = "my-dev-project"然后,可以像通常一样使用plan/apply在您的工作区内完成完整的调用(请参阅文档):
terraform workspace select dev
terraform plan -var-file vars/dev.tfvarshttps://stackoverflow.com/questions/58973232
复制相似问题