Skip to content
This repository has been archived by the owner on Aug 30, 2024. It is now read-only.

Eucalyptus Integration with Puppet Enterprise

dkavanagh edited this page Oct 17, 2011 · 3 revisions

Eucalyptus has a variety of configuration options because it needs to be able to work in many network environments. As such, the integration with Puppet needs to be flexible and allow the administrator to customize the component layout and configuration of Eucalyptus. This integration consists of scripts that define the requirements of each Eucalyptus component. Those can be put together in a way that suits the particular installation.

Installing the Module

The integration module is managed at github.com. To install the module on your Puppet Enterprise server, simply click the download button here: https://github.com/puppetlabs/puppetlabs-eucalyptus and select a source archive to download. Place the contents of that file in /etc/puppet-enterprise/puppet/modules. The next step is to add these classes in the PE dashboard. To do that, click “Add class” in the “Class” sub-view. The class names you’ll need to add are “eucalyptus”, “eucalyptus::clc”, “eucalyptus::walrus”, “eucalyptus::cc”, “eucalyptus::sc” and “eucalyptus::nc”. Mapping Eucalyptus Components to Physical Machines

Eucalyptus is made up of 5 components and there have been classes written which map to those. In the dashboard, is where these classes can be mapped to physical nodes. There are different mappings that work, from a very sparse 1-1 mapping, to the fairly minimal “front end + node controllers”. In the Puppet Dashboard, groups can be constructed to represent physical nodes. For Eucalyptus, we first create a base group that holds parameters used to configure the cloud. The required parameters are:

  • cloud_name - This helps identify configuration resources for this cloud
  • network_mode - same as eucalyptus.conf VNET_MODE
  • priv_subnet - same as eucalyptus.conf VNET_SUBNET
  • priv_netmask - same as eucalyptus.conf VNET_NETMASK
  • dns_server - same as eucalyptus.conf VNET_DNS
  • addrs_per_net - same as eucalyptus.conf VNET_ADDRSPERNET
  • public_ip_range - same as eucalyptus.conf VNET_PUBLICIPS

Once you have a base group that defines the parameters, the eucalyptus base class needs to be added to that group. Next, you’ll need to define groups that represent what resides on the physical servers. For example, if we place the CLC and Walrus on a single server (not uncommon), create a group for that, add the base group as well as the eucalyptus-cloud and eucalyptus-walrus classes. Following that, you can create another group for the cluster and storage controller to live on. It will again, include the base group as well as the eucalyptus-cc and eucalyptus-sc classes. The final group will be for the node controller and must include the base group and the eucalyptus-nc class.

This screen shot shows how groups and classes have been added on the left. The eucalyptus_clc group is currently selected. Notice how it inherits parameters from the base eucalyptus group. The base eucalyptus class is also inherited whereas the euclyptus::clc and eucalyptus::walrus classes are included directly in this class.

Provisioning Your Servers

As new servers are brought up, running a puppet agent, they need to be “approved”. The approval process is accomplished by signing the certificate for that server (using “puppet cert --list”, then “puppet cert --sign <server_name>”). At this point, the server will appear in the dashboard under the “Nodes” list. Nodes can have a group assigned, and in this case that group will determine the function of that node. Assigning the “eucalyptus_clc” group will cause the CLC and Walrus to be installed on that node. Assigning the “eucalyptus_cc” group will cause the CC and SC to be installed on that node. Assigning the “eucalyptus_nc” group will cause the NC and hypervisor to be installed on that node.