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/

Reply via email to