<div dir="ltr"><div><div><div><div>Let me look at my notes as I worked this out before using outputs and cloud-config directives..<br><br></div>The idea is for cloud-config to write your outputs to a temp file on the VM. <br></div>Something like this:<br><br></div><MAC ADDRESS> <IP ADDRESS><br><MAC ADDRESS2> <IP ADDRESS2><br><br><br></div><div>Now with your user-data script you can parse the injected file and use those values to create your network files. <br></div><div>With everything in place, either restart the network or have cloud-init reboot the VM once it is instantiated.<br><br><br></div><div><br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 21, 2016 at 2:18 PM, Kaustubh Kelkar <span dir="ltr"><<a href="mailto:kaustubh.kelkar@casa-systems.com" target="_blank">kaustubh.kelkar@casa-systems.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div link="blue" vlink="purple" lang="EN-US">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Thanks for the pointer. However, using those outputs to inject user data seems to create a circular dependency:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">myserver:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">  type: OS::Nova::Server<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">    properties:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">      name: test-vm<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">      image: ubuntu-16.04<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">      flavor: m1.small<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">      networks:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">       - network: { get_param: [ mgmt, id ] }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">       - network: { get_param: no_dhcp_net }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">      user_data_format: RAW<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">      user_data:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">        str_replace:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">          template: |<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            #!/bin/bash<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            echo -e "\n" >> /etc/network/interfaces<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            echo "auto ens4" >> /etc/network/interfaces<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            echo "iface ens4 inet static" >> /etc/network/interfaces<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            echo "address $IPADDR" >> /etc/network/interfaces<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            echo "netmask 255.255.255.0" >> /etc/network/interfaces<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            ifdown ens4 2>/dev/null<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            ifup ens4 2>/dev/null<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">          params:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">            $IPADDR: { get_attr: [
</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:red">myserver</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">, addresses, no-dhcp-net, 0, addr ] }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">For now, I am going back to creating port and pass in that information as user data.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">-Kaustubh<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Brent Troge [mailto:<a href="mailto:brenttroge2016@gmail.com" target="_blank">brenttroge2016@gmail.com</a>]
<br>
<b>Sent:</b> Wednesday, July 20, 2016 7:27 PM<br>
<b>To:</b> Kaustubh Kelkar <<a href="mailto:kaustubh.kelkar@casa-systems.com" target="_blank">kaustubh.kelkar@casa-systems.com</a>><br>
<b>Cc:</b> <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
<b>Subject:</b> Re: [Openstack] [OpenStack][Nova] Configuring IP address on a DHCP disabled network<u></u><u></u></span></p><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<p>Isn't that exposed through outputs ?<br>
And then use the output combined with configdrive cloudinit  to configure your NICS<u></u><u></u></p>
<p>outputs:<br>
  instance_ip:<br>
    description: The IP address of the deployed instance<br>
    value: { get_attr: [my_instance, first_address] }<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On Jul 20, 2016 5:58 PM, "Kaustubh Kelkar" <<a href="mailto:kaustubh.kelkar@casa-systems.com" target="_blank">kaustubh.kelkar@casa-systems.com</a>> wrote:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span style="color:#1f4e79">My use case involves booting up an instance attached to two networks – one having Neutron DHCP service running and one without. Looking within the documentation
 [1], I was hoping to use configuration drive to provide IP information for the second interface. But, if I understand correctly, one could theoretically pass any IP information through it; which may or may not match the IP that is assigned to the Neutron port.
 I wonder if there is any way the actual IP assigned to the Neutron port is exposed in some way within the VM.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79">One crude workaround I can think of is to create a port beforehand with a fixed IP, and use this information to configure static networking within the
 VM. However this might not be manageable if a user launches numerous VMs since he/she will have to ensure that IPs do not overlap.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79">[2] looks promising, but I am not clear how I can just specify the second interface only.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79">[1]
<a href="http://docs.openstack.org/user-guide/cli_config_drive.html" target="_blank">
http://docs.openstack.org/user-guide/cli_config_drive.html</a></span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79">[2]</span>
<span style="color:#1f4e79"><a href="http://blog.oddbit.com/2015/06/26/openstack-networking-without-dhcp/" target="_blank">http://blog.oddbit.com/2015/06/26/openstack-networking-without-dhcp/</a>
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79">Thanks,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f4e79">Kaustubh</span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><br>
Post to     : <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><u></u><u></u></p>
</blockquote>
</div>
</div>
</div></div></div>
</div>

</blockquote></div><br></div>