Sebastian Mogilowskis Blog

Just another blog about administration, linux and other stuff

Language: German English

Puppet Dashboard / Reports – Ubuntu

Puppet reports with “Puppet Dashboard“:

Installation:

Add the following lines to your “/etc/apt/sources.list” file:

deb http://apt.puppetlabs.com/ubuntu lucid main
deb-src http://apt.puppetlabs.com/ubuntu lucid main

Run

aptitude update

to updates your packet list.

If you get an “GPG error” because the public key is not available than add the Puppet Labs repository key to APT. (NO_PUBKEY 1054B7A24BD6EC30) run:

gpg --recv-key 1054B7A24BD6EC30
gpg -a --export 1054B7A24BD6EC30 | sudo apt-key add -

and try “aptitude update” again.

Now install Puppet Dashboard package:

aptitude install puppet-dashboard

You need an MySQL Server to store the reports:

aptitude install mysql-server

Now run “mysql” and create a database and a user for the puppet dashboard:

mysql -u root -p
mysql> CREATE DATABASE dashboard CHARACTER SET utf8;
mysql> CREATE USER 'dashboard'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON dashboard.* TO 'dashboard'@'localhost';
exit;

Edit “/usr/share/puppet-dashboard/config/database.yml” and configure the “production” section:

production:
  database: dashboard
  username: dashboard
  password: password
  encoding: utf8
  adapter: mysql

Configure the database:

cd /usr/share/puppet-dashboard
rake RAILS_ENV=production db:migrate

Edit “/etc/default/puppet-dashboard” and uncomment the line:

START=yes

Now start puppet dashboard:

/etc/init.d/puppet-dashboard start

Edit “/etc/puppet/puppet.conf” on the puppetmaster and insert the following lines in the “[puppetmasterd]” section:

[puppetmasterd]
[...]
reports=puppet_dashboard
reportdir=/var/lib/puppet/reports
reporturl=http://SERVER:3000/reports
[...]

Note: Replace “SERVER” with the address of your puppetmaster server.

On the puppet clients edit the “/etc/puppet/puppet.conf” and modify the “[puppetd]” section:

[puppetd]
[...]
report=true
[...]

Note: You can do this via puppet, too !

Use puppet dashboard:

Open “http://SERVER:3000″ in your browser to access puppet dashboard.

Run puppet on your client (Restart puppet on the client or use puppetrun).

Look at the report with puppet dashboard in your browser.

Links:

* http://projects.puppetlabs.com/projects/dashboard
* http://searchenterpriselinux.techtarget.com/tip/Displaying-Puppet-reports-on-Puppet-Dashboard
* http://bitcube.co.uk/content/puppet-dashboard-v101-install
* http://www.craigdunn.org/2010/08/part-3-installing-puppet-dashboard-on-centos-puppet-2-6-1/

, , ,

Install VirtualBox 4.0 on Ubuntu / Debian

1. Add new software repository

Edit the file ”/etc/apt/sources.list” with your favorite editor and add the following line depending on your Ubuntu version:

 

 
 

Ubuntu 10.10 (Maverick Meerkat)

deb http://download.virtualbox.org/virtualbox/debian maverick contrib

Ubuntu 10.04 (Lucid Lynx LTS)

deb http://download.virtualbox.org/virtualbox/debian lucid contrib

Ubuntu 9.10 (Jaunty Jackalope)

deb http://download.virtualbox.org/virtualbox/debian karmic contrib

2. Add the GPG-Key

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

3. Install VirtualBox

aptitude update
aptitude install virtualbox-4.0 dkms

Links

* http://www.virtualbox.org
* http://www.virtualbox.org/wiki/Changelog
* http://en.wikipedia.org/wiki/VirtualBox
* http://de.wikipedia.org/wiki/VirtualBox

,

Install Tomcat 7 on Debian (Lenny) with virtual hosts and Apache2 integration


This article is a new version of my Apache Tomcat 6 article. This article describes how to install Apache Tomcat 7 on Debian Lenny, Apache2 integration and virtual hosts. Tocat 7 is not available over the regular sources on Debain Lenny (and Etch) it need to be installed by hand.

Tomcat 7 is still BETA. Please use Tomcat 6 for productive servers.

1. Install Java 6 runtime:

Choose one of the following Java JDK installations:

1.1 OpenJDK

aptitude install openjdk-6-jre

1.2 Sun Java (non-free)

