HP iLO Einstellung via VMware Host

Wenn wir die Einstellung von HP iLO (Integrated Lights-Out) von einem VMware Host ändern wollen, brauchen wir zuerst SSH Zugang und die HP ESXi Utilities Offline Bundle für VMware.

Das Offline Bundle enthält unterschiedliche Anwendungen für die Konfiguration der HP iLO oder Raid Kontroller.

hpacucli HP Array Configuration Utility CLI
hpbootcfg HP Boot Configuration Utility
hpssacli HP Smart Storage Administrator CLI
hponcfg HP iLO (Integrated Lights-Out) management controller

Man kann die VIB Packete auf den VMware ESXi Host laden und mit dem Tool esxcli installieren.

esxcli software vib install -f -v /tmp/hponcfg-04-00.10.vib

Haben wir das HPE Custom Image für VMware ESX installiert, sind die HP Tools schon vorhanden und müssen nicht per Hand installiert werden.

Um die Einstellung des HP Integrated Lights-Out Board zu ändern verwenden wir das Programm HPonCFG.

Die iLO Werkeinstellung kann man mit der Option „reset“ zurücksetzen.

/opt/hp/tools/hponcfg --reset

Ein Neustart der iLO wird automatisch durchgeführt. Der Server muss nicht extra neu gestartet werden. Eine Downtime ist nicht notwendig.

Mit dem Programm HPonCFG kann man auch die Netzwerk-Einstellung vom HP iLO in eine XML-Datei exportieren.

/opt/hp/tools/hponcfg -w /tmp/ilo.xml

Die Datei ilo.xml enthält die Netzwerk-Einstellung von der iLO Board.

Man kann auch geziehlt Einstellung der iLO ändern. Dazu braucht man spezielle XML-Dateien. Hier ein Beispiel um das iLO Password zu auf den Wert „NEW-PASSWORD“ zu ändern.

<RIBCL VERSION="2.0">
 <LOGIN USER_LOGIN="Administrator" PASSWORD="NEW-PASSWORD">
  <USER_INFO MODE="write">
   <MOD_USER USER_LOGIN="Administrator">
    <PASSWORD value="password"/>
   </MOD_USER>
  </USER_INFO>
 </LOGIN>
</RIBCL>

Mit dem Programm HPonCFG und Option -f kann man die Einstellung zurück in der iLO speichern.

/opt/hp/tools/hponcfg -f /tmp/reset_admin_password.xml

Weitere Beispiele für die XML Einstellungen bekommt man bei HP Lights-Out XML Scripting Sample als Download.

Weitere Informationen zu dem HP Tools befinden sich in der
Dokumentation.

HP Proliant Server SNMP via ESXi Agent

Für das Monitoring von HL Proliant Server ist das Simple Network Management Protocol (SNMP) notwendig. Wenn man auf dem Server ein ESXi Host installiert hat, so bringt das HP Image den Agent schon mit.

Zuerst fragen wir den SNMP ab.

# esxcli system snmp get

   Authentication: 
   Communities: 
   Enable: false
   Engineid: 
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps: 
   Port: 161
   Privacy: 
   Remoteusers: 
   Syscontact: 
   Syslocation: 
   Targets: 
   Users: 
   V3targets:

Jetzt müssen wir den SNMP Agent in VMware ESXi aktivieren.

# esxcli system snmp set -c public -e true

Die Ausgabe sieht jetzt anders aus.

# esxcli system snmp get

   Authentication: 
   Communities: public
   Enable: true
   Engineid: 00000063000000a100000000
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps: 
   Port: 161
   Privacy: 
   Remoteusers: 
   Syscontact: 
   Syslocation: 
   Targets: 
   Users: 
   V3targets:

SNMP MIB module file download

Check_MK Raw Server Edition installation

Diese Anleitung beschreibt die Installation von Check_MK Raw Server Version 1.2.8 auf Ubuntu Server 16.04 LTE.

Die Installation von Ubuntu Server 16.04 wird einfach mit Standardvorgaben installiert.

Zusätzlich installieren wird ein extra Tool, welcher alle Abhängigkeiten zu Check_mk installiert.

sudo apt-get install gdebi-core

Auf der Download Seite von Check_mk finden wir die Version 1.2.8 Raw, welche 100% kostenlos ist.

Wir laden die 64bit Version für Ubuntu 16.04 runter.

wget https://mathias-kettner.de/support/1.2.8p18/check-mk-raw-1.2.8p18_0.xenial_amd64.deb

