我尝试使用 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.
.
根据我的经验,这些错误消息不是很有帮助。
我会首先设置 TF_LOG=DEBUG 和 OS_DEBUG=1 无论你在哪里运行 terraform。这将打印出实际有用的错误消息。
有一次我试图用我的用户在 openstack 中无法访问的密钥对创建一个服务器。我收到了同样的错误,直到设置了调试才弄明白。
在这种情况下,您需要从 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 相比是乱序的,因此导入代码返回,这意味着导入后计划不会为空。