Skip to content

Latest commit

 

History

History
319 lines (254 loc) · 10.2 KB

puppet-xap-module.markdown

File metadata and controls

319 lines (254 loc) · 10.2 KB
layout title categories parent weight
post
Puppet XAP Module
SBP
production.html
100

{% summary page %}This pattern explains how to use Puppet to install and configure XAP.{% endsummary %} {% tip %} Author: Shay Hassidim
Recently tested with GigaSpaces version: XAP 9.6
Last Update: Feb 2014

{% toc minLevel=1|maxLevel=1|type=flat|separator=pipe %} {% endtip %}

{%section%} {%column width=50% %}

Overview

This XAP module for Puppet performs two main tasks:

Step 1: Install Gigaspaces XAP.

Step 2: Configure node with one or more XAP roles e.g. Management role, Container role and Web-ui role. {%endcolumn%} {%column width=45% %} {%endcolumn%} {%endsection%}

Preparing Development and Testing Environment

To simulate the IT network we have built 3 virtual machines with VirtuaBox.

Step 1: Download and install Virtual Box

Step 2: Download the learning puppet VM notify to download the OVF file. http://info.puppetlabs.com/download-learning-puppet-VM.html

After download is completed follow the instructions at Importing the VM into VirtualBox. When the import is complete successfully the puppet master is ready.

Step 3: To prepare puppet agent clone the puppet master and follow the instructions at Learning Puppet - Preparing an Agent VM.

Step 4: Create a new VM with windows 7 installation then download and puppet agent for windows and install it.

After completing the steps above your development and testing environment should consist of 3 virtual machines:

  • Centos Linux - puppet master
  • Centos Linux - puppet agent
  • Windows 7 - puppet agent for windows

Installing XAP module dependencies

XAP puppet module dependent on other puppet's modules that should be installed:

  • Connect to the master VM: ssh root@<vm_ip_address>
  • Type password: puupet
  • List the already installed modules: puppet module list

Install all the required modules by running the following commands

  • puppet module install biemond/jdk7
  • puppet module install reidmv/windows_package
  • puppet module install liamjbennett/windows_firewall

List the installed module again by running: puppet module list , and you expected to see the above module is installed.

Installing The XAP module

To install the XAP module copy XAP folder under the modules directory in your puppet labs installation.

  • Navigate to your puppet labs configuration directory: {% highlight java%} a. cd /etc/puppetlabs/puppet/modules/ and then Copy the xap directory under the modules directory b. If you clone it from github: cd /etc/puppetlabs/puppet/modules/ git clone https://github.com/Gigaspaces/xap-puppet.git mv xap-puppet xap {% endhighlight %}

  • Run: puppet module list, to see the module:

XAP Module Directory Layout

The directory layout and structure is a standard puppet module layout:

  • files - include extracted XAP directory and all the JDK version according the nodes platform in your network
  • manifests - include all the logic and classed the module used
  • templates - include all the template files used to generate scripts at runtime when agent node request a configuration catalog

Module Classes and Roles

The init.pp is the entry point of any puppet module. {% highlight java%}

base role to be extended

class xap{

require xap::params

install JDK regards OS

case $kernel{ 'windows' : { xap::windows_install{'windows-xap-install':} }
default : { xap::linux_install{'linux-xap-install':} }
}

#copy gigaspaces-xap dir to the target xap installation directoary file { "${xap::params::gigaspaces_xap_target}" : source => "puppet:///modules/${module_name}/${xap::params::gigaspaces_xap_source}", recurse => true, ensure => directory, } ~> #configure installation xap::configure{'configure xap environment':}

}

manager role

class xap::manager ( $global_lus = 0, $lus = 1, $global_gsm = 0, $gsm = 1, $gsc = 2, ) inherits xap {

run gs-agent

xap::gs_agent{'xap_manager': name => "manager_gsa_global_lus_${global_lus}gsa_lus${lus}gsa_global_gsm${global_gsm}gsa_gsm${gsm}gsa_gsc${gsc}", g_lus => $global_lus, l_lus => $lus, g_gsm => $global_gsm, l_gsm => $gsm, l_gsc => $gsc, } }

constainer role

class xap::container ( $global_lus = 0, $lus = 0, $global_gsm = 0, $gsm = 0, $gsc = 4, )inherits xap {

xap::gs_agent{'xap_container': name => "container_gsa_global_lus_${global_lus}gsa_lus${lus}gsa_global_gsm${global_gsm}gsa_gsm${gsm}gsa_gsc${gsc}", l_gsc => $gsc, } }

web-ui role

class xap::webui inherits xap {

xap::web_ui {"xap_webui":} } {% endhighlight %}

params.pp

