有没有办法从特定子网获取分配给VM的IP并将其嵌入Heat Orchestration模板?(1端口上的所有子网)

时间:2016-07-02 12:59:23

标签: openstack openstack-heat

有没有办法从特定子网获取分配给VM的IP并将其嵌入Heat Orchestration模板中(假设网络有多个子网,我们只为所有子网创建一个端口)? 我需要浮动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

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

1 个答案:

答案 0 :(得分:0)

您可以在热模板中为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 }