Skip to content

ccassler/eucalyptus-cookbook

 
 

Repository files navigation

Stories in Ready eucalyptus Cookbook

This cookbook installs and configures Eucalyptus on CentOS 6 physical and virtual machines. Source and package installations are supported.

Requirements

Branches

The following table descirbes the branch to use for each Eucalyptus release:

Branch Cookbook version Euca version Notes
master 0.3.x 4.1.0 maps to latest released eucalyptus version
euca-4.0 0.3.x 4.0.2 Stable branch for 4.0.x installs
euca-4.1 0.4.x 4.1.1 Maint branch for 4.1.x installs
euca-4.2 1.0.x 4.2.0 breaks the attribute API

Environment

To deploy a distributed topology it is necessary to define an environment with at least these attributes defined:

  • node['eucalyptus']['topology']
  • node['eucalyptus']['network']['config-json']
"default_attributes": {
    "eucalyptus": {
      "topology": {
        "clc-1": "10.111.5.163",
        "walrus": "10.111.5.163",
        "user-facing": ["10.111.5.163"],
        "clusters": {
          "default": {
            "cc-1": "10.111.5.164",
            "sc-1": "10.111.5.164",
            "storage-backend": "das",
            "das-device": "vg01",
            "nodes": "10.111.5.162 10.111.5.166 10.111.5.165 10.111.5.157"
          }
        }
      },
      "network": {
        "mode": "EDGE",
        "config-json": {
                  "InstanceDnsDomain" : "eucalyptus.internal",
                  "InstanceDnsServers": ["10.111.5.163"],
                  "PublicIps": ["10.111.55.1-10.111.55.220"],
                  "Subnets": [],
        "Clusters": [
           {
            "Name": "default",
            "MacPrefix": "d0:0d",
            "Subnet": {
                "Name": "172.16.55.0",
                "Subnet": "172.16.55.0",
                "Netmask": "255.255.255.0",
                "Gateway": "172.16.55.1"
            },
            "PrivateIps": [ "172.16.55.20-172.16.55.140"]
            }]
          }
        }
      }
    }  

Platforms

This cookbook only supports RHEL/CentOS 6 at the time being.

Berkshelf

A Berksfile is included to allow users to easily download the required cookbook dependencies.

  • Install Berkshelf: gem install berkshelf
  • Install Deps from inside this cookbook: berks install

Cookbooks

  • ntp - sets up NTP for all Eucalyptus servers
  • yum - used for managing repositories

Chef server config

Ensure that the following config is set in /etc/chef-server/chef-server.rb: erchef['s3_url_ttl'] = 3600

Attributes

Attribute list can be found in attributes/default.rb

Some common attributes are:

eucalyptus installation config

Key Type Description Default
["eucalyptus"]["install-type"] String Choose to install from `package` or `source` package
["eucalyptus"]["source-repo"] String Git repository to clone when building from source https://github.com/eucalyptus/eucalyptus.git
["eucalyptus"]["source-branch"] String Branch to use when building from source maint-4.1

eucalyptus network config

Key Type Description Default
["eucalyptus"]["network"]["mode"] String Networking mode to use MANAGED-NOVLAN
["eucalyptus"]["network"]["private-interface"] String Private interface of component eth0
["eucalyptus"]["network"]["public-interface"] String Public interface of component eth0
["eucalyptus"]["network"]["bridge-interface"] String Bridge interface of component. Will be created and set by playbook br0

Usage

For cloud-in-a-box installs look at... Eucadev

For distributed topologies... Deployment with motherbrain

Faststart

Methodology

Faststart is a Bash script, faststart/cloud-in-a-box.sh, that invokes the Eucalyptus cookbook in order to install a single host cloud-in-a-box install. There is an HTTP redirect in place for hphelion.com/eucalyptus-install that points to that script in the faststart branch so that users can use the following to invoke it:

bash <(curl -Ls hphelion.com/eucalyptus-install)

Once invoked the script does the following:

  1. Checks for necessary resources on the machine that it is installing on (ie disk, memory, virtualization extensions)
  2. Asks the user for the minimum necessary configuration parameters.
  3. Installs the Chef client
  4. Runs the Chef client in order to install Eucalyptus using the cookbook tarball and the inputs from the user.

Inputs from the user are searched and replaced into the templates in faststart/ciab-template.json and fastart/node-template.json and then used as follows to run the cookbook:

chef-solo -r cookbooks.tgz -j ciab.json

Releasing

In order to release a new version of Faststart, you must first package up the current cookbook versions with Berkshelf.

  1. Ensure Berkshelf is installed via the ChefDK
  2. Change directories to where your eucalyptus-cookbook repo lives.
  3. Run berks package to bundle all cookbook deps into a tarball, replacing VERSION with the desired release number, for example 4.2.0: berks package eucalyptus-cookbooks-$VERSION.tgz
  4. Upload the tarball to S3 in the euca-chef bucket, then make the object publicly readable. To test this, simply try to download the file via its URL, by using your browser. An example URL is http://euca-chef.s3.amazonaws.com/eucalyptus-cookbooks-$VERSION.tgz
  5. Change the $cookbooks_url variable in faststart/cloud-in-a-box.sh to point to your new publicly available tarball.
  6. Commit and push that change to the branch for this release, for example euca-4.2.
  7. In order to push the change live, merge the branch into faststart.

Contributing

  1. Fork the repository on Github
  2. Create a named feature branch (like add_component_x)
  3. Write your change
  4. Write tests for your change (if applicable)
  5. Run the tests, ensuring they all pass
  6. Submit a Pull Request using Github

License and Authors

Authors:

Vic Iglesias [email protected]

About

Chef cookbook for deploying Eucalyptus

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 58.3%
  • Shell 30.0%
  • Python 8.7%
  • HTML 3.0%