vim /etc/apt/sources
deb http://ftp.de.debian.org/debian/ lenny main non-free
deb-src http://ftp.de.debian.org/debian/ lenny main non-free
aptitude update
aptitude install sun-java6-jre

Note: Keep in mind that you need a different Apache connector configuration if you use the Sun JDK.

2. Download Tomcat

Download Tomcat 7 from Tomcat 7 Download page.

For example:

wget http://artfiles.org/apache.org/tomcat/tomcat-7/v7.0.5-beta/bin/apache-tomcat-7.0.5.tar.gz

3. Install Tomcat

tar -xzvf apache-tomcat-7.0.5.tar.gz
mv apache-tomcat-7.0.5 /opt/tomcat

4. Create tomcat user and group

groupadd tomcat
useradd -g tomcat -d /opt/tomcat tomcat
usermod -G www-data tomcat
chown tomcat:tomcat /opt/tomcat -R

This create a new user “tomcat” and a group “tomcat”. It set the home directory for this user to “/opt/tomcat” and join the “tomcat” user the “www-data” group. This is necessary to access the virtual hosts. Finally give the “/opt/tomcat” directory to the new “tomcat” user.

5. Create Init-Script

vim /etc/init.d/tomcat
#!/bin/sh
#
# /etc/init.d/tomcat -- startup script for the Tomcat 7 servlet engine
#
# Modified init-Script from Ubuntu Tomcat init-script
#
# 2010 - Sebastian Mogilowski - http://www.mogilowski.net
#
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Tomcat.
# Description:       Start the Tomcat servlet engine.
### END INIT INFO

set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/tomcat
NAME=tomcat
DESC="Tomcat servlet engine"
DEFAULT=/etc/default/$NAME
JVM_TMP=/tmp/tomcat-tmp

if [ `id -u` -ne 0 ]; then
	echo "You need root privileges to run this script"
	exit 1
fi

# Make sure tomcat is started with system locale
if [ -r /etc/default/locale ]; then
	. /etc/default/locale
	export LANG
fi

. /lib/lsb/init-functions

if [ -r /etc/default/rcS ]; then
	. /etc/default/rcS
fi

# The following variables can be overwritten in $DEFAULT

# Run Tomcat 7 as this user ID and group ID
TOMCAT_USER=tomcat
TOMCAT_GROUP=tomcat

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
JDK_DIRS="/usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"

# Look for the right JVM to use
for jdir in $JDK_DIRS; do
    if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
	JAVA_HOME="$jdir"
    fi
done
export JAVA_HOME

# Directory where the Tomcat binary distribution resides
CATALINA_HOME=/opt/$NAME

# Directory for per-instance configuration files and webapps
CATALINA_BASE=/opt/$NAME

# Use the Java security manager? (yes/no)
TOMCAT_SECURITY=no

# Default Java options
# Set java.awt.headless=true if JAVA_OPTS is not set so the
# Xalan XSL transformer can work without X11 display on JDK 1.4+
# It also looks like the default heap size of 64M is not enough for most cases
# so the maximum heap size is set to 128M
if [ -z "$JAVA_OPTS" ]; then
	JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
fi

# End of variables that can be overwritten in $DEFAULT

# overwrite settings from default file
if [ -f "$DEFAULT" ]; then
	. "$DEFAULT"
fi

if [ ! -f "$CATALINA_HOME/bin/bootstrap.jar" ]; then
	log_failure_msg "$NAME is not installed"
	exit 1
fi

POLICY_CACHE="$CATALINA_BASE/work/catalina.policy"

if [ -z "$CATALINA_TMPDIR" ]; then
	CATALINA_TMPDIR="$JVM_TMP"
fi

# Set the JSP compiler if set in the tomcat.default file
if [ -n "$JSP_COMPILER" ]; then
	JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=\"$JSP_COMPILER\""
fi

SECURITY=""
if [ "$TOMCAT_SECURITY" = "yes" ]; then
	SECURITY="-security"
fi

# Define other required variables
CATALINA_PID="/var/run/$NAME.pid"
CATALINA_SH="$CATALINA_HOME/bin/catalina.sh"

# Look for Java Secure Sockets Extension (JSSE) JARs
if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then
    JSSE_HOME="${JAVA_HOME}/jre/"
fi

