Blog 
OEM 12c Agent Deploy auf Windows – mit Cygwin kein Problem!

Mit dem Add Targets Wizard liefert der Oracle Enterprise Manager Cloud Control 12c eine einfache Möglichkeit über die GUI Konsole diverse Ziele, also neben „normalen“ Hosts, Datenbanken, Listener und ASM auch Exadatas und Middleware und Cluster Services uvm. zur Überwachung, mit mal mehr und mal weniger Konfigurationsmöglichkeiten verfügbar zu machen. Will man über den „Add Host Targets“ Wizard aber erstmal nur einen einfachen Server einbinden, wird auf diesem zunächst ein sogenannter Agent benötigt. Also eine Applikation die auf dem Host selbst die entsprechende Überwachung übernimmt und mit dem Enterprise Manager kommuniziert.

Agent 12c Deploy Cygwin 01

Zur Bereitstellung des Agents braucht es zunächst die Agent Software. Diese erhalten Sie entgegen früheren Versionen nur noch über den Self Update Service des Enterprise Managers. Wählen Sie die notwendige OS Plattform und laden Sie die Software. In unserem Fall für Agent Software (12.1.0.3) for Microsoft Windows x64 (64-bit). Diese funktioniert sowohl für Windows Server 2008 als auch Windows Server 2012.

Agent 12c Deploy Cygwin 03

Setup > Extensibility > Self Update > Agent Software

Wer der GUI nicht traut, kann über Kommandozeile die verfügbaren Agents abfragen:

$OMS_HOME/bin/emcli login -username=sysman -password=******

Login successful

$OMS_HOME/bin/emcli get_supported_platforms

———————————————–

Version = 12.1.0.3.0

Platform = Linux x86-64

———————————————–

Version = 12.1.0.3.0

Platform = Microsoft Windows x64 (64-bit)

———————————————–

Platforms list displayed successfully.

Jetzt kommt der entscheidende Scheideweg. Zum ausrollen der Agent Software über den „Add Host Targets“ Wizard auf den Zielhost benötigen Sie auch unter Windows einen SSH-Zugriff auf die Maschine, andernfalls erhalten Sie beim Versuch den Agent zu installieren einen Fehler: SSH server check failed – SSH daemon (sshd) is not running on port „22“.

Agent 12c Deploy Cygwin 04

Alternativ gibt es die Möglichkeit ein Agent Image über die Kommandozeile zu erstellen, welches Sie dann auf dem Zielhost direkt installieren. Damit umgehen Sie die Notwendigkeit einen SSH-Zugriff über Cygwin bereitzustellen. Für eine einzelne Version und ein paar wenige Windows Maschinen ist das sicherlich noch händelbar. Sobald Sie aber diverse Maschinen haben wird es schwieriger, zudem müssen Sie für jede neue Agent oder OS Version ein neues Paket schnüren und wieder einzeln installieren, der Aufwand multipliziert sich. Da erscheint die Möglichkeit über Cygwin einen gesicherten SSH-Zugriff auf die Windows-Maschine zu implementieren zukunftssicherer und praktikabler. Es ist auch keineswegs so, dass mit Cygwin ein offener SSH oder wie auch immer gearteter freier Zugriff auf die Windows-Maschine eingerichtet wird. Es werden nicht alle Sicherheitskonfigurationen ausgehebelt wie mancher gerne behauptet. Nur die notwendigsten Cygwin-Pakete werden installiert und sie können den SSH-Zugriff auf einen einzelnen Domänen-User (Oracle DBA) Passwort-gesichert beschränken. Zudem ist die Verwendung von Cygwin mit dem Add Host Targets Wizard von Oracle zertifiziert und supported (Ref.: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC151).

Falls Sie dennoch nicht mit Cygwin warm werden wollen, finden Sie eine Anleitung für eine Agent Installation ohne Cygwin in folgendem Blog: OEM 12c Agent deploy auf Windows – ohne Cygwin auch kein Problem.

Agent 12c Deploy Cygwin 05

Für alle anderen geht es zunächst mit der Cygwin Installation weiter.

Cygwin Installation

Das Pre-Installation Package finden Sie hier: https://cygwin.com/install.html (in meinem Fall setup-x86_64.exe)

