Adaptec RAID 5405 in ESX 6.5 Überwachen

Um einen Adaptec RAID Controller auf einem ESX Host zu überwachen muss das VIB arcconf installiert werden, welches man unter den Storage Manager Downloads findet (Adaptec CIM Provider v7.31.18856 for VMware).

[stextbox id=“warning“ caption=“Achtung: Keine neueren Versionen verwenden!“]
Auch wenn es im ZIP-Archiv nur ein Verzeichnis für „ESX 5.0“ gibt, lässt sich dieses auch in neueren ESX Versionen wie 5.5. oder 6.5 verwenden.
Man mag nun versucht sein, einfach den CIM Provider einer neueren RAID Karte zu nehmen, doch das funktioniert beim alten RAID-Controller nicht!

Deswegen immer die alte „bewährte“ Version nehmen (cim_vmware_v7_31_18856\cim\esxi5_0\cim\vmware-esx-provider-arcconf.vib).
[/stextbox]

Nun lädt man die Datei: vmware-esx-provider-arcconf.vib per SCP/SFTP auf den ESX host ins Verzeichnis /tmp/.
Vor dem installieren muss noch der „acceptance-level“ auf „CommunitySupported“ umgestellt werden, danach kann man das VIB in der ESX-Shell installieren:

esxcli software acceptance set --level=CommunitySupported
esxcli software vib install -v /tmp/vmware-esx-provider-arcconf.vib
reboot

Hinweis: Auch wenn es in der Ausgabe heisst: Reboot Required: false, so muss trotzdem der ESX host neu gestartet werden!

Da das tool RemoteArcconf, mit dem später von einem anderen host der Status abgefragt werden kann das device file in: /dev/aac0 sucht, es bei neueren ESX Versionen aber: /dev/aac ist, muss nach dem reboot in der ESX-Shell noch einen symlink erstellt werden:

ln -s /dev/aac /dev/aac0

Kleiner Wermutstropfen: Da ESX keine Änderungen im filesystem speichert muss dieser symlink bei jedem neustart wieder erstellt werden.

Ab ESX 6.5 muss man nach der Installation ausserdem noch den CIM Secure Server aktivieren.

Auf dem remotehost brauch es ebenfalls das tool RemoteArcconf; dieses ist im oben erwähnten Paket enthalten.

[stextbox id=“note“ caption=“Hinweis für ESX 5.5″]
Enthält man auf ESX 5.5 trotzdem die Meldung:

[root@linux ~]# arcconf GETCONFIG 1
Controllers found: 0
Invalid controller number.

kann das daran liegen, dass der Installierte ESX Treiber (scsi-aacraid) zu alt ist und aktualisiert werden muss:

~ # esxcli software vib list | grep aac
scsi-aacraid                   1.1.5.1-9vmw.550.0.0.1331820          VMware   VMwareCertified   2014-11-27

Dazu lädt man sich den neuen Treiber herunter und installiert diesen:

~ # esxcli software vib install -v /tmp/Adaptec_Inc_bootbank_scsi-aacraid_5.5.5.2.1.41024-1OEM.550.0.0.1331820.vib
Installation Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed: Adaptec_Inc_bootbank_scsi-aacraid_5.5.5.2.1.41024-1OEM.550.0.0.1331820
   VIBs Removed: Adaptec_Inc_bootbank_scsi-aacraid_5.5.5.2.1.40301-1OEM.550.0.0.1331820
   VIBs Skipped:
~ # esxcli software vib list | grep aac
scsi-aacraid                   5.5.5.2.1.41024-1OEM.550.0.0.1331820  Adaptec_Inc  VMwareCertified   2015-09-11

Nach anschliessendem reboot und neu mounten des storages funktioniert arcconf:

[root@linux ~]# arcconf GETCONFIG 1
Controllers found: 1
----------------------------------------------------------------------
Controller information
----------------------------------------------------------------------
   Controller Status                        : Optimal
   Channel description                      : SAS/SATA
   Controller Model                         : Adaptec 5405

[/stextbox]

