This cookbook installs and configures Eucalyptus on CentOS 6 physical and virtual machines. Source and package installations are supported.
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 |
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"]
}]
}
}
}
}
This cookbook only supports RHEL/CentOS 6 at the time being.
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
ntp
- sets up NTP for all Eucalyptus serversyum
- used for managing repositories
Ensure that the following config is set in /etc/chef-server/chef-server.rb
:
erchef['s3_url_ttl'] = 3600
Attribute list can be found in attributes/default.rb
Some common attributes are:
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 |
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 |
For cloud-in-a-box installs look at... Eucadev
For distributed topologies... Deployment with motherbrain
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:
- Checks for necessary resources on the machine that it is installing on (ie disk, memory, virtualization extensions)
- Asks the user for the minimum necessary configuration parameters.
- Installs the Chef client
- 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
In order to release a new version of Faststart, you must first package up the current cookbook versions with Berkshelf.
- Ensure Berkshelf is installed via the ChefDK
- Change directories to where your eucalyptus-cookbook repo lives.
- 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
- 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
- Change the $cookbooks_url variable in faststart/cloud-in-a-box.sh to point to your new publicly available tarball.
- Commit and push that change to the branch for this release, for example euca-4.2.
- In order to push the change live, merge the branch into faststart.
- Fork the repository on Github
- Create a named feature branch (like
add_component_x
) - Write your change
- Write tests for your change (if applicable)
- Run the tests, ensuring they all pass
- Submit a Pull Request using Github
Authors:
Vic Iglesias [email protected]