New project: Outsource appliance build. – Day 1 – Dirty Notes.

The first post of a series that describes a very cool project. It describes my thought process, the evolution of an existing method and the engineering of a new process. I walk you through initial design, challenges, brainstorming, testing, implementation and final delivery. The ultimate goal? to outsource the manufacturing of appliances to the appliance manufacturer, including the software and OS implementation.

XYZ Inc. has been in the appliance business for sometime now. They are they choice appliance builder for many companies out there including my employer.

We've been doing our own custom build process to get our appliances out the door and so far its worked out okay. XYZ Inc. makes our appliances to spec and then ships it to us for us to configure the software in them. This is okay and works well but it isn't scalable. We wanted to be able to handle larger orders, in the range of 30 - 100 or more appliances per order.

The beginning.

Things to consider when going into this project:

Options available

Methods available to have XYZ Inc. do the machines.

Practicality vs Convenience.

We have one way that we want to do this, and the builder has their own different process. We're an engineering company and we can devise a million different ways to get this done but the important part here is to strike a good balance between practicality and functionality to accomplish the goal. XYZ wants us to follow their methods.

Order fulfillment

Who does what? Who tells the customer? who puts the customer in our database? The appliances have support contracts, who puts those into OUR system?

XYZ has a process and they're not about to change their method of fulfilling orders just because a little guy like us wants to do it differently. I get that. So our idea of doing a custom Kickstart server at their location, as a separate almost isolated network didn't fly too well with them. In a very polite way they said, no, you gotta do it our way.

Their way is simple and straight forward but it requires a lot of manual intervention, so this is the article to document that and how this experience went. Hope you enjoy it.

Planning...

Tasks:

  • Modify Kickstart.
  • Modify pre and post scripts to acommodate new process.
    • suck in the SN from the bios
    • suck in the model from the bios
    • fill in config information in appliance config files automatically.
    • Call home and tell us what the SN and model is. Dump the appliance into a state of "inventory"
    • Create an image that fits all models of the appliances.
  • Upload an image to XYZ. They use FTP, plain and simple. (great isn't it nice to know that your 20GB file is getting uploaded in plain text mode). Yay, gotta love legacy stuff that seems to linger like a roach.

Current Status:

Build out each appliance with the latest software based on orders. Must have inventory on hand and be nimble enough to fulfill orders as they come in. Appliances build themselves out semi-automatically via PXE boot.

Pros.

  • Latest software available and ready to go.
  • Quick, 3-15 minutes and an appliance is ready to go.

Cons.

  • One at a time.
  • Could be inconsistent.
  • Depends on having available inventory.

Initial Approach

dmidecode gives me a lot of information. Including a serial number field. The question is this... should we have our post-kickstart script ask the operator to input the SN, then we put it into the BIOS, and our configs. OR should we expect the manufacturer to have populated the SN into the BIOS and we just query it? I think the answer is simple, if we can write to the BIOS then lets do it. The operator has to be at the machine anyway so he might as well put that in at the time of processing the unit.

I think we're going to have to expect the Serial Number to be in place already.