[stextbox id=“alert“ caption=“Achtung: Keinesfalls unter neueren ESX Versionen machen!“]
Der oben beschriebene Vorgang ist nur für ESX 5.5 nötig, bei neueren ESX Version (z.B: 6.5) passt der Standardtreiber.
Installiert man hier den andern Treiber ist das fatal, denn dann kann ESX überhaupt nicht mehr auf den storage zugreifen und da das Standard VIB entfernt wurde, bleibt nur noch eine Neuinstallation des ESX!
[/stextbox]

Quellen

RAID metadaten entfernen

Manchmal soll eine bereits benutzte Festplatte neu verwendet werden.

Dies kann Probleme geben, z.B. bei der Installation des Betriebssystems, wenn die Platte vorher schon einmal in einen Hardware- oder Soware-RAID war. Dann verweigern viele installer nämlich eine Installation.

Eine Möglichkeit wäre es die ganze Festplatte mit NULLEN zu überschreiben, doch das geht bei den heutigen Terrabyte Festplatten stunden. Dabei reicht, es nur die letzten 512 byte auf der Platte zu überschrieben:

MY_DEVICE="/dev/sdx"
dd if=/dev/zero of=$MY_DEVICE bs=512 seek=$(( $(blockdev --getsz $MY_DEVICE) - 1024 )) count=1024

Quellen

Farbiger Bash Prompt

Manchmal macht es Sinn, wenn man in der shell Farben hat, so kann man z.B. produktive Systeme rot und Test-Systeme grün kennzeichnen.

Das folgende Konstrukt in der bashrc macht beispielsweise den promt (user@system) grün:

PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '

Und das hier rot:

PS1='\[\e[1;31m\][\u@\h \W]\$\[\e[0m\] '

Quellen

UEFI-Installation von Windows 7

Mittels des neuen UEFI-BIOS, welches mit fast allen neuen PCs kommt started Windows 7 wesentlich schneller.

Damit jedoch die UEFI Installation startet muss einiges beachtet werden:

  • Im BIOS UEFI boot von CD aktivieren
  • Windows 7 64bit DVD verwenden (mittels eines USB-Sticks geht die Windows 7 UEFI Installation nicht ohne hacks!)

Überprüfen kann man die Installation, wenn man die Datenträgerverwaltung öffnet und als Partitionstabelle: „GPT“ steht.

Quellen

Benutzerliste aus LDAP/ActiveDirectory erstellen

Mittels python lassen sich Benutzer aus einem LDAP-Verzeichnis (bzw. ActiveDirectory) einfach auslesen und formatiert ausgeben:

#!/usr/bin/python
 
# import ldap module
import sys, ldap
 
# Define the name to search
searchstring="*"
 
# connection settings
ldap_url = "ldap://localhost"
binddn = "CN=LDAP User,OU=User Accounts,DC=example,DC=org"
pw = "secret"
 
# Search settings
basedn = "OU=User Accounts,DC=ad,DC=example,DC=net"
searchFilter = "(&(cn={searchstring}))".format (searchstring=searchstring)
searchAttribute = ['cn', 'sAMAccountName', 'displayName', 'mail']
searchScope = ldap.SCOPE_SUBTREE
 
# bind to the server
l = ldap.initialize(ldap_url)
try:
  l.simple_bind_s(binddn, pw)
except ldap.INVALID_CREDENTIALS:
  print "Your username or password is incorrect."
  sys.exit(0)
except ldap.LDAPError, e:
  if type(e.message) == dict and e.message.has_key('desc'):
    print e.message['desc']
  else:
    print e
  sys.exit(0)
 
# query LDAP
try:
  resultId = l.search(basedn, searchScope, searchFilter, searchAttribute)
  result_type, result_data = l.result(resultId)
 
  for ldap_dn,ldapuser in result_data:
    print ldap_dn
    #print ('username={ldap_sAMAccountName},)
    print ('username={ldap_sAMAccountName}\ndisplayName={ldap_displayName}\nmail={ldap_mail}\n\n').format (ldap_sAMAccountName = ldapuser['sAMAccountName'][0], ldap_displayName = ldapuser['displayName'][0], ldap_mail = ldapuser['mail'][0],)
 
