This documentation is for WSO2 Puppet Modules version 2.0.0. View documentation for the latest release.
We have moved WSO2 Puppet Modules to separate product specific repositories, and as a result the puppet-modules repository, which this documentation is based on has been deprecated.
A new puppet-common repository has been introduced. Please find the new repository list here.
Page Comparison - Master / Client - puppet agent (v.4 vs v.5) - WSO2 Puppet Modules 2.0.0 - WSO2 Documentation

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This will provide a sequence for you to follow in testing your WSO2 product of interest for a standalone deployment setup in a given puppet agent instance. This can be considered as a guide to setting up your own Puppet Master/Agent environment given that you manually set up the instances.

For the ease of understanding, the instructions are divided into 3 main steps.

Table of Contents

Step 1 - Setup two instances

This can be either two cloud instances, two physical computer instances, or two local VM instances.
You must be able to SSH into both of the instances. Configure one instance as the Puppet Master and the other as Puppet Agent.

Step 2 - Setup Puppet Master and Puppet Agent

Follow the instructions below to initially install and then configure the Puppet Master and Puppet Agent respectively.

2.1. Install Puppet

2.1.1. Puppet Master
  1. Sign into Puppet Master as the super user.
  2. Issue the following commands. Please refer the inline comments to identify the reason behind executing these commands.

    Code Block
    # Sync time between the Master and the Agent
    ntpdate pool.ntp.org ; apt-get update && sudo apt-get -y install ntp ; service ntp restart  
    cd /tmp  
     
    # Download and install the Puppet distribution
    wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb  
    dpkg -i puppetlabs-release-trusty.deb  
    apt-get update  
    apt-get install puppetmaster 
     
  3. Check the Puppet version

    Code Block
     puppet -V

    The Puppet version should be 3.8.3 or higher.

  4. Edit the /etc/hostname file and set the property hostname.

    Code Block
    [puppet-master-ip] puppetmaster
  5. Edit your Puppet Master hosts file, which is /etc/hosts, as follows and set the Puppet Master hostname.

    Code Block
    127.0.0.1 localhost
    127.0.0.1 puppetmaster 
2.1.2. Puppet Agent
  1. Sign into Puppet Agent as the super user.
  2. Issue the following commands to download and install the Puppet distribution.

    Code Block
    apt-get update  
    apt-get install puppet
     
  3. Edit the /etc/hostname file and set the property hostname.

    Code Block
    {host-ip}  qaa-node-1
  4. Edit the /etc/hosts file of your Puppet Agent.

    Code Block
    127.0.0.1 localhost  
    192.168.19.XXX puppet # Puppet Master's IP address 

2.2. Configure Puppet

