[Openstack] Guest VM IP configuration script

Kaustubh Kelkar kaustubh.kelkar at casa-systems.com
Thu Aug 25 22:06:06 UTC 2016


The get_attr{} function should return the address in IPADDR variable. 

Remember, you *do need* another NIC connected to metadata server with DHCP enabled, since the user-data is retrieved from the metadata server. By default, Ubuntu has the 1st interface configured to get IP from DHCP server, which I usually connect to the network that hosts the metadata server, and the rest of the interfaces can get IPs from this method.


-Kaustubh
> -----Original Message-----
> From: Satish Patel [mailto:satish.txt at gmail.com]
> Sent: Thursday, August 25, 2016 5:58 PM
> To: Kaustubh Kelkar <kaustubh.kelkar at casa-systems.com>
> Cc: Eugen Block <eblock at nde.ag>; openstack <openstack at lists.openstack.org>
> Subject: Re: [Openstack] Guest VM IP configuration script
> 
> This is perfect!
> 
> In your script, does it automatically query to neutron to get IP ADDRESS of
> instance? or i need to manually set IP address in script variable $IPADDR
> 
> 
> In setup Openstack start VM and also assign IP address from allocated pool but i
> want to automatically pass that IP address to script (cloud-init or heat) whatever
> to set IP in instance.
> 
> 
> 
> 
> On Thu, Aug 25, 2016 at 10:11 AM, Kaustubh Kelkar <kaustubh.kelkar at casa-
> systems.com> wrote:
> > Here is a heat template that I use (the indentation might be off). I have one
> network with DHCP enabled that connects to metadata server:
> >
> > heat_template_version: 2015-04-30
> >
> > parameters:
> >   mgmt:
> >     type: json
> >     description: ID of the mgmt network
> >     default: { "name": "mgmt" ,
> >                "id": "abcd1234" }
> >
> >   no_dhcp_net:
> >     type: string
> >     default: "wxyz6789"
> >
> > resources:
> >   server:
> >     type: OS::Nova::Server
> >     properties:
> >       name:test-vm
> >       image: ubuntu-16.04
> >       flavor: m1.small
> >       networks:
> >        - network: { get_param: [ mgmt, id ] }
> >        - port: { get_resource: server_port }
> >       user_data_format: RAW
> >       user_data:
> >         str_replace:
> >           template: |
> >             #!/bin/bash
> >             echo -e "\n" >> /etc/network/interfaces
> >             echo "auto ens4" >> /etc/network/interfaces
> >             echo "iface ens4 inet static" >> /etc/network/interfaces
> >             echo "address $IPADDR" >> /etc/network/interfaces
> >             echo "netmask 255.255.255.0" >> /etc/network/interfaces
> >             ifdown ens4 2>/dev/null
> >             ifup ens4 2>/dev/null
> >           params:
> >             $IPADDR: { get_attr: [ server_port, fixed_ips, 0,
> > ip_address ] }
> >
> >   server_port:
> >     type: OS::Neutron::Port
> >     properties:
> >       network_id: { get_param: no_dhcp_net }
> >
> > outputs:
> >   dump:
> >     value: { get_attr: [ server, show ] }
> >
> >
> > Hope this helps.
> >
> > As for config-drive, I hope the folks can shed some light.
> >
> >
> > -Kaustubh
> >
> >> -----Original Message-----
> >> From: Satish Patel [mailto:satish.txt at gmail.com]
> >> Sent: Thursday, August 25, 2016 9:27 AM
> >> To: Eugen Block <eblock at nde.ag>
> >> Cc: openstack <openstack at lists.openstack.org>
> >> Subject: Re: [Openstack] Guest VM IP configuration script
> >>
> >> Eugen,
> >>
> >> I think config-drive make sense when you don't have initial network
> >> in place. In my case i don't care about fixed-IP for instance. I only
> >> need to setup network using whatever IP neutron provide in that case
> >> how do i query neutron port to find out what IP address is available
> >> or neutron going to provide so i can take that information and pass to
> userdata. Its sounds tricky any idea how to do that?
> >>
> >> On Thu, Aug 25, 2016 at 2:53 AM, Eugen Block <eblock at nde.ag> 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.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
> >> >
> >> >
> >> >
> >> > _______________________________________________
> >> > 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


More information about the Openstack mailing list