Installing a Novell SUSE Subscription Management Tool (SMT) Server

Before we start installing SMT we have to have to following:

  • A SLES 11 server
  • The media for SMT SLE11 (downloaded here). This is a ISO file, in this document we assume we have this ISO in /tmp

Step 1 Installing SMT

  1. In Yast goto Software | Add-On Products
  2. Click on Add and choose the media where you want to install form. In our case this is a ISO file in /tmp
  3. Accept the License Agreement and proceed with the installation

Step 2 Configuration Wizard
In this section where going to configure the settings for SMT. Make sure you now the following :

  • NCC Mirroring Credentials (you can find these on the Customer Portal from Novell)
  • NCC email address (this one you must know ;-))

So now the configuration.

  1. Select Enable Subscription Management Tool Service (SMT)
  2. Select Open Port in Firewall (if you use the firewall on your SLES 11 host)
  3. Provide the NCC Mirroring Credentials (you can test them by clicking on the Test button (Duh!))
  4. Provide the NCC E-mail Used for Registration
  5. If you want you can give another (generic) URL for your SMT server. This URL is used by all your other servers. In my case this is instsrv01.wilmsen.lan
  6. Click on Next
  7. Provide a Database Password for the SMT user
  8. Click on Add to provide a E-mail address where the reports are send to
  9. Click on Next
  10. If you haven’t registered this server in NCC, you can this now by selecting Register in Novell Customer Center and click on Next. If you have done this before the installation of SMT you can skip this step.
  11. After this the setting are written to the configuration and you can continue to select for witch products you want to download updates.

Step 3 Select product to download updates for

  1. Start Yast2 and select SMT Server Management
  2. Select the products where you want to download updates for and click on Toggle Mirroring
  3. Select OK
  4. To kick of a manual mirror open a terminal and give the command smt-mirror. The patches will be downloaded in /srv/www/htdocs/

Step 4 Enabling SSL for Apache
We want to download patches to a secure channel. Therefor we have to enable SSL for our webserver (Apache).

  1. In Yast2 select HTTP Server
  2. If this is the first time, go through the wizard and click Finish. After this select HTTP server again
  3. Go to the Server Modules tab and find under the section Name SSL
  4. Click on Toggle Status and click Finish

Step 5 Registering Server to SMT
In this step we are going to register (other) server to our SMT server.

  1. You can register a client by using the clientSetup4SMT.sh script. You can download this script from your SMT server.
    You can use wget to download the script: wget http://servername/repo/tools/clientSetup4SMT.sh
  2. Make the script executable: chmod +x clientSetup4SMT.sh
  3. Start the script: ./clientSetup4SMT.sh
  4. You’re asked to accept the SSL certificate. Give a Y to accept
  5. Press Y to register this server to your SMT server

Now your server is registered on you SMT server. Is you look in Yast in your software repositories you will see there is a extra channel.

Step 6 Preform a onetime manual download of patches

By default a cron job is added in /etc/cron.d so patches are download daily. If you don’t want this remove the job. You can wait a day before the patches are downloaded or you can give the command smt-mirror to do a manual download.

That’s all!

Poll for a session on Brainshare EMEA and novellcongres.nl

As some of you probably know, I’m very interested in the combination of OES2 on VMware ESX or vSphere.Last may I did 2 session at the novellcongres.nl about creating a SLES10 template for VMware ESX and the performance of NSS on VMFS.
Especially the last session was well visited.

Next year, and that is in a couple of weeks from now, there in another novellconges.nl and of course Brainshare EMEA in Amsterdam.

I diffidently will do a session a novellcongres.nl but I’m thinking about doing that same session (of maybe a little bit  adjusted) on Brainshare EMEA. The subject will be OES2 on VMware vSphere best implementation.

Thinking about this idea, I’m wondering how you guy’s thinks about this subject? If you would go to one of these events, would you go this session?
I’m very interested in your opinion, so let me know! leave a replay!

Default X11 forwarding with ssh

Probably everybody knows what the function of ssh is and what you can do with it.

If you have a server in a controlled room, normally it’s running in runlevel 3 (this is full multi user mode with networking without X Windows). If you want to make changes to the system through Yast for example, you could go to the control room, power on the monitor and start X by giving the command startx, make your changes and close X.