Bevor Sie den SSH Zugriff über Cygwin einrichten müssen Sie sicherstellen dass es zu keinen Konflikten mit eventuell bereits installierten SSH-Services kommt. Oracle gibt hier explizit OpenSSH und MKSNT als SSH-Services an, welche gestoppt werden und aus der PATH-Variablen gelöscht werden müssen – diese Einschränkung gilt natürlich auch für andere Services die den SSH-Port 22 belegen oder blockieren sollten – Stichwort: Firewall.

Für die Installation und das erstmalige Einrichten benötigen Sie administrative Berechtigungen.
Agent 12c Deploy Cygwin 06

Agent 12c Deploy Cygwin 07

Agent 12c Deploy Cygwin 08

Die Installations-Files kann man später aus dem Download-Ordner entnehmen und zum nächsten Server schieben. So muss man nicht jedesmal neu herunterladen, dazu wählt man beim nächsten Server „Install from Local Directory“ und wählt die zuvor abgelegten Dateien aus.

C:\cygwin !

Agent 12c Deploy Cygwin 09

Ganz wichtig: Als Root Directory sollten Sie C:\cygwin wählen. Der Standardpfad für den Enterprise Manager ist auf C:\cygwin gesetzt. Andernfalls können Sie die Pfade in $OMS_HOME/oui/prov/resources/ssPaths_msplats.properties anpassen. Generell SSH_PATH, SCP_PATH, MKDIR_PATH, SH_PATH, CHMOD_PATH und TRUE. Bedenken Sie aber, dass Sie bspw. ein D: -Laufwerk auf allen Maschinen bereitstellen müssen, sonst müssen Sie hier immer wieder anpassen.

Agent 12c Deploy Cygwin 10

Agent 12c Deploy Cygwin 11

Agent 12c Deploy Cygwin 12

Agent 12c Deploy Cygwin 13

Bei den Packages angekommen, wählen Sie nur nachfolgende Pakete aus:

Agent 12c Deploy Cygwin 14

Admin > cygrunsrv

Agent 12c Deploy Cygwin 15

Archive > unzip + zip

Agent 12c Deploy Cygwin 16

Net > openssh + openssl

Agent 12c Deploy Cygwin 17

Alle zusätzlich notwendigen Pakete mit installieren lassen.

Agent 12c Deploy Cygwin 18

Agent 12c Deploy Cygwin 19

Fertig.

Cygwin Konfiguration

Editieren Sie die C:\cygwin\cygwin.bat und fügen folgende Codzeile zwischen chdir … und bash … ein:

set CYGWIN=binmode ntsec

Code ergänzen cygwin.bat:

Agent 12c Deploy Cygwin 20

Überprüfen Sie ob die Installation korrekt ausgeführt wurde:

C:\cygwin\cygwin.bat „Als Administrator“ ausführen und folgendes Kommando absetzen

cygrunsrv -h

Die Hilfe sollte angezeigt werden. Falls es hier ein Problem gibt, bleibt nur die erneute Installation.

Agent 12c Deploy Cygwin 21

Agent 12c Deploy Cygwin 22

Weiter geht es mit der SSH-Konfiguration.

ssh-host-config

Agent 12c Deploy Cygwin 23

*** Query: Overwrite existing /etc/ssh_config file? (yes/no) yes

*** Query: Should StrictModes be used? (yes/no) yes

*** Query: Should privilege separation be used? (yes/no) yes

*** Query: new local account ’sshd‘? (yes/no) yes

*** Query: Do you want to install sshd as a service?

*** Query: (Say „no“ if it is already installed as a service) (yes/no) yes

*** Query: Enter the value of CYGWIN for the daemon: [] binmode ntsec

*** Query: Do you want to use a different name? (yes/no) no

*** Query: Create new privileged user account ‚cyg_server‘? (yes/no) yes

*** Query: Please enter the password: ******

*** Query: Reenter: ******

Agent 12c Deploy Cygwin 24

Nach Eingabe von cyrunsrv –S sshd sollte der Service starten.

Agent 12c Deploy Cygwin 25

Weiter geht es mit der Konfiguration des Users, der letztlich über SSH auf die Maschine zugreifen soll. Dessen Anmeldedaten werden später im Enterprise Manager hinterlegt. Also sollte der Zugriff vom OEM-Server aus möglich sein.

