Logo Oracle Deutschland   DBA Community  -  April 2012
Oracle Enterprise Manager Cloud Control 12c: Verteilen von beliebiger Software mit Deployment Prozeduren
von Ralf Durben, Oracle Deutschland B.V. & Co. KG

Die Verteilung von Software ist in größeren IT-Umgebungen eine ständige Herausforderung. Einheitliche Installationsverfahren sind die Voraussetzung für die Begrenzung von Wartungskosten. Oracle Enterprise Manager Cloud Control 12c ist ein Verwaltungssystem für kleine, mittlere und große IT-Umgebungen und hilft bei der Standardisierung von Softwareinstallationen.

Mit dem Lifecycle Management Pack von Oracle Enterprise Manager Cloud Control 12c können Sie Software aus der grafischen Konsole heraus auf Zielsysteme verteilen und installieren, also provisionieren. Dieses funktioniert für viele Oracle Produkte in einer vorgefertigen Form unter Verwendung von Deployment Prozeduren, die als eine Art Spezialformat für Provisionierungsskripte angesehen werden können. Dabei können die vorgefertigten Deployment Prozeduren direkt oder für die eigenen Bedürfnisse modifiziert verwendet werden. Sie können diese Technik jedoch auch für die Provisionierung beliebiger Software nutzen, indem Sie eigene Deployment Prozeduren erstellen.

Als einfaches Beispiel einer solchen Provisionierung soll in diesem Tipp das Verteilen einer ZIP-Datei mit anschliessendem Auspacken betrachtet werden. Bewusst wird in diesem Tipp versucht, das Beispiel einfach zu halten, um einen leichten Einstieg zu ermöglichen.

Dieser Tipp zeigt Ihnen, wie Sie eine ZIP-Datei mit einer selbstgeschriebenen Deployment Prozedur provisionieren können.

Inhalt

Dieser Tipp beinhaltet folgende Themen:

Vorbereitung der Software Library

Navigieren Sie zu "Setup"->"Provisioning and Patching"->"Software Library".



Prüfen Sie, ob die Software Library installiert ist. Dieses ist immer dann der Fall, wenn mindestens ein Speicherort (hier: Softlib_On_OMS) konfiguriert ist. Falls dieses noch nicht geschehen ist, klicken Sie auf "Add" und erstellen einen Speicherort. Nach der Bestätigung wird automatisch ein Job gestartet, der alle vorgefertigten Elemente in die Software Library überträgt. Dieser Vorgang dauert einige Minuten.



Erstellen eigener Verzeichnisse in der Software Library

Navigieren Sie zu "Enterprise"->"Provisioning and Patching"->"Software Library".



Das Ergebnis sollte ungefähr so aussehen. Die Software Library sieht aus, wie ein Filesystem mit Verzeichnissen.



Auf Betriebssystemebene jedoch findet sich eine eher kryptisch anmutende Struktur:

[oracle@host ]$ cd /oracle/softlib
[oracle@host softlib]$ ls
0   12  16  2   23  27  30  34  38  41  45  49  52  56  6   63  67  70  9
1   13  17  20  24  28  31  35  39  42  46  5   53  57  60  64  68  71
10  14  18  21  25  29  32  36  4   43  47  50  54  58  61  65  69  72
11  15  19  22  26  3   33  37  40  44  48  51  55  59  62  66  7   8
Der direkte, betriebssystemseitige Zugriff auf die Software Library ist nicht vorgesehen und auch nicht supportet.

Sie legen jetzt eine Verzeichnisstruktur in der Software Library für eigene Objekte an. Klicken Sie dazu in die erste Spalte der ersten Zeile und wählen damit die Zeile "Software Library" aus.



Dann öffnen Sie das Menü "Actions" und klicken auf "Create Folder".



Geben Sie einen Namen und ggf. eine Beschreibung für das neue Verzeichnis an.



Selektieren Sie das neue Verzeichnis (wie oben beschrieben) und erstellen zwei Unterverzeichnisse:
  • Komponenten
  • Direktiven
Das Ergebnis sieht dann zum Beispiel so aus:



Diese Verzeichnisse werden im Folgenden verwendet.

Speichern der ZIP-Datei in der Software Library

Softwarebestandteile, die provisioniert werden sollen, werden als Komponente in der Software Library gespeichert. Selektieren Sie hierzu in der Software Library das Verzeichnis, wo die Komponente gespeichert werden soll



und wählen dann im Menü "Actions"->"Create Entity"->"Component".



Belassen Sie es bei "Generic Component" und klicken auf "Continue".



Geben Sie der Komponente einen Namen. Des Weiteren können Sie hier Produktinformationen hinterlegen, um später die Suche zu vereinfachen. In diesem Beispiel wird das nicht benötigt. Klicken Sie auf "Next".



Eine spezielle Konfiguration ist im Falle einer ZIP-File Provisionierung nicht notwendig. Also klicken Sie einfach auf "Next".