Another solution is to make a remote connection through ssh (ssh user@servername) and start Yast. Normally this is pure text mode. So if you start yast2 (graphical Yast) the normal yast is started because the graphical output cannot be transferred through the ssh connection.
It’s possible to forward the X output through the ssh connection by giving the option -X (ssh user@servername -X).

If you want the X forwarding by default you can arrange this in the configuration file for ssh in /etc/ssh/ssh_config. Remove the # before ForwardX11 and change the no to yes.

Now the X forwarding option is always enabled by default.

New header for novell.com

Novell released a preview for the new header for there website novell.com

Take a sneek preview at http://www.novell.com/headerpreview/

I think this header is more simple and easier to access than the previous one. Personally I have a  bookmark to the CoolSolutions site of Novell. I try to read this site ones a week.
When I’m on a public PC I don’t have my bookmark and I’m not the best in remember URL’s. So then I have to go to the novell.com website and look it up in the menu.
I always have to take a good look to find the link in the menu. This is now easier for me. So… Lucky me! 🙂

Script for rescanning new (virtual) disk in Linux

I ran into a problem that I wanted to add a new virtual disk to a Linux virtual machine without rebooting the virtual machine. I Googled around and found this scripted from Kurt Garloff.

I tested the scripted and I got the new SCSI disk without rebooting.

Just to make sure that I always have access to the scripted I post it in this blog.

#!/bin/bash
# Skript to rescan SCSI bus, using the
# scsi add-single-device mechanism
# (w) 1998-03-19 Kurt Garloff (c) GNU GPL
# (w) 2003-07-16 Kurt Garloff (c) GNU GPL
# $Id: rescan-scsi-bus.sh,v 1.15 2004/05/08 14:47:13 garloff Exp $