2.2.1. Puppet Master
  1. Sign into the Puppet Master as the super user.
  2. Create the following directory.
     /etc/puppet/environments/production/
  3. Modify the /etc/puppet/puppet.conf file that corresponds to the Puppet Master by appending the following to the [main] and [master] sections accordingly.

    Code Block
    [main]
    dns_alt_names=puppetmaster,puppet
    environmentpath = $confdir/environments
    hiera_config = /etc/puppet/hiera.yaml
    [master]
    autosign=true
  4. Before restarting the Puppet Master, clean all certificates, including Puppet Master’s certificate which has its old DNS alt names.

    Code Block
    puppet cert clean --all
  5. Restart the Puppet Master for new configuration changes to take effect and to regenerate the certificate with the new dns_alt_names.

    Code Block
    service puppetmaster restart
  6. Download the Git repo files.
    Do this by cloning the Puppet Module files to a temporary folder.

    Code Block
    git clone https://github.com/wso2/puppet-modules.git <LOCAL_FOLDER_PATH>
  7. Prepare puppet modules
    i. Puppet Modules as follows:

    1. Copy all the modules in 

    ../puppet-modules
    1. <PUPPET_MODULES_HOME>/modules to/etc/puppet/environments/production/modules/.

    ii.
    1. Install

    java
    1. the Java module from

    puppet forge [2]
    1. puppetforge.

    >
    1. Code Block
      puppet module install 7terminals-java 
    iii.
    1. Install the stdlib module from

    puppet forge [3]
    1. puppetforge.

    >
    1. Code Block
      puppet module install puppetlabs-stdlib  
  8. Prepare hieradata
    i. Copy ../puppet-modulesHieradata.

    1. Copy the <PUPPET_MODULES_HOME>/hiera.yaml

     to 
    1.  file to the /etc/puppet


    ii. Edit 
    1. directory.

    2. Edit the hiera.yaml file yaml data directory location as follows

    .
    1. :

      Code Block
      :yaml: 
      
    1. 	:datadir:  "/etc/puppet/hieradata/%{::environment}"
    1.   
    iii. Copy ../puppet-modules
    1. Copy the <PUPPET_MODULES_HOME>/hieradata folder

    to 
    1. to the /etc/puppet

    /
    iv. Rename 
    1.   directory.

    2. Rename the /etc/puppet/hieradata/dev

    ->
    1. directory to the /etc/puppet/hieradata/production directory.

  9. Prepare Prepare the site.pp manifest
    i. Copy ../puppet-modules/.
    Copy the <PUPPET_MODULES_HOME>/manifests/site.pp to file to the /etc/puppet/environments/production/manifests/ directory.

  10. Prepare the files/packs. i.

    1. Copy the pack file (e.g

    .:
    1. , wso2am-1.9.1.zip) to the /etc/puppet/environments/production/modules/wso2am/files


    ii. Create folder ../modules/wso2base/files
    iii. Copy jdk
    1.  directory.

    2. Copy the JDK installation file (e.g.

    :
    1. , jdk-7u79-linux-x64.gz) to

    ..
    1. the /etc/puppet/modules/wso2base/files directory.

    iv.
    1. Add

    jdk
    1. the JDK version (home) and filename information to the /etc/puppet/hieradata/production/common.yaml file.

2.2.2. Puppet Agent
  1. Login to Sign into the Puppet Agent as the super user.
  2. Modify Modify the /etc/puppet/puppet.conf file of that corresponds to the Puppet Agent by appending the following to the[main] section.

    Code Block
    [main]  
    server = puppet

Step 3 - Set Facter variables and perform a Puppet Agent run

Following sample files attached are for APIM 1.9.1 [4], [5].

  1. Modify the deployment.conf file according to your product.
  2. Login to Puppet Agent as super user.
  3. Copy the modified file deployment.conf [4] -> /opt/deployment.conf.
  4. Copy the file setup.sh [5] -> /opt/setup.sh and execute the following command.

    >

    Code Block
    chmod 755 setup.sh
  5. Run following command to setup WSO2 product instance.

    >
    Code Block
    ./setup.sh

An instance of a standard WSO2 product given version of your choice will be installed.
e.g.:
CARBON_HOME -> /mnt/10.0.2.89/wso2am-1.9.1
For APIM 1.9.1 the complete deployment time (deployment + server startup) will be approximately 1 minute.

[1] https://github.com/wso2/puppet-modules
[2] https://forge.puppetlabs.com/7terminals/java
[3] https://forge.puppetlabs.com/puppetlabs/stdlib
[4] deployment.conf

    product_name=wso2am
product_version=1.9.1
product_profile=default
vm_type=openstack

  

[5] setup.sh

      #!/bin/bash
echo  "#####################################################" 
echo  " Starting cleanup " 
echo  "#####################################################" 
ps aux | grep -i wso2 | awk { 'print $2' } | xargs kill -9
#rm -rf /mnt/*
sed -i  '/environment/d'  /etc/puppet/puppet.conf
echo  "#####################################################" 
echo  " Setting up environment " 
echo  "#####################################################" 
rm -f /etc/facter/facts.d/deployment_pattern.txt
mkdir -p /etc/facter/facts.d

while read -r line; do declare  $line
      ; done < deployment.conf  

echo product_name=$product_name >> /etc/facter/facts.d/deployment_pattern.txt  
echo product_version=$product_version >> /etc/facter/facts.d/deployment_pattern.txt  
echo product_profile=$product_profile >> /etc/facter/facts.d/deployment_pattern.txt  
echo vm_type=$vm_type >> /etc/facter/facts.d/deployment_pattern.txt  

echo  "#####################################################"   
echo  " Installing "   
echo  "#####################################################"   

puppet agent --enable  
puppet agent -vt  
puppet agent --disable