This cookbook installs and configures Eucalyptus on RHEL/CentOS 7 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 |
euca-4.3 | 1.0.x | 4.3.0 | Stable branch for 4.3.x installs |
euca-4.4 | 1.0.x | 4.4.0 | Stable branch for 4.4.x installs |
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 7 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. It will package up the Chef cookbooks as a berks package, then install Eucalyptus. To run the Faststart script, from the
top level eucalyptus-cookbook directory, execute:
faststart/cloud-in-a-box.sh
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-client -z -r cookbooks.tgz -j ciab.json
- 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]