setcolor ()
{
red=”e[0;31m”
green=”e[0;32m”
yellow=”e[0;33m”
norm=”e[0;0m”
}

unsetcolor ()
{
red=””; green=””
yellow=””; norm=””
}

# Return hosts. sysfs must be mounted
findhosts_26 ()
{
hosts=
if ! ls /sys/class/scsi_host/host* >/dev/null 2>&1; then
echo “No SCSI host adapters found in sysfs”
exit 1;
#hosts=” 0″
#return
fi
for hostdir in /sys/class/scsi_host/host*; do
hostno=${hostdir#/sys/class/scsi_host/host}
hostname=`cat $hostdir/proc_name`
hosts=”$hosts $hostno”
echo “Host adapter $hostno ($hostname) found.”
done
}

# Return hosts. /proc/scsi/HOSTADAPTER/? must exist
findhosts ()
{
hosts=
for driverdir in /proc/scsi/*; do
driver=${driverdir#/proc/scsi/}
if test $driver = scsi -o $driver = sg -o $driver = dummy -o $driver = device_info; then continue; fi
for hostdir in $driverdir/*; do
name=${hostdir#/proc/scsi/*/}
if test $name = add_map -o $name = map -o $name = mod_parm; then continue; fi
num=$name
driverinfo=$driver
if test -r $hostdir/status; then
num=$(printf ‘%dn’ `sed -n ‘s/SCSI host number://p’ $hostdir/status`)
driverinfo=”$driver:$name”
fi
hosts=”$hosts $num”
echo “Host adapter $num ($driverinfo) found.”
done
done
}

# Test if SCSI device $host $channen $id $lun exists
# Outputs description from /proc/scsi/scsi, returns new
testexist ()
{
grepstr=”scsi$host Channel: 0*$channel Id: 0*$id Lun: 0*$lun”
new=`cat /proc/scsi/scsi | grep -e”$grepstr”`
if test ! -z “$new”; then
cat /proc/scsi/scsi | grep -e”$grepstr”
cat /proc/scsi/scsi | grep -A2 -e”$grepstr” | tail -n2 | pr -o4 -l1
fi
}

# Perform search (scan $host)
dosearch ()
{
for channel in $channelsearch; do
for id in $idsearch; do
for lun in $lunsearch; do
new=
devnr=”$host $channel $id $lun”
echo “Scanning for device $devnr …”
printf “${yellow}OLD: $norm”
testexist
if test ! -z “$remove” -a ! -z “$new”; then
# Device exists and we’re in remove mode, so remove and readd
echo “scsi remove-single-device $devnr” >/proc/scsi/scsi
echo “scsi add-single-device $devnr” >/proc/scsi/scsi
printf “rx1b[Ax1b[Ax1b[A${yellow}OLD: $norm”
testexist
if test -z “$new”; then
printf “r${red}DEL: $normrnnnn”; let rmvd+=1;
fi
fi
if test -z “$new”; then
# Device does not exist, try to add
printf “r${green}NEW: $norm”
echo “scsi add-single-device $devnr” >/proc/scsi/scsi
testexist
if test -z “$new”; then
# Device not present
printf “rx1b[A”;
# Optimization: if lun==0, stop here (only if in non-remove mode)
if test $lun = 0 -a -z “$remove” -a $optscan = 1; then
break;
fi
else
let found+=1;
fi
fi
done
done
done
}

# main
if test @$1 = @–help -o @$1 = @-h -o @$1 = @-?; then
echo “Usage: rescan-scsi-bus.sh [options] [host [host …]]”
echo “Options:”
echo ” -l activates scanning for LUNs 0-7 [default: 0]”
echo ” -w scan for target device IDs 0 .. 15 [default: 0-7]”
echo ” -c enables scanning of channels 0 1 [default: 0]”
echo ” -r enables removing of devices [default: disabled]”
echo “–remove: same as -r”
echo “–nooptscan: don’t stop looking for LUNs is 0 is not found”
echo “–color: use coloured prefixes OLD/NEW/DEL”
echo “–hosts=LIST: Scan only host(s) in LIST”
echo “–channels=LIST: Scan only channel(s) in LIST”
echo “–ids=LIST: Scan only target ID(s) in LIST”
echo “–luns=LIST: Scan only lun(s) in LIST”
echo ” Host numbers may thus be specified either directly on cmd line (deprecated) or”
echo ” or with the –hosts=LIST parameter (recommended).”
echo “LIST: A[-B][,C[-D]]… is a comma separated list of single values and ranges”
echo ” (No spaces allowed.)”
exit 0
fi

expandlist ()
{
list=$1
result=””
first=${list%%,*}
rest=${list#*,}
while test ! -z “$first”; do
beg=${first%%-*};
if test “$beg” = “$first”; then
result=”$result $beg”;
else
end=${first#*-}
result=”$result `seq $beg $end`”
fi
test “$rest” = “$first” && rest=””
first=${rest%%,*}
rest=${rest#*,}
done
echo $result
}

if test ! -d /proc/scsi/; then
echo “Error: SCSI subsystem not active”
exit 1
fi

# defaults
unsetcolor
lunsearch=”0″
idsearch=`seq 0 7`
channelsearch=”0″
remove=””
optscan=1
if test -d /sys/class/scsi_host; then
findhosts_26
else
findhosts
fi

# Scan options
opt=”$1″
while test ! -z “$opt” -a -z “${opt##-*}”; do
opt=${opt#-}
case “$opt” in
l) lunsearch=`seq 0 7` ;;
w) idsearch=`seq 0 15` ;;
c) channelsearch=”0 1″ ;;
r) remove=1 ;;
-remove) remove=1 ;;
-hosts=*) arg=${opt#-hosts=}; hosts=`expandlist $arg` ;;
-channels=*) arg=${opt#-channels=};channelsearch=`expandlist $arg` ;;
-ids=*) arg=${opt#-ids=}; idsearch=`expandlist $arg` ;;
-luns=*) arg=${opt#-luns=}; lunsearch=`expandlist $arg` ;;
-color) setcolor ;;
-nooptscan) optscan=0 ;;
*) echo “Unknown option -$opt !” ;;
esac
shift
opt=”$1″
done

# Hosts given ?
if test “@$1” != “@”; then
hosts=$*;
fi

echo “Scanning hosts $hosts channels $channelsearch for ”
echo ” SCSI target IDs ” $idsearch “, LUNs ” $lunsearch
test -z “$remove” || echo ” and remove devices that have disappeared”
declare -i found=0
declare -i rmvd=0
for host in $hosts; do
dosearch;
done
echo “$found new device(s) found. ”
echo “$rmvd device(s) removed. ”