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....@gmail.com] > Sent: Thursday, August 25, 2016 5:58 PM > To: Kaustubh Kelkar <kaustubh.kel...@casa-systems.com> > Cc: Eugen Block <ebl...@nde.ag>; openstack <openstack@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@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....@gmail.com] > >> Sent: Thursday, August 25, 2016 9:27 AM > >> To: Eugen Block <ebl...@nde.ag> > >> Cc: openstack <openstack@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 <ebl...@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....@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 > >> > > >> > > >> > > >> > > >> > -- > >> > 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 : ebl...@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@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