We faced a similar issue while doing some tests in the past.
In any case you need to use the config drive. This is the only way how
your instance can access the IP information required.


There seem to be 3 ways for doing the configuration

#1 There is some code for cloud-init in review [1], that would do that.
But that would need to be merged first, a new version release is
required and your distro needs to pick that release. I'm not sure about
the current state, but it seems to be still in review.

#2 Use Glean [2] instead of cloud-init. It's an alternative to
cloud-init. But of course your image needs to have glean installed and
configured.

#3 hack your own solution. We did that for our limited scenario. With
nova file inject we injected a larger python script, doing all the
configuration. We used cloud-init to execute that script (directly
passing that script in with cloud-init was not possible, as it was too
large - that's why this hack was required :P). I would not recommend
going this way, cause you need to consider all the things like routes
and so on. 


I personally think the best solution is #2 for now.



[1]
https://code.launchpad.net/~harlowja/cloud-init/cloud-init-net-sysconfig
[2] http://docs.openstack.org/infra/glean/



-- 
-----
Andreas 
IRC: andreas_s (formerly scheuran)



On Do, 2016-08-25 at 08:53 +0200, Eugen Block wrote:
> 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....@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.kel...@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....@gmail.com]
> >>> Sent: Wednesday, August 24, 2016 5:05 PM
> >>> To: James Downs <e...@egon.cc>
> >>> Cc: openstack <openstack@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 <e...@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@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@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@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@lists.openstack.org
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack

Reply via email to