Skip to content

Technical Overview

Michael Tripoli edited this page Aug 29, 2013 · 1 revision

Architecture

Aminator is structured with a plug-in architecture. Out of the box, it includes plug-ins for creating RedHat & Debian based images on Amazon's EC2 using the native package provisioners for these OSs. There are six different plugin types. Here is a brief description of them. ####Cloud

  • Provides methods for cloud volume management, image registration, and resource tagging.
  • Supports Amazon EC2

Block Device

  • Allocates an available block device node to be used for volume attachment.
  • Supports Linux

####Volume

  • Attaches, mounts, unmounts, detaches cloud volumes.
  • Supports Linux

####OS Distribution

  • Prepares mounted volume for provisioning.
  • Supports RedHat and Debian.

####Provisioner

  • Customizes mounted volume.
  • Supports native package provisioning for apt/deb and yum/rpm.

####Finalizer

  • Creates a snapshot of the volume, registers the snapshot as an AMI, tags the snapshot and AMI.

External Plugins

Aminator can be extended with any type of plugin. Additional plugins are contributed under the aminator-plugins organization on github. Aminator provides a plugin utility for searching, listing, and installing plugins.

####aminator-plugin

    $ aminator-plugin  -h
    usage: aminator-plugin [-h] [--branch branch] [--type plugin-type]
                           command [name]

    Aminator plugin install utility

    positional arguments:
      command             Command to run. Valid commands: search install list
      name                Name of the plugin

    optional arguments:
      -h, --help          show this help message and exit
      --branch branch     Which branch to pull the plugin list from. Valid
                          options: production, testing, alpha. Default value:
                          production
      --type plugin-type  The type of plugin to search for. Valid options: cloud,
                          volume, blockdevice, provision, distro, finalizer
    
    $ aminator-plugin  list
    Name:        chef
    Aliases:     chefsolo, chef-solo
    Type:        provision
    Description: This plugin allows you to use chef-solo to bake AMIs
    ----------
    Name:        ansible
    Aliases:
    Type:        provision
    Description: This Aminator plugin allows you to provision an AMI using an Ansible playbook.
    
    $ sudo aminator-plugin  install chef
    Downloading latest version of chef from https://github.com/aminator-plugins/chef-solo-provisioner/archive/master.tar.gz
    chef plugin installed successfully, removing temp dir /tmp/tmpgvtiJE
Clone this wiki locally