Jetzt müssen Sie die ZIP-Datei hochladen. Dazu geben Sie erst einmal den Zielort an. Klicken Sie auf das Lupensymbol



und wählen den Zielort aus. Bestätigen Sie mit "OK".



Klicken Sie auf "Add", um die ZIP-Datei festzulegen. In diesem Beispiel liegt die ZIP-Datei auf dem Client-Rechner, von dem aus auf Cloud Control zugegriffen wird.



Geben Sie die ZIP-Datei und einen Namen an. Bestätigen Sie mit "OK".





Klicken Sie auf "Next".



Sie könnten jetzt schon Direktiven für diese Komponente festlegen. Sie haben aber noch keine passende, also klicken Sie auf "Next".



Es erfolgt eine Zusammenfassung. Klicken Sie auf "Save and Upload".



Sie bekommen bestätigt, dass die Komponente jetzt erstellt wurde.



Erstellen einer "Direktive"

Den Kopiervorgang könnten Sie jetzt schon leicht in einer Deployment Prozedur durchführen, aber das ist ja nur die "halbe Miete". Die ZIP-Datei soll auf dem Zielrechner auch ausgepackt werden. Dazu gibt es eine vorgefertigte Direktive, die jedoch für Oracle spezifische Zwecke optimiert ist. Aus diesem Grund muss diese Direktive "angepasst" werden. Dazu erstellen Sie zunächst eine Kopie der vorgefertigten Direktive.

Selektieren Sie in der Software Library unter "Software Library"->"CompositeDeploy"->"Directives" die Direktive "Unzip Directive"



und wählen dann im Menü "Actions" den Punkt "Create Like...".



Geben Sie der neuen Direktive einen Namen, eine Beschreibung und wählen das Verzeichnis, wo die neue Direktive gespeichert werden soll.



Die neue Direktive sollte automatisch selektiert sein. Klicken Sie auf "Edit".



Klicken Sie auf "Select Files".



Sie sehen, dass diese Direktive über das PERL Skript "unzip.pl" implementiert ist. Diese Datei muss nun leicht verändert werden. Klicken Sie daher auf den Dateinamen und öffnen die Datei mit einem Texteditor.



Speichern Sie die Datei lokal ab und nehmen folgende Änderungen vor:

  • Den Bereich
    my $FILE_NAME = $ARGV[0];
    my $STAGE_LOC   = $ARGV[1];
    my $AGENT_HOME = $ARGV[2];
    
    ändern Sie zu
    my $FILE_NAME = $ARGV[0];
    my $STAGE_LOC   = $ARGV[1];
    my $BASE_LOC   = $ARGV[2];
    my $AGENT_HOME = $ARGV[3];
    
  • Den Bereich
    my $DESTN_LOC = File::Spec->catfile( $AGENT_HOME, $STAGE_LOC  );
    my $ZIP_LOC = File::Spec->catfile( $AGENT_HOME, $STAGE_LOC, $FILE_NAME  );
    
    ändern Sie zu
    my $DESTN_LOC = File::Spec->catfile( $BASE_LOC, $STAGE_LOC  );
    my $ZIP_LOC = File::Spec->catfile( $BASE_LOC, $FILE_NAME  );
    
Hintergrund: Das Skript benutzt ein UNZIP Executable, welches im ORACLE_HOME des Agenten vorhanden ist und dazu muss der Parameter AGENT_HOME korrekt gesetzt sein. Leider packt das Skript die ZIP-Datei dann auch immer in einem Unterverzeichnis des AGENT_HOME aus. Die neue Version ist flexibler und Sie können das "Auspackverzeichnis" mit dem Parameter BASE_LOC angeben.

Speichern Sie die neue Datei und laden diese dann in die Direktive hoch, indem Sie auf "Add" klicken,



die Datei auswählen, "OK" klicken,



und die alte Datei entfernen.



Klicken Sie nun auf "Save and Upload".



Die Direktive ist nun erstellt. Diese müssen Sie aber noch leicht abändern. Selektieren Sie die Direktive in der Software Library und klicken auf "Edit". Klicken Sie auf den Reiter "Configure" und fügen mit "Add" einen weiteren Parameter "AGENT_HOME" zu.







Klicken Sie auf "Save".



Erstellen der Deployment Prozedur

Jetzt erstellen Sie die Deployment Prozedur. Navigieren Sie zu "Enterprise"->"Provisioning and Patching"->"Procedure Library".



Wählen Sie in der Pop-Liste die Aktion "Create New" und klicken auf "GO".



Geben Sie der Prozedur einen Namen und klicken auf "Procedure Steps".



Aktivieren Sie die Box der Default Phase und klicken auf "Insert", um in der Default Phase einen Ausführungsschritt zu erstellen.



Dieser erste Schritt soll die Software, also die ZIP-Datei auf den Zielrechner übertragen. Dazu geben Sie einen Namen an (hier: Transfer) und als Typ "Library: Component". Klicken Sie auf "Next".



