diff --git a/check_deploy.png b/check_deploy.png new file mode 100644 index 0000000..265a04d Binary files /dev/null and b/check_deploy.png differ diff --git a/modules/deploy/manifests/init.pp b/modules/deploy/manifests/init.pp new file mode 100644 index 0000000..869a879 --- /dev/null +++ b/modules/deploy/manifests/init.pp @@ -0,0 +1,31 @@ +# Application deployment +class deploy{ + +$app_url = 'http://www.cumulogic.com/download/Apps/testweb.zip' +$jboss_home = '/opt/jboss-as-7.1.1.Final' +$deploy_path = "${jboss_home}/standalone/deployments/" + +# install unzip + package { 'unzip': + ensure => installed, + } + +# download app + file { 'app_file': + ensure => file, + path => '/opt/testweb.zip', + source => $app_url, + mode => '0644', + require => File['extract Jboss'], + } + +# unpack application + exec { 'unpack app': + command => "unzip /opt/testweb.zip -d ${deploy_path}", + cwd => '/opt', + creates => "${deploy_path}/testweb", + path => ['/usr/bin', '/usr/sbin',], + notify => [ Service['jboss'], Exec['change owner'] ] + } +} + diff --git a/modules/java/manifests/init.pp b/modules/java/manifests/init.pp new file mode 100644 index 0000000..a742330 --- /dev/null +++ b/modules/java/manifests/init.pp @@ -0,0 +1,11 @@ +# Install Java +class java { + +$java_version = 'java-1.7.0-openjdk' + + package { 'java': + ensure => installed, + name => $java_version, + } +} + diff --git a/modules/mjboss/manifests/init.pp b/modules/mjboss/manifests/init.pp new file mode 100644 index 0000000..574948e --- /dev/null +++ b/modules/mjboss/manifests/init.pp @@ -0,0 +1,83 @@ +# Install Jboss server +class mjboss { + +$jboss_user = 'jboss' +$jboss_group = 'jboss' +$jboss_home = '/opt/jboss-as-7.1.1.Final' +$jboss_url = 'http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz' +$archive = '/opt/jboss-as-7.1.1.Final.tar.gz' + +# create new group + group { $jboss_group: + ensure => present, + name => $jboss_group, + } + +#create new user + user { $jboss_user: + ensure => present, + home => "/home/${jboss_user}", + groups => $jboss_group, + } + +# download jboss.tar.gz + file { 'Jboss_file': + ensure => file, + path => $archive, + source => $jboss_url, + owner => $jboss_user, + group => $jboss_group, + mode => '0755', + } + +# extract jboss files + exec { 'extract Jboss': + command => "tar xzf ${archive}", + cwd => '/opt', + creates => $jboss_home, + path => ['/usr/bin', '/usr/sbin',], + require => File['Jboss_file'], + } + +#create jboss system folder + file {'add jboss_conf': + ensure => directory, + path => '/etc/jboss-as', + owner => 'root', + group => 'root', + mode => '0755', + } + +# change ownership + exec { 'change owner': + command => "chown -R jboss:jboss ${jboss_home}", + path => ['/usr/bin', '/usr/sbin',], + require => Exec['extract Jboss'], + } + + +# add jboss_conf template + file { '/etc/jboss-as/jboss-as.conf': + ensure => file, + content => template('mjboss/jboss_conf.erb'), + owner => 'root', + group => 'root', + mode => '0644', + } + +# add jboss init script + file { '/etc/init.d/jboss': + ensure => file, + content => template('mjboss/jboss.erb'), + owner => 'root', + group => 'root', + mode => '0755', + } + +# start jboss service + service { 'jboss': + ensure => 'running', + enable => true, + } +} + diff --git a/modules/mjboss/templates/jboss.erb b/modules/mjboss/templates/jboss.erb new file mode 100644 index 0000000..0dd9c48 --- /dev/null +++ b/modules/mjboss/templates/jboss.erb @@ -0,0 +1,176 @@ +#!/bin/sh +# +# JBoss standalone control script +# +# chkconfig: - 80 20 +# description: JBoss AS Standalone +# processname: standalone +# pidfile: /var/run/jboss-as/jboss-as-standalone.pid +# config: /etc/jboss-as/jboss-as.conf + +# Source function library. +. /etc/init.d/functions + +# Load Java configuration. +[ -r /etc/java/java.conf ] && . /etc/java/java.conf +export JAVA_HOME + +# Load JBoss AS init.d configuration. +if [ -z "$JBOSS_CONF" ]; then + JBOSS_CONF="/etc/jboss-as/jboss-as.conf" +fi + +[ -r "$JBOSS_CONF" ] && . "${JBOSS_CONF}" + +# Set defaults. + +if [ -z "$JBOSS_HOME" ]; then + JBOSS_HOME=<%= @jboss_home %> +fi +export JBOSS_HOME + +if [ -z "$JBOSS_PIDFILE" ]; then + JBOSS_PIDFILE=/var/run/jboss-as/jboss-as-standalone.pid +fi +export JBOSS_PIDFILE + +if [ -z "$JBOSS_CONSOLE_LOG" ]; then + JBOSS_CONSOLE_LOG=/var/log/jboss-as/console.log +fi + +if [ -z "$STARTUP_WAIT" ]; then + STARTUP_WAIT=30 +fi + +if [ -z "$SHUTDOWN_WAIT" ]; then + SHUTDOWN_WAIT=30 +fi + +if [ -z "$JBOSS_CONFIG" ]; then + JBOSS_CONFIG=standalone.xml +fi + +JBOSS_SCRIPT=$JBOSS_HOME/bin/standalone.sh + +prog='jboss-as' + +CMD_PREFIX='' + +if [ ! -z "$JBOSS_USER" ]; then + if [ -x /etc/rc.d/init.d/functions ]; then + CMD_PREFIX="daemon --user $JBOSS_USER" + else + CMD_PREFIX="su - $JBOSS_USER -c" + fi +fi + +start() { + echo -n "Starting $prog: " + if [ -f $JBOSS_PIDFILE ]; then + read ppid < $JBOSS_PIDFILE + if [ `ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then + echo -n "$prog is already running" + failure + echo + return 1 + else + rm -f $JBOSS_PIDFILE + fi + fi + mkdir -p $(dirname $JBOSS_CONSOLE_LOG) + cat /dev/null > $JBOSS_CONSOLE_LOG + + mkdir -p $(dirname $JBOSS_PIDFILE) + chown $JBOSS_USER $(dirname $JBOSS_PIDFILE) || true + #$CMD_PREFIX JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT 2>&1 > $JBOSS_CONSOLE_LOG & + #$CMD_PREFIX JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT & + + if [ ! -z "$JBOSS_USER" ]; then + if [ -x /etc/rc.d/init.d/functions ]; then + daemon --user $JBOSS_USER LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT -c $JBOSS_CONFIG 2>&1 > $JBOSS_CONSOLE_LOG & + else + su - $JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT -c $JBOSS_CONFIG" 2>&1 > $JBOSS_CONSOLE_LOG & + fi + fi + + count=0 + launched=false + + until [ $count -gt $STARTUP_WAIT ] + do + grep 'JBoss AS.*started in' $JBOSS_CONSOLE_LOG > /dev/null + if [ $? -eq 0 ] ; then + launched=true + break + fi + sleep 1 + let count=$count+1; + done + + success + echo + return 0 +} + +stop() { + echo -n $"Stopping $prog: " + count=0; + + if [ -f $JBOSS_PIDFILE ]; then + read kpid < $JBOSS_PIDFILE + let kwait=$SHUTDOWN_WAIT + + # Try issuing SIGTERM + + kill -15 $kpid + until [ `ps --pid $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ] + do + sleep 1 + let count=$count+1; + done + + if [ $count -gt $kwait ]; then + kill -9 $kpid + fi + fi + rm -f $JBOSS_PIDFILE + success + echo +} + +status() { + if [ -f $JBOSS_PIDFILE ]; then + read ppid < $JBOSS_PIDFILE + if [ `ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then + echo "$prog is running (pid $ppid)" + return 0 + else + echo "$prog dead but pid file exists" + return 1 + fi + fi + echo "$prog is not running" + return 3 +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + $0 stop + $0 start + ;; + status) + status + ;; + *) + ## If no parameters are given, print which are avaiable. + echo "Usage: $0 {start|stop|status|restart|reload}" + exit 1 + ;; +esac + diff --git a/modules/mjboss/templates/jboss_conf.erb b/modules/mjboss/templates/jboss_conf.erb new file mode 100644 index 0000000..c4e8316 --- /dev/null +++ b/modules/mjboss/templates/jboss_conf.erb @@ -0,0 +1,18 @@ +# General configuration for the init.d scripts, +# not necessarily for JBoss AS itself. + +# The username who should own the process. +# + JBOSS_USER=<%= @jboss_user %> + +# The amount of time to wait for startup +# + STARTUP_WAIT=20 + +# The amount of time to wait for shutdown +# + SHUTDOWN_WAIT=10 + +# Location to keep the console log +# +# JBOSS_CONSOLE_LOG=/var/log/jboss-as/console.log diff --git a/site.pp b/site.pp new file mode 100644 index 0000000..b2152d4 --- /dev/null +++ b/site.pp @@ -0,0 +1,6 @@ +node 'agent3.bm' { + class { 'java': } + class { 'mjboss': } + class { 'deploy': } +} +