0

有什么方法可以从特定子网获取分配给 VM 的 IP 并将其嵌入 Heat 编排模板中(假设网络有多个子网并且我们只为所有子网创建一个端口)?我需要此信息用于浮动 IP。与单个端口上具有多个固定地址的端口一样,我们需要提供特定的 IP 来创建浮动 IP。

get_attr 键不是很有帮助。这是 JSON 表示。

        "TestVM_FIPTest1": {
            "type": "OS::Neutron::FloatingIP",
            "properties": {
                "floating_network_id": "public",
                "port_id": {
                    "get_resource": "TestVM_Test1sub2sub1_Port"
                },
                  "fixed_ip_address":
                  {
                        "get_attr": ["TestVM_Test1sub2sub1_Port", "fixed_ips", 1, "ip_address"]
                  }
            }
        }

原因是我需要通过索引来获取端口上分配的 IP。但是没有办法告诉,IP是从哪个子网分配的(因为该端口上映射了多个子网)或者哪个索引具有从所需子网分配的IP

现在我正在使用一个模板来一次创建所有资源。

4

1 回答 1

0

您可以在 heat 模板中为 VM 分配静态 IP,如下所述-

resources:
  myVM_port1:
    type: OS::Neutron::Port
    properties:
      name: "myVM_port1"
      network_id: { get_param: network_id } 
      fixed_ips: [{"subnet": { get_param: network-subnet }, "ip_address": { get_param: fixed-ip } }]

  myVM_1:
    type: OS::Nova::Server
    properties:
      name: "myVM"
      image: { get_param: cirros_Image }
      flavor: "m1.tiny"
      availability_zone: "compute1"
      networks:
      - port: { get_resource: myVM_port1 }
于 2016-09-08T11:53:48.580 回答