catalina_sh() {
	# Escape any double quotes in the value of JAVA_OPTS
	JAVA_OPTS="$(echo $JAVA_OPTS | sed 's/\"/\\\"/g')"

	AUTHBIND_COMMAND=""
	if [ "$AUTHBIND" = "yes" -a "$1" = "start" ]; then
		JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
		AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c "
	fi

	# Define the command to run Tomcat's catalina.sh as a daemon
	# set -a tells sh to export assigned variables to spawned shells.
	TOMCAT_SH="set -a; JAVA_HOME=\"$JAVA_HOME\"; source \"$DEFAULT\"; \
		CATALINA_HOME=\"$CATALINA_HOME\"; \
		CATALINA_BASE=\"$CATALINA_BASE\"; \
		JAVA_OPTS=\"$JAVA_OPTS\"; \
		CATALINA_PID=\"$CATALINA_PID\"; \
		CATALINA_TMPDIR=\"$CATALINA_TMPDIR\"; \
		LANG=\"$LANG\"; JSSE_HOME=\"$JSSE_HOME\"; \
		cd \"$CATALINA_BASE\"; \
		\"$CATALINA_SH\" $@"

	if [ "$AUTHBIND" = "yes" -a "$1" = "start" ]; then
		TOMCAT_SH="'$TOMCAT_SH'"
	fi

	# Run the catalina.sh script as a daemon
	set +e
	touch "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
	chown $TOMCAT_USER "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
	start-stop-daemon --start -b -u "$TOMCAT_USER" -g "$TOMCAT_GROUP" \
		-c "$TOMCAT_USER" -d "$CATALINA_TMPDIR" \
		-x /bin/bash -- -c "$AUTHBIND_COMMAND $TOMCAT_SH"
	status="$?"
	set +a -e
	return $status
}

