0

我为 heat 模板中的接口分配了一个固定的 IP。

private_port_1:
    type: OS::Neutron::Port
    properties:
        network: { get_param: private_net }
        fixed_ips: [{"subnet": { get_param: private_subnet }, "ip_address": { get_param: private_ip_1 }}]

my_vm_123:
    type: OS::Nova::Server
    properties:
        image: { get_param: image_name }
        flavor: { get_param: flavor_name }
        name: { get_param: vm_name }
     networks:
        - network: { get_param: public_net }
        - port: { get_resource: private_port_1 }

VM 已成功实例化,其私有 IP (private_ip_1) 显示在 Horizo​​n GUI 中。但是,“eth1”似乎已关闭,并且 /etc/network/interfaces 仅包含公共“eth0”的配置。

我可以通过手动填充“/etc/network/interfaces”并在“user_data:”部分打开 eth1 来解决问题。问题是 - 这是应该的方式还是我的热量或 Openstack 有问题阻止自动配置 eth1?

谢谢!迈克尔。

4

1 回答 1

1

是的,它应该是这样的。OpenStack(Nova、Neutron)设置虚拟机并提供正确的连接。但是,在 VM 中运行的操作系统必须启动这些接口。默认的 cloud-init 映像经过硬编码以仅显示 eth0(使用 DHCP)。因此,您必须在您的 VM 中显式启动 eth1。

您可以使用 OS::Nova::Server 资源类型的 user_data 变量在启动 VM 时运行自定义脚本。我有一个类似的用例,我需要自动启动 eth1。您可以在https://github.com/ypraveen/openstack-installer/blob/master/vm-heat-template/devstack.yaml查看我是如何实现这一目标的

第 33 行显示了 user_data 的用法。您可以检查启动 eth1 的 init 脚本中的第 41-45 行:https ://github.com/ypraveen/openstack-installer/blob/master/vm-heat-template/devstack_vm_init.sh

于 2017-04-10T19:31:49.700 回答