Jetzt können wir Check_mk mit allen Abhängigkeiten installieren.

sudo gdebi check-mk-raw-1.2.8p18_0.xenial_amd64.deb

Check_mk verwendet den Apache mit mod_proxy, welches aktiviert werden sollte.

sudo a2enmod proxy_http

Nach einem Neustart ist die Installation schon fast abgeschlossen.

sudo service apache2 restart

Wir können die installierte Version ausgeben.

omd version

Check_mk bietet die Möglichkeit unterschiedliche Seiten gleichzeitig zu betreiben. Wir erstellen eine Beispielseite „mysite“.

sudo omd create mysite
sudo omd start mysite

Jetzt kann man die Seite im Browser erreichen. http://HOSTNAME/mysite/ Die Zugangsdaten wurden bei der Erstellung angezeigt oder sind fest voreingestellt. Das Login lautet „omdadmin“ und das Password ist „omd“.

Sollte man die Zugangsdaten vergessen haben, kann man das Passwort zu jeder Zeit ändern.

sudo htpasswd /omd/sites/mysite/etc/htpasswd cmkadmin

Ein Update auf eine neue Check_mk Version ist immer möglich. Das Versionsupdate wird in Schritten durchgeführt.

Pfsense 2.4 mit Check_MK Agent

Leider wird das Check_mk Agent Paket für Pfsense nicht weiter entwickelt. Deshalb muss man die Installation vom Check_mk Agent von Hand vornehmen.

Für den Check_mk Agent ist die Installation von Bash notwendig.

pkg install -y bash

Ausführen über Diagnostics Command Prompt.

Jetzt werden zwei Verzeichnisse erstellt.

mkdir -p /opt/bin
mkdir -p /opt/etc/xinetd.d

Darin wird der Check_mk Agent von Git geladen.

curl --output /opt/bin/check_mk_agent 'https://git.mathias-kettner.de/git/?p=check_mk.git;a=blob_plain;f=agents/check_mk_agent.freebsd;hb=HEAD'

Die Datei wird ausführbar gemacht.

chmod +x /opt/bin/check_mk_agent

Führt man den Check_mk agent aus, sieht man schon das Ergebnis.

/opt/bin/check_mk_agent

Unter Diagnostics Edit File kann man die Konfiguration anpassen.

/opt/etc/xinetd.d/check_mk

# +------------------------------------------------------------------+
# |             ____ _               _        __  __ _  __           |
# |            / ___| |__   ___  ___| | __   |  \/  | |/ /           |
# |           | |   | '_ \ / _ \/ __| |/ /   | |\/| | ' /            |
# |           | |___| | | |  __/ (__|   <    | |  | | . \            |
# |            \____|_| |_|\___|\___|_|\_\___|_|  |_|_|\_\           |
# |                                                                  |
# | Copyright Mathias Kettner 2014             mk@mathias-kettner.de |
# +------------------------------------------------------------------+
#
# This file is part of Check_MK.
# The official homepage is at http://mathias-kettner.de/check_mk.
#
# check_mk is free software;  you can redistribute it and/or modify it
# under the  terms of the  GNU General Public License  as published by
# the Free Software Foundation in version 2.  check_mk is  distributed
# in the hope that it will be useful, but WITHOUT ANY WARRANTY;  with-
# out even the implied warranty of  MERCHANTABILITY  or  FITNESS FOR A
# PARTICULAR PURPOSE. See the  GNU General Public License for more de-
# ails.  You should have  received  a copy of the  GNU  General Public
# License along with GNU Make; see the file  COPYING.  If  not,  write
# to the Free Software Foundation, Inc., 51 Franklin St,  Fifth Floor,
# Boston, MA 02110-1301 USA.
 
service check_mk
{
	type           = UNLISTED
	port           = 6556
	socket_type    = stream
	protocol       = tcp
	wait           = no
	user           = root
	server         = /opt/bin/check_mk_agent
 
	# If you use fully redundant monitoring and poll the client
	# from more then one monitoring servers in parallel you might
	# want to use the agent cache wrapper:<br />
 
	#server         = /usr/bin/check_mk_caching_agent
 
	# configure the IP address(es) of your Nagios server here:
	#only_from      = 127.0.0.1 10.0.20.1 10.0.20.2
 
	# Don't be too verbose. Don't log every check. This might be
	# commented out for debugging. If this option is commented out
	# the default options will be used for this service.
	log_on_success =
 
	disable        = no
}

Jetzt müssen wir die Filer-Einstellungen anpassen.