Hier habe ich es mir einfach gemacht und die Installation direkt mit meinen Domänen Oracle DBA User mit administrativen Zugriffsrechten vorgenommen. Somit ist dieser User bereits hinterlegt. Falls Sie einen anderen Domänenbenutzer hinzufügen möchten geben Sie folgenden Code in der Cygwin Kommmandozeile ein:

/bin/mkpasswd -d -u oracle_dba >> /etc/passwd

mkdir -p /home/oracle_dba

chown oracle_dba /home/oracle_dba

Für einen lokalen User –l statt –d.

An dieser Stelle könnten Sie auch die /etc/passwd bearbeiten und alle überflüssigen User löschen und so den Zugriff auf Cygwin entsprechend beschränken. Dazu sichern sie zunächst die Datei C:\cygwin\etc\passwd und können diese dann direkt bearbeiten oder über Cygwin-Kommandozeile mit vi /etc/passwd.

In jedem Fall müssen Sie folgenden Code absetzen:

chown oracle_dba /var/log/sshd.log

chown -R oracle_dba /var/empty

chown oracle_dba /etc/ssh*

chmod 755 /var/empty

chmod 644 /var/log/sshd.log

Je nach Version existiert die sshd.log nicht, was zu vernachlässigen ist.

Nachdem Sie die C:\cygwin\etc\sshd_config gesichert haben müssen Sie als letzten Schritt noch am Ende der sshd_config folgende Zeile ergänzen:

KexAlgorithms diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

Tipp: Die Datei ist mit WordPad deutlich besser lesbar als mit Notepad.

Agent 12c Deploy Cygwin 26

Ändern Sie abschließend den Log On für den CYGWIN sshd Service entsprechend Ihrem Zugriffsbenutzer. Services.msc > CYGWIN sshd > Properties (Eigenschaften) > Log On

Agent 12c Deploy Cygwin 27

Wenn der Service ordnungsgemäß startet können Sie auf dem OEM-Server direkt den Zugriff testen:

oracle@oem12c[DBOEM12C]% ssh -l oracle_dba flowers ‚date‘

oracle_dba@flowers’s password:

Fri Dec 12 23:34:56 WEST 2014

Nach der Passwort-Abfrage sollte das Datum angezeigt werden. Der SSH-Zugriff funktioniert!

Agent Deploy

Jetzt geht es zum eigentlichen Agent Deploy.

Agent 12c Deploy Cygwin 28

Setup > Add Target > Add Targets Manually > Add Host Targets > Add Host …

Agent 12c Deploy Cygwin 29

Host und Plattform angeben > Next

Agent 12c Deploy Cygwin 30

WICHTIG: Hier kommt es auf die Named Credentials an. Es wird nach Groß- und Kleinschreibung unterschieden. Die Anmeldedaten müssen 1:1 wie in der passwd (C:\cygwin\etc\passwd) hinterlegt werden. Das Installation Base Directory können Sie frei wählen und das Instance Directory wird angehängt.

 Agent 12c Deploy Cygwin 31

Agent 12c Deploy Cygwin 32

Deploy Agent

Agent 12c Deploy Cygwin 33

Glückwunsch!

Cygwin vollständig deinstallieren

Zum Schluss noch die Rolle rückwärts. Wenn Sie Cygwin wieder entfernen wollen, starten Sie zunächst die setup.exe. Durchlaufen Sie dieses bis zur Paketauswahl und klicken neben All solange, bis Uninstall erscheint, Next, Next, Finish.

Agent 12c Deploy Cygwin 34

Leider bleibt hiernach noch ein Rest Daten übrig. Dazu folgende Befehle im Command absetzen:

C:\> takeown /f C:\cygwin /r /d y

C:\> icacls C:\cygwin /t /grant everyone:F

C:\> sc \\localhost delete sshd

Jetzt können Sie das Cygwin Verzeichnis löschen. Es bleiben noch die Lokalen Benutzer cyg_server und sshd sowie Registry-Einträge unter HKEY_CURRENT_USER\Software\Cygwin und HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin, welche Sie bedenkenlos löschen können.

Keine Kommentare zu “OEM 12c Agent Deploy auf Windows – mit Cygwin kein Problem!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Was kann CarajanDB für Sie tun?