Hi John/everyone, # Background
John was nice enough to call me last Friday to discuss how we can work together to get proper (open)SUSE environments within the Dell firewall. These will be used for QA, bug fixing, and development. By proper (can't think of a better word), I mean environments which match what we develop and test Crowbar on at SUSE. This reduces the turnaround time to get things tested and fixed, making everyone more productive. IIUC, one challenge for those in the Dell offices is the long time it takes to transfer large files over the firewall. This makes it unattractive for Dellers to consume the openSUSE images built by OBS [1] as their only means of testing. Hence we need a way for them to build openSUSE Crowbar images internally to shorten the dev and test cycle, ideally with by extending the `./dev build` script. # Existing work Before we discuss solutions, let's take a minute to summarize the existing work in this area. We'll subsequently move the useful bits to the devguide in git. There are two main efforts on Crowbar openSUSE environments: ## 1. Developer centric The goal here is to make it as easy as possible for newcomers, especially web designers and Rails devs, to start hacking on Crowbar. This means minimal setup and dependencies to get the Crowbar web interface running - getting everything from git without requiring ISO installations and being as platform independent as possible. I started working on this a couple of months ago when I joined the project, pretty much documenting my own dev environment with the assumption that it might be useful to others: https://github.com/crowbar/crowbar/blob/master/doc/devguide/dev-vm.md https://github.com/crowbar/crowbar/blob/master/doc/devguide/openSUSE-dev-env.md A key difference from other distros is the use of a custom prebuilt image: http://lists.us.dell.com/pipermail/crowbar/2013-January/002234.html This saves time for newcomers as they don't need perform OS installation and setup from scratch. This lightweight developer centric approach also laid the foundations for the Travis CI tests: https://travis-ci.org/crowbar/travis-ci-crowbar https://github.com/crowbar/crowbar/blob/master/doc/devguide/testing/travis.md The current focus is only on the Rails stack - all other Crowbar components (eg. Chef) are ignored. We expect this to be gradually extended/documented to cover everything. ## 2. Product centric The goal here is to get openSUSE (and later SLES) environments which closely mirror what ultimately ends as a released product. This is a much more holistic approach that integrates all Crowbar components, at the expense of complexity and agility. This means packaging all the components into RPMs with OBS. The details and flowchart are here: http://lists.us.dell.com/pipermail/crowbar/2013-January/002175.html OBS is also used to build the resulting image: http://lists.us.dell.com/pipermail/crowbar/2013-March/002813.html https://github.com/crowbar/crowbar/wiki/Crowbar-2-development-snapshot-ISOs-for-openSUSE The above image uses the staging repository, while the one below uses the stable repository: http://susestudio.com/a/E5zfDp/crowbar-2-0 We're working on moving internal image tests to the public Jenkins server at (several package tests are already there): http://ci.opensuse.org There's a dedicated mailing list to discuss all these packaging work with our community: http://lists.opensuse.org/opensuse-cloud/ # Suggestions for Dell As discussed with John, we should keep everything as open and public as possible. This helps the Crowbar community grow and avoids duplicate work. That said, we want `./dev build` to create openSUSE images for the reasons stated earlier. Here are some suggestions on how approach this. ## Mirror OBS built openSUSE Crowbar images An internal mirror of these images will be useful for Dellers within the firewall to test changes and for comparisons. For example, a simple cron job to automatically download the images at: http://download.opensuse.org/repositories/systemsmanagement:/crowbar:/2.0:/staging/images/ ## Add openSUSE support to `./dev build` Extend the `./dev build` script to create openSUSE images. A couple of options: 1) Use the osc tool (http://en.opensuse.org/openSUSE:OSC) to build the image locally. In this use case, it's more or less a wrapper around Kiwi. Use the Kiwi configuration at [2]. a) Light dependency on OBS (https://build.opensuse.org/) to store and pull the configuration, but image building can be performed entirely on the local machine. b) Setup internal instance of OBS to avoid the external dependency: http://openbuildservice.org/download. Heard rumors that there's already an instance somewhere in Dell? Will be useful for creating and maintaining packages internally too. 2) Use Kiwi (http://opensuse.github.com/kiwi) directly, so one doesn't have to involve osc. Use the Kiwi configuration [2] directly, patching if necessary. Both osc and Kiwi run best on openSUSE, not sure about the mileage on other distros. So one might need an openSUSE machine or VM for this. Having a within-the-firewall RPM/repository cache will naturally speed things up, which should be easy to setup. # Conclusion I hope this summary and suggestions are useful. I left out some details as the email is already pretty long and just wanted to spark some discussions on how to proceed. Thoughts/comments? Regards, James T. [1] http://openbuildservice.org, https://build.opensuse.org [2] https://build.opensuse.org/package/show?package=Crowbar_2.0&project=systemsmanagement%3Acrowbar%3A2.0 _______________________________________________ Crowbar mailing list Crowbar@dell.com https://lists.us.dell.com/mailman/listinfo/crowbar For more information: http://crowbar.github.com/