<font size=2 face="sans-serif">Hi Avi,</font>
<br>
<br><font size=2 face="sans-serif">This is a very interesting use-case.
We have been experimenting internally with similar ideas (dynamic management
of virtualized and bare-metal resources).</font>
<br><font size=2 face="sans-serif">In a nutshell, you can use Heat templates
to provision the different environments. For bare-metal, you can configure
Nova to surface bare-metal flavors (with nova-baremetal driver underneath),
mapped to a dedicated host aggregate comprising bare-metal machines. You
can construct bare-metal images with diskimage-buidler from the TripleO
project.</font>
<br><font size=2 face="sans-serif">If you don't have non-trivial networking
requirements (e.g., can work with a single flat network), things might
work pretty much out of the box.</font>
<br><font size=2 face="sans-serif">Things would get a bit more complicated
if you want to dynamically re-purpose physical nodes between virtualized
and bare-metal workloads. Depending on the nature of your workloads (e.g.,
your ability to predict the desired size of each pool), you may consider
using something like Heat auto-scaling to drive the outer control loop
(but it might require some code changes to work properly in this case).
Alternatively, this logic can be external, invoking Heat for provisioning
(you can also use Heat + nova-baremetal + TripleO tools to provision compute
nodes themselves).</font>
<br><font size=2 face="sans-serif">There are many nuances to make it work,
but with certain simplifying assumptions it seems feasible to come up with
a 'native' OpenStack solution, with minimal amount of custom code.</font>
<br>
<br><font size=2 face="sans-serif">Regards,</font>
<br><font size=2 face="sans-serif">Alex</font>
<br>
<br><font size=2 face="sans-serif">P.S. we are going to present some related
work at the OpenStack Israel event on Monday - we can follow-up face-to-face
if you plan to be there too.</font>
<br>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From:      
 </font><font size=1 face="sans-serif">Avi Tal <avi3tal@gmail.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">To:      
 </font><font size=1 face="sans-serif">openstack@lists.openstack.org,
</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date:      
 </font><font size=1 face="sans-serif">31/05/2014 11:34 AM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject:    
   </font><font size=1 face="sans-serif">[Openstack]
Integration with OpenStack</font>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>Hi all,</font>
<br><font size=3>I am designing a "Dynamic Resource Allocation"
for my company lab resources. The focal point of this solution should be
OpenStack.</font>
<br>
<br><font size=3><b>Background:</b></font>
<br><font size=3>The testing and dev environments are built out of multiple
nodes. Servers, clients. Some could be virtual but must support also bare-metal.</font>
<br><font size=3>The goal is to manage the resource pool (both virtual
and physical) dynamically. Let the automated test request for specific
environment by posting the environment details and release it back to pool
at the end of the test.</font>
<br>
<br><font size=3><b>Example:</b></font>
<br>
<br><font size=3><b>Request:</b></font>
<br><font size=3>client:</font>
<br><font size=3>    count: 2</font>
<br><font size=3>    type: virtual</font>
<br><font size=3>    os: fedora 20</font>
<br><font size=3>    memory: 2GB</font>
<br><font size=3>    cpu: 4</font>
<br><font size=3>    disk: >200G</font>
<br><font size=3>    packages: ['puppet', 'fio', 'python-2.7']</font>
<br><font size=3>client:</font>
<br><font size=3>    count: 4</font>
<br><font size=3>    type: physical</font>
<br><font size=3>    os: centos-6.5</font>
<br><font size=3>    memory: 2GB</font>
<br><font size=3>    cpu: 4</font>
<br><font size=3>    disk: >100G flash</font>
<br><font size=3>    packages: ['puppet', 'fio', 'python-2.7']</font>
<br><font size=3>server:</font>
<br><font size=3>    count: 2</font>
<br><font size=3>    type: physical</font>
<br><font size=3>    os: centos-6.5</font>
<br><font size=3>    build: 'b10'</font>
<br>
<br><font size=3><b>Response:</b></font>
<br><font size=3>clients:</font>
<br><font size=3>    </font><a href=http://client1.domain.com/><font size=3 color=blue><u>client1.domain.com</u></font></a><font size=3>:</font>
<br><font size=3>        address: 1.1.1.1</font>
<br><font size=3>        user: root</font>
<br><font size=3>        password: 123456</font>
<br><font size=3>        os: fedora-20</font>
<br><font size=3>    </font><a href=http://client2.domain.com/><font size=3 color=blue><u>client2.domain.com</u></font></a><font size=3>:</font>
<br><font size=3>        address: 2.2.2.2</font>
<br><font size=3>        user: root</font>
<br><font size=3>        password: 123456</font>
<br><font size=3>        os: fedora-20</font>
<br><font size=3>    </font><a href=http://client3.domain.com/><font size=3 color=blue><u>client3.domain.com</u></font></a><font size=3>:</font>
<br><font size=3>        address: 3.3.3.3</font>
<br><font size=3>        user: root</font>
<br><font size=3>        password: 123456</font>
<br><font size=3>        os: centos-6.5</font>
<br><font size=3>...</font>
<br><font size=3>servers:</font>
<br><font size=3>    </font><a href=http://server1.domain.com/><font size=3 color=blue><u>server1.domain.com</u></font></a><font size=3>:</font>
<br><font size=3>        address: 10.10.10.10</font>
<br><font size=3>        user: root</font>
<br><font size=3>        password: 123456</font>
<br><font size=3>    </font><a href=http://server2.domain.com/><font size=3 color=blue><u>server2.domain.com</u></font></a><font size=3>:</font>
<br><font size=3>        address: 1.1.1.1</font>
<br><font size=3>        user: root</font>
<br><font size=3>        password: 123456</font>
<br>
<br>
<br>
<br>
<br><font size=3><b>I could think of two solutions:</b></font>
<br><font size=3>1. develop my own layer and use OpenStack just for the
provisioning layer using the API and Foreman for bare-metal, puppet interface,
lab services configuration (dns, dhcp, pxe etc') and searching engine via
facts across entire resources (virtual and physical).</font>
<br><font size=3>2. develop an OpenStack component that integrate with
keystone, nova, horizon and implement my own business layer.</font>
<br>
<br>
<br><font size=3><b>My questions:</b></font>
<br><font size=3>1. Is there any way of actually implement my second solution?
any documentation for writing new OpenStack component?</font>
<br><font size=3>2. I think that my scenario is common and this solution
could be helping many other companies. Is there any OpenStack project that
solve it?</font>
<br><font size=3>3. How can i offer it to OpenStack as a new component?</font>
<br>
<br><font size=3>I would be thankful for any help and comments</font>
<br>
<br><font size=3>Thanks </font>
<br>
<br>
<br>
<br>
<br>
<br><font size=3>-- </font>
<br><font size=3 face="sans-serif"><b>Avi Tal</b></font><tt><font size=2>_______________________________________________<br>
Mailing list: </font></tt><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack"><tt><font size=2>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</font></tt></a><tt><font size=2><br>
Post to     : openstack@lists.openstack.org<br>
Unsubscribe : </font></tt><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack"><tt><font size=2>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</font></tt></a><tt><font size=2><br>
</font></tt>
<br>