The params.pp should include all the configuration. See example below: {% highlight java %} class xap::params {

$jdk_version = '7' # jdk version $jdk_update ='45' # jdk update $jdk_home = "jdk1.${jdk_version}.0_${jdk_update}" # jdk home $jdk_arch = $hardwaremodel ? { # node 32bit or 64bit 'i686' => 'i586', default => 'x64', }

$jdk_name="jdk-${jdk_version}u${jdk_update}-${kernel}-${jdk_arch}" # jdk file name

$jdk_file = $kernel ? { # jdk file name with extension 'windows' =&gt; "${jdk_name}.exe", default => "${jdk_name}.tar.gz", }

XAP Installation parameters

$gigaspaces_xap_source = 'gigaspaces-xap-premium-9.6.2-ga'

$gigaspaces_xap_target = $kernel ? { 'windows' =&gt; "c:/${gigaspaces_xap_source}", default => "/opt/${gigaspaces_xap_source}", }

license configuration

$license_target = "${gigaspaces_xap_target}/gslicense.xml" $license_key = 'Mar 21, 2114~usery$gigaspaces.com@cSdVRnXXXXXXXXXXX#EVALUATION^9.0XAPPremium%UNBOUND+UNLIMITED//WAN//EMT'

#configure environment $extension = $kernel ? { 'windows' => 'bat', default => 'sh', }

$config_dir = $kernel ? { 'windows' => 'c:/gigaspaces', default => '/opt/gigaspaces', }

$gs_webui_war_file = "gs-webui-9.6.2-9900-RELEASE.war"

#LOOKUPLOCATORS value $lookup_locators = '192.168.141.130'

LOOKUPGROUPS value

$lookup_groups ="gigaspaces-9.6.2-XAPPremium-ga"

JAVA_VM_NAME value

$java_vm_name = $kernel ? { default => 'ALL', }

JAVA_HOME value

$java_home = $kernel ? { 'windows' =&gt; "C:/Programs file/java/${jdk_home}", default => "/usr/java/${jdk_home}", }

configure firewall\

$com_sun_jini_reggie_initialUnicastDiscoveryPort=4174 $com_gs_transport_protocol_lrmi_bind_port_start=8000 $com_gs_transport_protocol_lrmi_bind_port_end=8100 $com_gigaspaces_system_registryPort=10098 $com_gigaspaces_start_httpPort=9813 $com_gs_webui_port=8099

configure System properties

$com_gigaspaces_logger_RollingFileHandler_filename_pattern="${config_dir}/logs/" $com_gs_deploy="${config_dir}/deploy" $com_gs_work="${config_dir}/work" $com_gigaspaces_lib_platform_ext="${gigaspaces_xap_target}/lib/platform/ext" $com_gs_pu_common="${gigaspaces_xap_target}/lib/optional/pu-common" $com_gigaspaces_grid_gsa_config_directory="${gigaspaces_xap_target}/config/gsa" $java_util_logging_config_file="${gigaspaces_xap_target}/config/gs_logging.properties" $com_gs_transport_protocol_lrmi_bind_port="${com_gs_transport_protocol_lrmi_bind_port_start}-${com_gs_transport_protocol_lrmi_bind_port_end}" $com_gs_transport_protocol_lrmi_max_conn_pool=1024 $com_gs_transport_protocol_lrmi_max_threads=512 #$com_sun_jini_reggie_initialUnicastDiscoveryPort=4174 $com_gs_zones='' $com_gs_grid_secured=false

JAVA_OPTION

$Xloggc = "${config_dir}/logs/gc.log"

GSC_JAVA_OPTIONS

$Xms = '300m' $Xmx ='8g' $Xmn ='' $XXCMSInitiatingOccupancyFraction = '60' } {% endhighlight %}

Site Configuration

There are three roles supported:

  1. xap::manager role

  2. xap::container role

  3. xap::webui

To associate a node with a role edit the /etc/puppetlabs/puppet/manifests/site.pp and add for each node the target roles. Example: {% highlight java %}

site.pp

This file (/etc/puppetlabs/puppet/manifests/site.pp) is the main entry point

used when an agent connects to a master and asks for an updated configuration.

Global objects like filebuckets and resource defaults should go in this file,

as should the default node definition. (The default node can be omitted

if you use the console and don't define any other nodes in site.pp. See

node definitions.)

Active Configurations

PRIMARY FILEBUCKET

This configures puppet agent and puppet inspect to back up file contents when

they run. The Puppet Enterprise console needs this to display file contents

and differences.

Define filebucket 'main':

filebucket { 'main': server => 'learn.localdomain', path => false, }

Make filebucket 'main' the default backup location for all File resources:

File { backup => 'main' }

DEFAULT NODE

Node definitions in this file are merged with node data from the console. See

node definitions.

The default node definition matches any node lacking a more specific node

definition. If there are no other nodes in this file, classes declared here

will be included in every node's catalog, in addition to any classes

specified in the console for that node.

node default {

This is where you can declare classes for all nodes.

Example:

class { 'my_class': }

} node 'agent1.localdomain' { include xap::manager include xap::webui }

node 'win7-agent' { include xap::container } {% endhighlight %}