Terraform Digitalocean:移动项目下的资源

Terraform Digitalocean:移动项目下的资源,terraform,digital-ocean,Terraform,Digital Ocean,我想在DigitalOcean上创建N个水滴,并将它们指定给DigitalOcean项目(该项目尚不存在) 首先,我创建一个项目,并使用资源项将水滴分配给该项目。我还创造了两个水滴 resource "digitalocean_project" "project" { name = "playground" count = "2" description = "Description" purpose = "Description purpose

我想在DigitalOcean上创建N个水滴,并将它们指定给DigitalOcean项目(该项目尚不存在)

首先,我创建一个项目,并使用
资源
项将水滴分配给该项目。我还创造了两个水滴

resource "digitalocean_project" "project" {
  name        = "playground"
  count       = "2"
  description = "Description"
  purpose     = "Description purposes"
  environment = "Development"
  resources = [
    digitalocean_droplet.myserver[count.index].urn
  ]
}

resource "digitalocean_droplet" "myserver" {
    count = "2"
    name = "server-${count.index}"
    image = "ubuntu-18-04-x64"
    size = "1gb"
    region = "${var.region}"
}
液滴成功生成。一个液滴移动到新创建的项目中,而另一个液滴保留在我的默认项目中

下面的错误消息很清楚。它尝试创建具有相同名称的第二个项目

错误:创建项目时出错:POST :409名称已在使用中 (副本)

在资源“digitalocean\u项目”中的create_server.tf第1行 “项目”:1:资源“数字海洋”项目“项目”{


如何将这两个水滴分配给我的项目(我希望动态创建)?

如果您希望一个项目具有多个资源,则只需创建一个项目并将资源列表分配给它。为此,您需要从
digitalocean\u项目
资源中删除
count
参数(这将创建多个项目),然后使用
digitalocean\u droplet
资源的

所以你想要的东西看起来有点像这样:

resource "digitalocean_project" "project" {
  name        = "playground"
  description = "Description"
  purpose     = "Description purposes"
  environment = "Development"
  resources   = digitalocean_droplet.myserver[*].urn
}

resource "digitalocean_droplet" "myserver" {
  count  = "2"
  name   = "server-${count.index}"
  image  = "ubuntu-18-04-x64"
  size   = "1gb"
  region = var.region
}

如果您希望一个项目具有多个资源,则只需创建一个项目并为其分配资源列表。为此,您需要从
digitalocean\u项目
资源中删除
count
参数(这将创建多个项目)然后使用
digitalocean\u droplet
资源的

所以你想要的东西看起来有点像这样:

resource "digitalocean_project" "project" {
  name        = "playground"
  description = "Description"
  purpose     = "Description purposes"
  environment = "Development"
  resources   = digitalocean_droplet.myserver[*].urn
}

resource "digitalocean_droplet" "myserver" {
  count  = "2"
  name   = "server-${count.index}"
  image  = "ubuntu-18-04-x64"
  size   = "1gb"
  region = var.region
}

我试过了,但它给了属性“resources”不合适的值:元素0:需要字符串。错误消息修复了它。我必须执行以下操作
resources=digitalocean\u droplet.myserver.*.urn
。如果您修改您的答案,我可以接受。因为这个想法来自您。德普,很抱歉,错过了。现在已修复。它应该是
digitalocean\u droplet.myserver.*.urn
。否则不起作用。您能吗更新,以便我可以接受答案。我尝试过,但它为属性“resources”提供了不合适的值:元素0:需要字符串。错误消息修复了它。我必须执行以下操作
resources=digitalocean\u droplet.myserver.*.urn
。如果您修改您的答案,我可以接受。因为这个想法来自您。德普,很抱歉,错过了。现在已修复。它应该是
digitalocean\u droplet.myserver.*.urn
。否则不起作用。您能吗更新以便我可以接受答案。