except ldap.LDAPError, e:
  print e
 
# close connection
l.unbind_s()

Die Parameter unter „connection settings“ sind:

searchstring Der Name nach dem gesucht wird
ldap_url Die Adresse vom LDAP-Server
binddn Die DN vom Benutzer, welcher sich am LDAP-Server anmeldet (i.dR. ein „read-only“ user)
pw Passwort für den oben genannten Benutzer
basedn Fange ab hier mit der Suche an; das kann der root Pfad sein, besser ist es aber aber einen Pfad mit den aktiven Accounts einzuschränken, damit deaktivierte Benutzer nicht drin sind
searchFilter Das LDAP-Suchmuster; anstelle von „givenName“ kann beispielsweise auch „cn“ oder „displayName“ sein
searchScope Hier wird definiert ob nur im aktuellen LDAP-Zweig oder rekursiv gesucht wird

 

OpenVPN: Keine Verbindung unter Windows 7

Unter Windows 7 kommt keine Verbindung mit OpenVPN zustande.

Dies liegt an den Rechte-Einschränkungen, welche ab Windows 7 eingeführt wurden.
Damit OpenVPN weiterhin läuft muss man die folgenden Dinge beachten:

  • Windows UAC abschalten
  • Den OpenVPN installer als Administrator ausführen
  • Das config Verzeichnis muss vom Benutzerverzeichnis in das Installationsverzeichnis kopiert werden. Auf diesem Verzeichnis dem Benutzer Vollzugriff geben.
  • Im openvpn config file müssen diese zwei Zeilen hinzugefügt werden:
route-method exe
route-delay 2
  • Das Programm OpenVPN-Gui.exe muss mittels Rechtsklick angewählt werden, dann „als Administrator starten“ anklicken (sollte nur notwendig sein, falls UAC nicht abgeschaltet wurde)

Eigener DynamicDNS (ddns) Dienst

Kürzlich ärgerte ich mich wieder einmal über die monatliche Reaktivierung, die man bei seinem kostenlosen DyDNS-Hoster wie z.B. dyndns.com oder noip.com vornehmen muss.

Deshalb recherchierte ich ein bisschen über Lösungen und kam dann darauf, dass, wenn man bereits einen eigenen Nameserver und Webserver mit statischer IP hat, man daraus ganz einfach seinen eigenen „DynDns-Dienst“ machen kann! 😉
Hier die Beschreibung wie das geht.

Continue reading Eigener DynamicDNS (ddns) Dienst

apache: Authentifizierung wahlweise über IP oder HTTP-Auth

Bei sensiblen Web-Applikation wie die für das Verwalten des Mailservers (z.B. postfixadmin) oder welche die Zugriff auf die Datenbanken haben (z.B. phpmyadmin) sollte man sich nicht nur auf die Sicherheit der Applikation verlassen und stattdessen zusätzlich eine Authentifizierung über den Webserver (.htaccess) vornehmen.

Hierzu gibt es grundsätzlich zwei Möglichkeiten: Authentifizierung über die IP-Adresse und über eine HTTP-Passwortabfrage.

Doch während die erstere den Nachteil hat unflexibel zu sein (z.B. kein Zugriff mehr wenn man mal von einem Internet-Cafe dringend darauf zugreifen muss), müsste man bei zweitem immer zweimal einloggen: Einmal über die HTTP-Authentifizierung und einmal über die Web-Applikation selbst.

Doch zum Glück lassen sich diese zwei Mechanismen kombinieren, so dass man bei bekannten IPs ohne vorgängige Passwort-Abfrage direkt zum Web-Login kommt und bei „fremden“ IPs die Möglichkeit hat nach einer zusätzlichen HTTP-Authentifizierung die Web-Applikation zu erreichen.

Continue reading apache: Authentifizierung wahlweise über IP oder HTTP-Auth