[Openstack] Guest VM IP configuration script

Eugen Block eblock at nde.ag
Thu Aug 25 06:53:15 UTC 2016


Hi,

we've been trying to learn how to feed cloud-init with ip addresses,  
too. If DHCP is disabled in your network, the instance won't get it's  
eth0 configured and won't be able to query the metadata server.
Creating a port before attaching it to a booting instance also doesn't  
work if no dhcp is running on that network, I just tried that to be  
sure.

I've tried several ways but I only found one working option. For  
external networks (or networks without dhcp) we are using config-drive  
now. Depending on the OpenStack version it could be possible that  
you'll need cloud-init-0.7.7, we had to fix two issues ourselves in  
version 0.7.6 to get it working, one of them was a missing default  
route.

With enabled config-drive the instance doesn't need a configured  
interface, it's a temporarily mounted drive from where the required  
information is read by cloud-init.
You can either add the option "--config-drive true" in your nova boot  
call or check the checkbox in Horizon.

To answer your question about ports, you can create a new port either  
in Horizon, but there you won't be able to assign a specific ip  
address. If you want a specific ip address you have to call neutron  
port-create (port-name is optional):

    neutron port-create <NETWORK-ID> --fixed-ip  
subnet_id=<SUBNET-ID>,ip_address=<IP> --name <PORT-NAME>

The resulting ID of that port can be used in nova boot call:

    nova boot --flavor 2 --image <IMAGE> --nic port-id=<PORT-ID>  
<INSTANCE-NAME>

Another way to assign a specific ip address to a booting instance  
without port-creation (but DHCP has to be enabled) would be:

    nova boot --flavor 2 --image <IMAGE> --nic  
net-id=<NET-ID>,v4-fixed-ip=<IP> <INSTANCE-NAME>

for example:
    nova boot --flavor 2 --image dc05b777-3122-4021-b7eb-8d96fdab2980  
--nic  
net-id=4421e160-d675-49f2-8c29-9722aebf03b2,v4-fixed-ip=192.168.124.6  
test1

Hope this helps!


Zitat von Satish Patel <satish.txt at gmail.com>:

> My question is how to query ports and pass info to cloud-init?  is
> there any document or api which i can call using script and setup
> network ifcfg-eth0 file
>
> On Wed, Aug 24, 2016 at 5:38 PM, Kaustubh Kelkar
> <kaustubh.kelkar at casa-systems.com> wrote:
>> You can create the ports beforehand and plug them in while creating  
>> the instance. As for assigning IP addresses, you can query the  
>> ports and pass the information to cloud-init. I am not sure if  
>> there is any other way to do this.
>>
>> Even if DHCP is disabled, OpenStack assigns IP information to ports  
>> when a VM is created, and you can see this in your dashboard. The  
>> MAC and IP information is used to configure iptables rules within  
>> security groups. Here is the archived thread that provides this  
>> information:  
>> http://lists.openstack.org/pipermail/openstack-dev/2014-December/053069.html.
>>
>>
>> -Kaustubh
>>
>>> -----Original Message-----
>>> From: Satish Patel [mailto:satish.txt at gmail.com]
>>> Sent: Wednesday, August 24, 2016 5:05 PM
>>> To: James Downs <egon at egon.cc>
>>> Cc: openstack <openstack at lists.openstack.org>
>>> Subject: Re: [Openstack] Guest VM IP configuration script
>>>
>>> I am using neutron networking with vlan ( its provider VLAN). We  
>>> are not using
>>> DHCP but i need some kind of hack to inject IP address in instance  
>>> using cloud-
>>> init.
>>>
>>> We are using cloud-init but i don't know how does it work and get IP from
>>> neutron. I am new with neutron stuff.
>>>
>>> On Wed, Aug 24, 2016 at 4:29 PM, James Downs <egon at egon.cc> wrote:
>>> > On Wed, Aug 24, 2016 at 03:25:26PM -0400, Satish Patel wrote:
>>> >> I enabled following in nova.conf on compute node but didn't work :(
>>> >>
>>> >> flat_injected=true
>>> >>
>>> >> Do i need to do anything else?
>>> >
>>> > Are you using flat networking?
>>> > Nova-networks or Neutron?
>>> >
>>> > At this point, if you're not using DHCP, your only option is to  
>>> arrange to feed
>>> the networking information into the metadata for the VM at  
>>> creation time, and
>>> use someting like cloud-init to configure the networking. The ancient
>>> networking injection stuff has either been removed, or been broken  
>>> for years.
>>> >
>>> > Cheers,
>>> > -j
>>> >
>>> > _______________________________________________
>>> > Mailing list:  
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>>> > Post to     : openstack at lists.openstack.org
>>> > Unsubscribe :
>>> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>>>
>>> _______________________________________________
>>> Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>>> Post to     : openstack at lists.openstack.org
>>> Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>
> _______________________________________________
> Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
> Post to     : openstack at lists.openstack.org
> Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack



-- 
Eugen Block                             voice   : +49-40-559 51 75
NDE Netzdesign und -entwicklung AG      fax     : +49-40-559 51 77
Postfach 61 03 15
D-22423 Hamburg                         e-mail  : eblock at nde.ag

         Vorsitzende des Aufsichtsrates: Angelika Mozdzen
           Sitz und Registergericht: Hamburg, HRB 90934
                   Vorstand: Jens-U. Mozdzen
                    USt-IdNr. DE 814 013 983





More information about the Openstack mailing list