Hey All, I figure I should just start a thread for this because it is worth its own discussion.
I have been building, developing and testing CS code for quite some time now. I have a bit of a system down now, but it is still a battle every time. I know that a lot of you probably have your own systems in place, so I am interested to know how you are working. Here are my requirements: - I need to be able to write code on my laptop (Mac in my case). - I need to be able to have different CS builds functional at the same time (potentially with different versions). - I need Advanced networking. - I need to be able to connect from my CS environments to other network providers (such as a Palo Alto firewall or an SDX) to orchestrate configuration. Here is what I currently have setup. - I have VMware Fusion 6 installed on my Mac. - I have one VM setup as Xenserver. - I have one VM setup for CS with NFS for secondary storage which just points to itself. - I have two networks which I use for management and guest/public traffic configured between them. I have a clean install of Xenserver that is all setup and in a state where it is ready to go for CS. I then snapshot it in that state and that snapshot is the starting point for all of my CS deploys. I have a clean install of CentOS with all of the requirements setup (mysql, maven, java, etc...) setup. With everything installed and setup ready for CS to be built and deployed, I snapshot that VM and work from it as the starting point for my management server. I only ever have one environment running, but I can have multiple environments snapshotted if I need to bring one up to test something. When I need to bring up a new environment or blow away an environment to start from scratch, I revert to the two snapshots and start from there. I have the git repo's for CS on my local machine and I share the directory with the CentOS VM. This enables me to work on my local machine and then build and deploy in the VM in an isolated environment. There is one little caveat with this though. Before I build CS, I have to modify the 'tools/marvin/pom.xml' file and change the install type from 'sdist' to 'install' because the directory is shared, so 'sdist' does not work. Right now I am installing using Devcloud, so my flow is as follows: Build Cloudstack (from scratch): $ mvn -P developer,systemvm clean install (this will work up to compiling 'marvin' and then it will fail) I then run: $ mvn -P systemvm -Dmaven.test.skip=true install (this now successfully builds everything. i can not run with skip tests initially because apparently there are some dependencies that are put in place by the tests. i have not investigated this, so i just use this flow cause it works.) Now that everything is built, I install the latest Marvin: $ cd tools/marvin; python setup.py install (this is required on some versions and not on others, I put it here because this is where you have to do it if it is required.) Now I deploy the database: $ mvn -P developer -pl developer,tools/devcloud -Ddeploydb Then I start the server (chmod path changes based on branch): $ chmod 755 $cs/client/target/cloud-client-ui-4.3.0/WEB-INF/classes/scripts/vm/systemvm/injectkeys.sh $ export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n" $ mvn -pl :cloud-client-ui jetty:run With the server running I then run the deploy server script to configure CS according to the devcloud config: $ export MAVEN_OPTS="" $ mvn -P developer -pl tools/devcloud -Ddeploysvr -X Assuming marvin is happy (which sometimes happens :) ), the configuration is completed and I have an environment configured and ready to go. Note: woops, I forgot to put the install of system templates in my workflow, but that is described in the 'build cloudstack from source' wiki page. I have recently been pointed at this setup: https://github.com/imduffy15/GSoC-2014 I will give this a shot to see if it simplifies any of this. When I tried to use VirtualBox previously for this setup, I had issues getting advanced networking to work. I also had issues with the VT pass through on Xen on VirtualBox, so we will see if that still causes problems with this setup. I also had problems with shared folders on VirtualBox, so I had issues working with code from my host machine. I will give it a shot though. Hopefully it will make this process easier. So, now for the question/discussion. What do you use as your dev environment? Do you have a better system in place than what I have? Cheers, *Will STEVENS* Lead Developer *CloudOps* *| *Cloud Solutions Experts 420 rue Guy *|* Montreal *|* Quebec *|* H3J 1S6 w cloudops.com *|* tw @CloudOps_