![](/img/trans.png)
[英]Private network creation with Terraform on OVH's Openstack
[英]Terraform Openstack: Attach network interface during creation
我想在 openstack 中創建一個僅附加預定義網絡接口的實例。 我可以訪問 openstack,我知道網絡接口 ID/名稱。
創建實例后,我可以簡單地附加接口。 這樣,它將從池中隨機分配一個 IP,然后連接網絡接口。 那不是我想要的。
如開頭所述,我想在構建實例時附加接口。
編輯 - 示例代碼:
主機創建:
resource "openstack_compute_instance_v2" "example_host" {
count = 1
name = example-host
image_name = var.centos_7_name
flavor_id = "2"
key_pair = "key"
}
接口貼:
resource "openstack_compute_interface_attach_v2" "example_interface_attach" {
instance_id = openstack_compute_instance_v2.example_host[0].id
port_id = "bd858b4c-d6de-4739-b125-314f1e7041ed"
}
這行不通。 Terraform 返回錯誤:
錯誤:創建 OpenStack 服務器時出錯:訪問 [POST 服務器] 時應有 HTTP 響應代碼 [],但得到 409 {"conflictingRequest": {"message": "Multiple possible networks found, use a Network ID to be more specific." , "代碼": 409}}
回到我最初的查詢:我想部署一個新主機並附加一個網絡接口。 結果應該是只有一個 IP 地址的主機,即我附加的那個。
該錯誤似乎是由實例啟動產生的。 如果有多個網絡可用,OpenStack(不是 Terraform)堅持使用一個網絡。 從 OpenStack 的角度來看,您有多種解決方案。 袖手旁觀,我看到三個:
從微版本 2.37 開始,Nova API 允許您將“none”指定為網絡,在這種情況下,實例運行,但啟動后未連接。
或者,在端口上放置 IP 地址后,在端口而不是網絡上啟動實例。 使用openstack
客戶端:
openstack port create --network <network> --fixed-ip subnet=<subnet>,ip-address=<ip-address>
openstack server create ... --port <port-ip> ...
我認為這是最好的解決方案。
另一種解決方案是在啟動實例時指定一個網絡和一個固定的 IP 地址。 命令行:
openstack server create ... --nic NET-UUID,v4-fixed-ip=172.16.7.8 ...
不幸的是,我不知道 Terraform 是否支持這些解決方案。 我會嘗試將port_id
添加到resource "openstack_compute_instance_v2" "example_host"
塊中。
我找到了解決方案,而且非常簡單。 您可以清楚地將端口 ID 添加到網絡塊中。 我之前已經嘗試過,但失敗了。 我可能提供了錯誤的 ID。
##Create hosts
resource "openstack_compute_instance_v2" "test_host" {
count = 1
name = format("test-host-%02d", count.index + 1)
image_name = var.centos_7_name
flavor_id = "2"
key_pair = "key"
network {
port = "<port-id>"
}
}
這是一個額外的解決方案,消除了提供錯誤 ID 的可能性。
##Create hosts
resource "openstack_compute_instance_v2" "test_host" {
count = 1
name = format("test-host-%02d", count.index + 1)
image_name = var.centos_7_name
flavor_id = "2"
key_pair = "key"
network {
port = data.openstack_networking_port_v2.port_1.id
}
}
data openstack_networking_port_v2 "port_1" {
name = "switch-port-208.37"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.