/etc/inc/filter.inc

In der Zeile 2362 muss noch eine Zeit eingefügt werden. In Pfsense liegt die Zeit in 2375.

fwrite($xinetd_fd, "includedir /opt/etc/xinetd.d");
 
fclose($xinetd_fd);             // Close file handle

Man kann die Änderung auch von einem Skript „/opt/filter_check_mk_cron“ durchführen lassen.

#!/bin/sh
 
grep includedir /etc/inc/filter.inc
if [ $? -eq 0 ]
then
        exit 0
else
        awk '/fclose\(\$xinetd_fd\)\;/{print "fwrite($xinetd_fd, \"includedir /opt/etc/xinetd.d\");"}1' /etc/inc/filter.inc > /etc/inc/filter.inc.temp
        mv /etc/inc/filter.inc.temp /etc/inc/filter.inc
fi
exit 0

Das Script braucht auch Ausführungsrechte.

chmod +x /opt/filter_check_mk_cron

Nach dem Speichern der Datei /etc/inc/filter.inc müssen die Änderungen geladen werden. Das geschieht unter Status Filter Reload.

Jetzt kann man die Funktion prüfen.

telnet localhost 6556

Diese Anleitung ist eine Zusammenfassung von einem Forum Beitrag. Weiter Information zum Check_mk Agent gibt es in der Dokumentation.

Design Patterns

Eine beliebte Frage bei einem Einstellungstest als Softwareentwickler ist nach Design Patterns (Entwurfsmuster). Gut, wenn man dann einige Namen kennt und vielleicht deren Funktionsweise.

Entwurfsmuster

  • Abstract Factory (Abstrakte Fabrik)
  • Builder (Erbauer)
  • Factory Method(Fabrikmethode)
  • Prototype (Prototyp)
  • Singleton (Singleton)

Strukturmuster

  • Adapter (Adapter)
  • Bridge (Brücke)
  • Composite (Komposition)
  • Decorator (Dekorierer)
  • Facade (Fassade)
  • Flyweight (Fliegengewicht)
  • Proxy (Proxy)

Verhaltensmuster

  • Chain of Responsibility (Zuständigkeitskette)
  • Command (Befehl)
  • Interpreter (Interpreter)
  • Iterator (Iterator)
  • Mediator (Vermittler)
  • Memento (Memento)
  • Observer (Beobachter)
  • State (Zustand)
  • Strategy (Strategie)
  • Template Method (Schablonenmethode)
  • Visitor (Besucher)

VMware ESXi Verwaltung ohne Client

VMware ESXi ermöglicht die Verwaltung von Einstellungen ohne den Windows Client.

Viele Einstellung kann man direkt an der ESXi Konsole ändern, jedoch auch Remote mit SSH. Dazu muss man den SSH Dienst auf dem VMware Host starten. Das aktiviert den Zugang, um sich per SSH Remote zu verbinden.

ssh -v root@hostname

Das Direct Console User Interface (DCUI) ist die Anwendung, welche man an der Konsole vom VMware Hostsystem auf dem Monitor sieht.

dcui

Auch die virtuellen Maschinen kann man Remote steuern. Zuerst müssen wir die Nummer [vmid] der Viruellen Maschine (VM) ermitteln.

vim-cmd vmsvc/getallvms

Jetzt kann man die VM runter fahren.

vim-cmd vmsvc/power.shutdown [vmid]

Den Status der VM kann man erfragen mit…

vim-cmd vmsvc/power.getstate [vmid]

Jetzt kann man im Verzeichnis der VM die Einstellungen ändern.

vi /vmfs/volumes/datastore/vmfolder/name.vmx

Den RAM Speicher wird gesetzt mit der Einstellung memsize = „5120“.

Mit einem Reload wird die Einstellung geladen.

vim-cmd vmsvc/releoad [vmid]

Jetzt kann man die VM wieder einschalten.

vim-cmd vmsvc/power.on [vmid]

HP Tools unter VMware ESXi

Um ein HP Smart Array unter VMware ESXi zu verwalten, braucht man die HP Tools.

Nach dem Download von VMware überträgt man die VIB Datei auf den ESXi Host. Die Installation erfolgt mit dem ESXCLI Tool.

esxcli software vib install -v /tmp/scsi-hpsa-5.0.0.x86_64.vib

Die erfolgteiche Installation kann man auch prüfen.

esxcli software vib list |grep Hewlett

Jetzt kann man die HPacuCli mit dem ganzen Verzeichnis starten.