Wählen Sie Ihre Komponente aus. Sie können auch z.B. über den Namen danach suchen. Klicken Sie auf "Next".



Es sollte automatisch die Direktive "CompositeDeploy/Directives/Copy" aktiviert sein. Wenn nicht, wählen Sie genau diese aus und klicken auf "Next".



Jetzt legen Sie fest, ob die Parameter bzgl. Name der Datei und Zielort schon jetzt festgelegt werden sollen, oder zur Laufzeit der Deployment Prozedur abgefragt werden sollen. An dieser Stelle soll eine festgelegte Provision erfolgen. Daher sind die Parameterwerte fest angegeben. Klicken Sie auf "Next" und dann auf "Finish".



Legen Sie einen weiteren Step an. Nennen Sie diesen "Unzip", aber jetzt vom Typ "Library: Directive". Klicken Sie auf "Next"



Im zweiten Schritt wählen Sie Ihre Unzip-Direktive aus und klicken auf "Next".



Jetzt finden Sie die vier Parameter aus der Direktive wieder. Sie können festlegen, ob die Werte jetzt festgelegt werden, oder später vom Benutzer eingegeben werden sollen. Für letztere Methode können Sie auch Prozedur Variablen nutzen, deren Werte in der gesamten Prozedur gültig sind. Hier werden alle Parameter in diesem Schritt einzeln eingegeben. Belassen Sie es also bei "Ask User...". Natürlich können Sie die Displaynamen ändern, um später eine intuitive Eingabe zu ermöglichen. Das wird hier nicht gemacht, damit Sie später die Originalnamen sehen können. Klicken Sie auf "Next".



und bestätigen dann mit "Finish".



Erstellen Sie die Prozedur mit "Save and Close".



Ausführen der Deployment Prozedur

Navigieren Sie zu "Enterprise" -> "Provisioning and Patching" -> "Procedure Library". Selektieren Sie die eben erstellte Prozedur und klicken dann auf "Launch".



Fügen Sie mit dem Button "Add" die Zielsysteme hinzu, auf die die ZIP-Datei provisioniert werden soll. Klicken Sie nach der Auswahl auf "Next".



Sie sehen jetzt die Eingabeparameter für die Unzip-Direktive. Da bei der Definition der Prozedur keine Displaynamen vergeben wurden, erscheinen hier die vom System generierten Namen. Es empfiehlt sich also im produktiven Einsatz eigene Displaynamen zu vergeben. Geben Sie die Parameter ein.

  • FILE_NAME ist der Name der Datei.
  • BASE_LOC gibt das Verzeichnis an, in dem die transferierte Datei liegen wird.
  • DEST_LOC gibt ein Unterverzeichnis von BASE_LOC an, wohin die Datei kopiert und ausgepackt werden soll.
  • AGENT_HOME ist eigentlich ein Pfad zum unzip Executable. Hier ist es das ORACLE_HOME des Agenten bis zum Unterverzeichnis core/"Versionsnummer" (Siehe Screenshot). Im dortigen Unterverzeichnis "bin" liegt ein unzip Executable. Der Agent liefert ein unzip also immer mit. Sie können alternativ natürlich auch das Standard-Executable z.B. unter /usr/bin verwenden. Dann geben Sie bei diesem Parameter einfach nur "/usr" ein.
Klicken Sie dann auf "Next".



Geben Sie ein gültiges Credential für den Oracle-User auf dem Zielrechner an und klicken auf "Next".



Sie können jetzt noch Schedule-Angaben machen und die Ereignisse für eine Benachrichtigung festlegen. Klicken Sie dann auf "Submit".



Sie geben noch einen Namen für diesen Durchlauf an und klicken auf "OK".



Nach kurzer Zeit ist die Deployment Prozedur erfolgreich gelaufen und die ZIP-Datei ist auf dem Zielrechner ausgepackt.



Nutzung von Prozedur-Parametern

Im obigen Beispiel hat jede Direktive eigene Parameter:

  • Bei der Direktive "Transfer" wurden die Parameter mit festen Werten belegt.
  • Bei der Direktive "Unzip" wurden die Parameter zur Laufzeit abgefragt.
Sie können aber auch Parameter für die gesamte Deployment Prozedur festlegen, die dann von den einzelnen Direktiven als Variablen genutzt werden. So könnten Sie im obigen Beispiel die Verzeichnisse auf diesem Wege einstellen.

Sie finden diese Möglichkeit bei der Erstellung/Modifikation einer Deployment Prozedur unter dem Reiter "Procedure Variables".



In der Direktive können Sie dann bei den einzelnen Properties "Choose Variable" und dann eine der bereits definierten Variablen auswählen.



Lizenzhinweis

Die Nutzung von Deployment Prozeduren ist im Rahmen des Lifecycle Management Packs separat lizenzpflichtig.

Weitere Informationen und hilfreiche Links

Weitere Informationen finden Sie unter:


Zurück zum Anfang des Artikels

Zurück zur Community-Seite