The bash script for creating a generic node provides less software components to install than the master node. For the configuration of each node, in fact, Puppet features are exploited as follows.

The Puppet Agent sends information about its system and requests a catalog to the Puppet Master. Therefore, a set of tools and specific configurations for each node are defined on the base of the node’s role. This role can be defined in two different ways:

  • in the first case, CloudStack runs a Ruby script to load $userdata defined during the virtual machine creation. This script loads $userdata associated into a collection of Puppet facts;
  • in the second case, using another software to the deploy and manage network in the cloud environment, the administrator has to set the hostname of a node with its specific role.

As defined in the Puppet “base” manifest, the Puppet Master sends a subset of catalogues to the Puppet Agent on the basis of the $role fact. For instance, on the Web-balancer Apache frontend, the following Puppet module will be installed: https://github.com/open-dai/puppetlabs-apache. In the figure below is shown the Node installation and configuration pipeline, using the ISO image.

node