case "$1" in
  start)
	if [ -z "$JAVA_HOME" ]; then
		log_failure_msg "no JDK found - please set JAVA_HOME"
		exit 1
	fi

	if [ ! -d "$CATALINA_BASE/conf" ]; then
		log_failure_msg "invalid CATALINA_BASE: $CATALINA_BASE"
		exit 1
	fi

	log_daemon_msg "Starting $DESC" "$NAME"
	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
		--user $TOMCAT_USER --exec "$JAVA_HOME/bin/java" \
		>/dev/null; then

		# Regenerate POLICY_CACHE file
		umask 022
		echo "// AUTO-GENERATED FILE from /opt/tomcat/" \
			> "$POLICY_CACHE"
		echo ""  >> "$POLICY_CACHE"
		cat $CATALINA_BASE/conf/*.policy \
			>> "$POLICY_CACHE"

		# Remove / recreate JVM_TMP directory
		rm -rf "$JVM_TMP"
		mkdir -p "$JVM_TMP" || {
			log_failure_msg "could not create JVM temporary directory"
			exit 1
		}
		chown $TOMCAT_USER "$JVM_TMP"

		catalina_sh start $SECURITY
		sleep 5
        	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
			--user $TOMCAT_USER --exec "$JAVA_HOME/bin/java" \
			>/dev/null; then
			if [ -f "$CATALINA_PID" ]; then
				rm -f "$CATALINA_PID"
			fi
			log_end_msg 1
		else
			log_end_msg 0
		fi
	else
	        log_progress_msg "(already running)"
		log_end_msg 0
	fi
	;;
  stop)
	log_daemon_msg "Stopping $DESC" "$NAME"

	set +e
	if [ -f "$CATALINA_PID" ]; then
		start-stop-daemon --stop --pidfile "$CATALINA_PID" \
			--user "$TOMCAT_USER" \
			--retry=TERM/20/KILL/5 >/dev/null
		if [ $? -eq 1 ]; then
			log_progress_msg "$DESC is not running but pid file exists, cleaning up"
		elif [ $? -eq 3 ]; then
			PID="`cat $CATALINA_PID`"
			log_failure_msg "Failed to stop $NAME (pid $PID)"
			exit 1
		fi
		rm -f "$CATALINA_PID"
		rm -rf "$JVM_TMP"
	else
		log_progress_msg "(not running)"
	fi
	log_end_msg 0
	set -e
	;;
   status)
	set +e
	start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
		--user $TOMCAT_USER --exec "$JAVA_HOME/bin/java" \
		>/dev/null 2>&1
	if [ "$?" = "0" ]; then

		if [ -f "$CATALINA_PID" ]; then
		    log_success_msg "$DESC is not running, but pid file exists."
			exit 1
		else
		    log_success_msg "$DESC is not running."
			exit 3
		fi
	else
		log_success_msg "$DESC is running with pid `cat $CATALINA_PID`"
	fi
	set -e
        ;;
  restart|force-reload)
	if [ -f "$CATALINA_PID" ]; then
		$0 stop
		sleep 1
	fi
	$0 start
	;;
  try-restart)
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
		--user $TOMCAT_USER --exec "$JAVA_HOME/bin/java" \
		>/dev/null; then
		$0 start
	fi
        ;;
  *)
	log_success_msg "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
	exit 1
	;;
esac

exit 0

Download the init-script: Tomcat 7 Init-Script (2.6 kB)

chmod +x /etc/init.d/tomcat
update-rc.d tomcat defaults

6. Activate the Tomcat manager

vim /opt/tomcat/conf/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
    <role rolename="manager"/>
    <role rolename="manager-gui"/>
    <role rolename="admin"/>
    <role rolename="admin-gui"/>
    <user username="YOUR_USERNAME" password="YOUR_PASSWORD" roles="admin,admin-gui,manager,manager-gui"/>
</tomcat-users>

6. Start Tomcat

/etc/init.d/tomcat start

Now you can access the Tomcat manager with http://SERVER:8080/manager.

7. Install Apache2 connector

You can use the Tomcat as a standalone webserver, but the apache webserver has more features and you can use the apache modules. (mod_rewrite for example)

aptitude install apache2 libapache2-mod-jk

7.1 Apache worker

vim /etc/apache2/workers.properties
workers.tomcat_home=/opt/tomcat
workers.java_home=/usr/lib/jvm/java-6-openjdk
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1

Note: Replace “/usr/lib/jvm/java-6-openjdk” with “/usr/lib/jvm/java-6-sun” if you using the non-free Sun Java runtime.

7.2 JK configuration file

vim /etc/apache2/conf.d/jk.conf
<ifmodule mod_jk.c>
    JkWorkersFile /etc/apache2/workers.properties
    JkLogFile /var/log/apache2/mod_jk.log
    JkLogLevel error
</ifmodule>
/etc/init.d/apache2 stop
/etc/init.d/tomcat restart
/etc/init.d/apache2 start

8. Create a new VirtualHost

Creating a new VirtualHost: (In Apache AND Tomcat)

8.1 Create directories

mkdir /var/www/vhost1
mkdir /var/www/vhost1/htdocs
mkdir /var/www/vhost1/logs
vim /etc/apache2/sites-available/vhost1

8.2 Apache

<virtualhost www.testsrv.local>
    JkMount /*.jsp default
    ServerName www.testsrv.local
    ServerAdmin servermaster@testsrv.local
    DocumentRoot /var/www/vhost1/htdocs
    ErrorLog /var/www/vhost1/logs/error.log
    CustomLog /var/www/vhost1/logs/access.log common
    <directory /var/www/vhost1/htdocs>
        Options -Indexes
    </directory>
</virtualhost>

Note: You can forward all files “JkMount /*” or all files in a folder “JkMount /folder/*” to the Tomcat, too.

a2ensite vhost1
/etc/init.d/apache2 reload

8.3 Tomcat

vim /opt/tomcat/conf/server.xml
<!-- www.testsrv.local -->
<Host name="www.testsrv.local" appBase="/var/www/vhost1" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="htdocs" debug="0" reloadable="true"/>
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/www/vhost1/logs"  prefix="tomcat_access_" suffix=".log" pattern="common" resolveHosts="false"/>
</Host>

Note: Make sure you use a uppercase “H”, “C” and “V” for “Host”, “Content” and “Value”. This is importand since Tomcat 7.

/etc/init.d/tomcat restart

Note: You can add additional domains with:

<Alias>additionaldomain.com</Alias>

9. Create a Testpage

vim /var/www/vhost1/htdocs/test.jsp
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello World</h1>
        Today is: <%= new java.util.Date().toString() %>
    </body>
</html>

Now you can test your configuration with http://www.testsrv.local/test.jsp

, , , , , ,

VMWare Open Virtualization Format Tool

Command line utility that supports import and export of OVF packages.

Download

Download VMWare Open Virtualization Format Tool here:

http://communities.vmware.com/community/vmtn/vsphere/automationtools/ovf

You can download this tool for Windows (64-Bit or 32-Bit), Linux (64-Bit or 32-Bit) and Mac OSX.

Install

chmod +x VMware-ovftool-2.0.1-260188-lin.x86_64.sh
./VMware-ovftool-2.0.1-260188-lin.x86_64.sh

Convert OVF to VMX

/opt/vmware/ovftool/ovftool /path/to/vm.ovf /path/to/vm.vmx

Convert VMX to OVF

/opt/vmware/ovftool/ovftool /path/to/vm.vmx /path/to/vm.ovf

More inforamtions and examples

See more examples in the documentation:

OVF Tool Userguide

, , ,

Adding an additional local storage to an existing XENServer

Add the new physical device “/dev/sdb” as second local storage to an existing Citrix XENServer installation:

(Note: I use XENServer 5.6)

xe sr-create content-type="local SR" host-uuid=(uuid of your xenserver host) type=(ext or lvm) device-config:device=/dev/sdb shared=false name-label="Second local storage"

The command returns the UUID of your new storage repository (SR).

Example:

xe sr-create content-type="local SR" host-uuid=d06d7c86-08af-4f87-9188-bd287daac20b type=lvm device-config:device=/dev/sdb shared=false name-label="Second local storage"
6b9fe5d2-bf6c-d776-dfb0-743f5b1f397c

If you want to set the new SR to the new default SR:

xe pool-param-set default-SR=[YOUR NEW SR UUID]  uuid=(uuid of your xenserver host)

Notes: You can use “pvdisplay” to lists all physical volumes.

[root@xen2 ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               VG_XenStorage-6b9fe5d2-bf6c-d776-dfb0-743f5b1f397c
  PV Size               596.17 GB / not usable 7.79 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              152617
  Free PE               150561
  Allocated PE          2056
  PV UUID               jKstcw-WSWy-EOWn-NUlq-fdM6-SwEC-eHwJSL

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               VG_XenStorage-714f456f-7b1e-da9d-9022-153ebaec6cdc
  PV Size               588.17 GB / not usable 6.31 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              150568
  Free PE               145772
  Allocated PE          4796
  PV UUID               U0Docl-IzMr-L7s0-nGCA-hTyQ-sHdk-2lVtJ2

,

How to Use VNC to access VMware Servers

Edit the “.vmx” file of your virtual machine and add this lines:

RemoteDisplay.vnc.enabled = "TRUE"
RemoteDisplay.vnc.port = "5900"
RemoteDisplay.vnc.password = "YOUR_PASSWORD"

Note: Use a different port for each virtual machine.

Links:

* http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=1246

, ,

Firmware Update HP Procurve

1. Download firmware

Download the latest firmware from http://www.hp.com/rnd/software/switches.htm

2. TFTP Server

Extract the downloaded file and use a TFTP Server http://www.mogilowski.net/lang/de-de/2010/10/25/setting-up-tftp-server-on-ubuntu

Example:

mv 2800-Software-I1077/I_* /srv/tftp/

3. Install new firmware

Create a telnet connection to the switch:

telnet SWITCH_IP

and copy the firmware to the switch:

copy tftp flash TFTP_SERVER_IP I_10_77.swi

Restart the switch with the new firmware with:

boot

Note: Replace “TFTP_SERVER_IP” with the IP of your TFTP server, “SWITCH_IP” with the IP of your switch and “I_10_77.swi” with your firmware version.

4. Test

Check if the new firmware is installed:

show version

5. Old versions

If your switch running a frimware lower than “I.07.68″ you frist have to patch with “I_07_68.swi”. After this update you can install “I_10_77.swi”. Both files are in the downloaded archive.

, ,

Factory reset HP Procurve

1. Serial console

Connect your PC to the switch via serial console. Use “GtkTerm” for example on Ubuntu.

2. Reset the switch

Push “Reset” AND “Clear” on the front of the switch.
Release “Reset” Button.
If the “Test” LED blinks release the “Clear” button and wait.

2. Save the new configuration

After the switch rebooted type

setup

in the serial terminal. After saving your settings do

write memory
reload

Now the new settings are active and saved permanently.

, ,

Setting up TFTP server on Ubuntu

Install a TFTP-Server on Ubuntu

1. Installation

sudo aptitude install atftpd

2. Configuration

sudo /etc/init.d/atftpd start

3. Files

Put all files for the TFTP server in the following directory:

/srv/tftp/

,

VMware Server 2, Proxysvc SSL Handshake problems

Get this server in /var/log/vmware/hostd.log if you want to connect to your VMWare Server ?

Proxysvc SSL Handshake on client connection failed: SSL Exception

Open about:config in Firefox and change

security.enable.ssl2 from false into true

In some cases you have to kill the vmware-hostd process and restart the management deamon:

/etc/init.d/vmware-mgmt restart

Links

* http://planetvm.net/blog/?p=1087
* http://communities.vmware.com/thread/240209?tstart=0

, ,

Previous Posts Next posts