Appliance Configuration Engine

The basic design for the engine is a process that is executed at initial boot up and at each subsequent boot up. The engine can be configured with appliance recipes and "modules" which are reusable recipe components. Each recipe can do initial configuration at first boot, and can refine the configuration on each subsequent boot. An appliance recipe declares which modules to use, as well as adding its own first boot and subsequent boot logic.

What is an appliance recipe

With version, 0.0.2, of the configuration engine, now uses Puppet from reductive labs as the recipe syntax. This brings the configuration engine in line with one of the leading tools for configuration management today.

The best way is to understand appliance recipes is to look at one of the example appliances provided with the code. These files show that a recipe does the following:

  1. Utilizes puppet to describe the configuration of the machine.
  2. Declares basic metadata such as appliance_version and appliance_name
  3. Declares any modules which the recipe depends upon, and any inter-related depdendencies
This recipe, and any required template files are bundled into an rpm. When deployed this recipe will configure the appliance.

Basic Engine Logic

The ace runs at each boot time, and loads up the recipes. If the state of the appliance does not match the recipe then the appliance is modified. As updates to the recipe are provided via rpm, new changes can be made to the appliance.