如何在 Openstack 上使用 Terraform 创建具有多个 NIC 的虚拟机

问题描述 投票:0回答:2

我尝试使用 Terraform 在 Openstack Cloud 上部署一些机器。

创建网络、子网、密钥、安全组和规则、浮动 ip、网络端口(附加安全组)我没有问题,但是,当我尝试使用两个 NIC(之前创建的网络端口)创建计算实例时,我有一个语法错误,没有解决它的提示。

你能帮我吗?

我的密码是:

resource "openstack_compute_instance_v2" "RNGPR-REBOND-01" {
  name            = "RNGPR-REBOND-01"
  flavor_name     = "${var.MyFlavor}"
  image_id        = "${var.MyImage}"
  key_pair        = "${var.CODOB}-keypair"
  network {
    port = "${openstack_networking_port_v2.RNGPR-REBOND-01-eth0.id}"
    access_network = true
  }
  network {
    port = "${openstack_networking_port_v2.RNGPR-REBOND-01-eth1.id}"
  }
  floating_ip = "${openstack_compute_floatingip_v2.FloatingIp-RNGPR-REBOND-01.address}"
}

resource "openstack_compute_instance_v2" "RNGPR-LB-01" {
  name            = "RNGPR-LB-01"
  flavor_name     = "${var.MyFlavor}"
  image_id        = "${var.MyImage}"
  key_pair        = "${var.CODOB}-keypair"
  network {
    port = "${openstack_networking_port_v2.RNGPR-LB-01-eth0.id}"
  }
  network {
    port = "${openstack_networking_port_v2.RNGPR-LB-01-eth1.id}"
  }
  floating_ip = "${openstack_compute_floatingip_v2.FloatingIp-RNGPR-LB-01.address}"
}

语法错误是:

Error applying plan:
2 error(s) occurred:
* openstack_compute_instance_v2.RNGPR-REBOND-01: Error creating OpenStack server: Invalid request due to incorrect syntax or missing required parameters.
* openstack_compute_instance_v2.RNGPR-LB-01: Error creating OpenStack server: Invalid request due to incorrect syntax or missing required parameters.

.

openstack terraform
2个回答
0
投票

根据我的经验,这些错误消息不是很有帮助。

我会首先设置 TF_LOG=DEBUGOS_DEBUG=1 无论你在哪里运行 terraform。这将打印出实际有用的错误消息。

有一次我试图用我的用户在 openstack 中无法访问的密钥对创建一个服务器。我收到了同样的错误,直到设置了调试才弄明白。


0
投票

在这种情况下,您需要从 terraform 文档中指定网络名称或 ID。

导入具有多个网络接口的实例。 Nova 返回按网络分组的网络接口,因此不按创建顺序排列。这意味着如果您有多个网络接口,则必须注意配置中的网络顺序。

例如,我们要导入一个具有一个临时根磁盘和 3 个网络接口的实例。

Examples

resource "openstack_compute_instance_v2" "boot-from-volume" {
  name            = "boot-from-volume"
  flavor_id       = "<flavor_id"
  key_pair        = "<keyname>"
  image_id        = "<image_id>"
  security_groups = ["default"]

  network {
    name = "<network1>"
  }
  network {
    name = "<network2>"
  }
  network {
    name = "<network1>"
    fixed_ip_v4 = "<fixed_ip_v4>"
  }

}

在上面的配置中,网络与 nova 相比是乱序的,因此导入代码返回,这意味着导入后计划不会为空。

© www.soinside.com 2019 - 2024. All rights reserved.