/opt/hp/hpacucli/bin/hpacucli

Die Anzeige der Einstellungen erhält man hier mit.

hpacucli> ctrl all show config

Den Status einer Festplatte kann man hiermit anzeigen.

hpacucli> ctrl slot=0 pd 1I:1:3 show status

Jede Festplatte hat eine Status LED welche man nutzen kann, um eine defekte Festplatte zu finden.

hpacucli> ctrl slot=0 pd 1I:1:3 modify led=on

http://www.datadisk.co.uk/html_docs/redhat/hpacucli.htm

VMware ESXi Disk verkleinern

Wird wollen eine Disk von einer Virtual Maschine (VM) von einem VMware ESXi Server verkleinern.

Zuerst müssen wir die Sektoren mit Nullen füllen.

Unter Windows gibt es das Tool SDelete.

sdelete.exe -z c:

Unter Linux können wir mit DD oder CAT arbeiten.

dd bs=1M count=8192 if=/dev/zero of=zero.fill;sync;rm -f zero.fill

cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill

Jetzt fahren wir die VM runter und verbinden uns mit dem VMware Host per SSH.

Jetzt können wir den Speicherplatz eine Thin Provisioning Disk wieder verkleinern.

vmkfstools -K /vmfs/volumes/Datastore2/vm1/vm1.vmdk

Sollten wir kein Thin Provisioning verwenden oder die Disk weiter verkeinern wollen, so ist eine Änderung in den Einstellungen notwendig.

Wir öffnen die Einstellungen von der Disk.

vi /vmfs/volumes/Datastore/vm1/vm1.vmdk

Wir suchen den Eintrag mit der Zahl 83886080.

RW 83886080 VMFS "vm1-flat.vmdk"

Die Zahl 83886080 ist die Größe von 40 GB und errechnet sich wie folgt.

40 GB => 40 * 1024 * 1024 * 1024 / 512 = 83886080

Wollen wird die Disk auf 20 GB verringern, so ergibt sich folgede Rechnung.

20 GB => 20 * 1024 * 1024 * 1024 / 512 = 41943040

Zuvor müssen wir sicher gestellt haben, das alle Daten mit einem Partitionstool in die erste Hälte verschoben wurden. Sonst besteht die Möglichkeit, mit der Änderung die Daten im zweiten Teil der Disk zu verlieren.

Jetzt kann die Konvertierung beginnen.

vmkfstools -i "/vmfs/volumes/Datastore2/vm1/vm1.vmdk" "/vmfs/volumes/Datastore2/vm1/vm1-new.vmdk" -d thin -a lsilogic

Check_MK Agent – JSON Daten auslesen

Mit diesem lokalen Check kann man zwei Messwerte (Temperatur und Luftfeuchtigkeit) von einer Messstation per JSON auslesen und an den Check_MK Agent übergeben. Die Daten werden von Check_MK ausgelesen und als Statistik angezeigt.

Für die Verarbeitung von JSON brauchen wir ein kleines Tool mit dem Namen JSON Query, kurz JQ.

sudo apt-get install jq

Die Messwerte haben folgendes JSON Format.

{"sensor":{"temperature":24,"humidity":33},"timestamp":1464340616}

Jetzt erstellen wir ein Shell Script im Verzeichnis /usr/lib/check_mk_agent/local/.

#!/bin/sh
NAME="Sensor"
URL="http://hostname/sensor.json"
 
RESULT=$(curl -s $URL)
TEMP=$(echo $RESULT | jq '.sensor.temperature')
HUMI=$(echo $RESULT | jq '.sensor.humidity')
TIME=$(echo $RESULT | jq '.timestamp')
DATE=$(date -d @$TIME)
 
#TEMP-WARNING=30
#TEMP-CRITICAL=40
#HUMI-WARNING=(Min=20/Max=40)
#HUMI-CRITICAL=(Min=10/Max=60)
 
echo "P ${NAME} Temperature=${TEMP};30;40|Humidity=${HUMI};20:40;10:60;0;100; ${DATE}"

Will man die Daten für 120 Sekunden vom Check_MK Agent zwischen speichern, so erstellt man das Script im Verzeichnis /usr/lib/check_mk_agent/local/120/. Die Daten werden dann im Verzeichnis /etc/check_mk/cache/ für 120 Sekunden gespeichert und erst nach Ablauf der Zeit von einem Hintergrundprozess aktualisiert.

Nach der Inventarisierung in Check_MK, wird ein neue Service „Sensor“ mit zwei Statistiken erzeugt.