Logo Oracle Deutschland August 2016
Patch Empfehlungen automatisch in Cloud Control laden bei offline OMS
von Ralf Durben

Oracle Enterprise Manager Cloud Control bietet im Rahmen des Lifecycle Management Packs eine sehr mächtige Lösung zum Patchen von Oracle Software. Dabei gibt Cloud Control Hinweise, welche Patches in ihren konkreten Installationen eingespielt werden sollten. Die dazu notwendigen Informationen werden im Falle einer Online Verbindung des OMS zu Oracle Support automatisch geladen. Die Online Verbindung des OMS ist dabei eine Ein-Weg-Verbindung, bei der nur Daten vom Oracle Support Server heruntergeladen werden. Die Analyse, welche Patches in der jeweiligen Umgebung eingespielt werden sollten, findet nur im lokal laufenden OMS statt. Es werden keine Kundendaten an den Support Server geschickt. Dieses zeigt Cloud Control auch an (hier ein Screenshot in der EM Version 13.1), wenn Sie über "Setup -> Provisioning und Patching -> Offline Patching" navigieren:

In manchen IT-Umgebungen ist die Online Verbindung aber nicht möglich und so wenden sich immer wieder Kunden an mich, die der Meinung sind, dass das Patching mit dem Lifecycle Management Pack für sie nicht nutzbar ist, da der OMS nicht online genutzt werden kann. Der oben angezeigte Screenshot zeigt aber schon, dass es auch einen OFFLINE-Modus gibt und der ist auch recht leicht zu nutzen. Klicken Sie einfach auf "Offline" und der Screen ändert sich wie folgt:

Das automatische Laden der Metadaten, die angeben, welche Patches zur Verfügung stehen, ist nun abgeschaltet und Sie müssen diese Informationen nun manuell in Cloud Control laden. Der Screen zeigt die URL, die Sie nun von irgendeinem internetfähigen PC (bzw. einem Computer, der den Server updates.oracle.com kontaktieren kann) aufrufen müssen. Die URL lautet immer https://updates.oracle.com/download/em_catalog.zip. In Cloud Control wird diese URL als Link angezeigt, sodass Sie diesen von einem Client-Browser, direkt aufrufen können. Auch das Upload der Datei kann direkt auf dieser Seite erfolgen. Bis hierhin funktioniert das auch schon in Cloud Control 12c.

Hochladen der Metadaten per EMCLI

Für das einmalige Hochladen dieser Datei ist die graphische Lösung sicherlich gut geeignet, aber es ist sinnvoll, diese Metadaten regelmäßig zu aktualisieren. Der Automatismus im ONLINE-Modus aktualisiert diese Daten zum Beispiel alle 24 Stunden. Hier kommt ab Cloud Control 13c EMCLI (Enterprise Command Line Interface) ins Spiel, denn Sie können die Patch-Metadaten auch mit EMCLI in Cloud Control laden. Dazu verwenden Sie das Verb "upload_catalog", welches sehr gut hier im Handbuch beschrieben wird:

emcli upload_catalog 
      -from_host="host_name"
      -file="absolute_path_of_catalog_file"
      [-cred_name="credential_name" [-cred_owner="credential_owner"]] 

Dabei benötigen Sie die Credential Parameter nur, wenn Sie keine Default Credentials für den Server auf dem die Metadaten liegen, definiert haben. Wenn dieses nicht der Fall ist, bekommen Sie folgende Meldung:

emcli upload_catalog -from_host="em13.example.com" -file="/home/oracle/em_catalog.zip"
Error #80087: The default normal preferred credential of the host "em13.example.com" is  not set.
Cause: The default normal preferred credential of the host "em13.example.com" is not set.
Action: Set the default normal preferred credential for host "em13.example.com" via command "emcli set_preferred_credential" or set the named credential to access host.

Geben Sie also in Cloud Control gültige Named Credentials an:

emcli upload_catalog -from_host="em13.example.com" -file="/home/oracle/em_catalog.zip" -cred_name="HOST_CRED_NAME" -cred_owner="SYSMAN"

You can run the following emcli command(s) to check the running details of each submitted job above:
emcli get_job_execution_detail -execution=36A563B9E2EC5A4BE0536738A8C004C1 -xml -showOutput

Beim ersten Test prüfen Sie den erfolgreichen Upload mit

emcli get_job_execution_detail -execution=36A563B9E2EC5A4BE0536738A8C004C1 -xml -showOutput
<?xml version = '1.0' encoding = 'UTF-8'?>
<jobExecution jobOwner="SYSMAN" status="2" startTime="2016-07-02 10:16:02.0" id="36A563B9E2EC5A4BE0536738A8C004C1" jobName="REFRESH FROM MY ORACLE SUPPORT 02.07.2016 12:16:01" statusBucket="-2">
   <TargetList/>
   <steps>
     <step command="updateARUTables" status="2" name="Refresh_From_My_Oracle_Support" startTime="2016.07.02 12:16:03" endTime="" timezoneRegion="+02:00" stepId="826505" stepType="1" jobType="RefreshFromMetalink" stepNlsId="RefreshFromMetalink_Refresh_From_My_Oracle_Support" stepDefaultName="Refresh_From_My_Oracle_Support" target="">
         <stepOutput>
            <output>


The OMS is in offline mode. Using the catalog file saved in the Software Library.
Ensure that the catalog file saved in the Software Library is up to date to avoid stale updates.

Catalog Data Details
---------------------------

aru_products.xml : Parsing...Done : Loading...Done
Parse Time (ms) : 39 
Load Time (ms) : 6062 

aru_releases.xml : Parsing...Done : Loading...Done
Parse Time (ms) : 205 
Load Time (ms) : 8135 

aru_platforms.xml : Parsing...Done : Loading...Done
Parse Time (ms) : 3 
Load Time (ms) : 46 

aru_languages.xml : Parsing...Done : Loading...Done
Parse Time (ms) : 3 
Load Time (ms) : 56 

aru_product_groups.xml : Parsing...Done : Loading...Done
Parse Time (ms) : 31 
Load Time (ms) : 2327 

aru_product_releases.xml : Parsing...Done : Loading...Done
Parse Time (ms) : 2777 
Load Time (ms) : 66881 

aru_component_releases.xml : Parsing...Done : Loading...Done
Parse Time (ms) : 7 
Load Time (ms) : 291 

aru_targets.xml : Parsing...Done : Loading...Done
Parse Time (ms) : 34 
Load Time (ms) : 46 

---------------------------------------------------
[MOS_RFMPlugIn] START
---------------------------------------------------
---------------------------------------------------
[RFMPlugIn_Cert] Certification Data Load Details
---------------------------------------------------
[RFMPlugIn_Cert] Loading from.../Orion/Services/components?ctype=product,release,platform,platform_version,wildcard-release,config-group,release-component,code_list
[RFMPlugIn_Cert] Data upload complete.
[RFMPlugIn_Cert] Load Time : [30s]


[RFMPlugIn_Cert] Loading from.../Orion/Services/components?ctype=certification</output>
         </stepOutput>
      </step>
   </steps>
</jobExecution>

Wenn Sie EMCLI immer wieder neu aufrufen, müssen Sie sich immer wieder an den OMS anmelden. Für einen Batch-Job ist das ungeeignet und daher verwenden Sie hier die Option AUTOLOGIN beim Setup von EMCLI. Dazu führen Sie einmalig folgendes aus:

emcli setup -url="https://em13.example.com:7803/em" -username="sysman" -autologin
Oracle Enterprise Manager 13c Release 1.
Copyright (c) 1996, 2015 Oracle Corporation and/or its affiliates. All rights reserved.

Enter password 

Emcli setup successful

Den aktuellen Stand können Sie prüfen mit

emcli setup -autologin
Oracle Enterprise Manager 13c Release 1.
Copyright (c) 1996, 2015 Oracle Corporation and/or its affiliates. All rights reserved.

Instance Home          : /home/oracle/.emcli
Verb Jars Home         : /home/oracle/emcli/./bindings/13.1.0.0.0/.emcli
EM URL                 : https://em13.example.com:7803/em
EM user                : sysman
Trust all certificates : false
Auto login             : true

Download der Metadaten per wget

Vor dem Upload jedoch steht der regelmäßige Download der Datei vom Oracle Support Server an. Dazu können Sie auf UNIX-basierten System mit wget arbeiten. Jedoch ist dabei zu beachten, dass ein Download von updates.oracle.com nur nach einer erfolgreichen Anmeldung möglich ist. Dazu legen Sie eine Datei wget.sh an mit folgendem Inhalt:
#!/bin/sh -x
#
# Script to load em_catalog.zip from updates.oracle.com
#
LANG=C
export LANG
# SSO username and password
SSO_USERNAME=EXAMPLE@ORACLE.COM
SSO_PASSWORD=password
# Output directory and file
OUTPUT_DIR=/home/oracle
# Path to wget command
WGET="/usr/bin/wget --no-check-certificate --secure-protocol=TLSv1 "
# Location of cookie file
COOKIE_FILE=/tmp/$$.cookies
# Log directory and file
LOGDIR=.
LOGFILE=$LOGDIR/wgetlog-`date +%m-%d-%y-%H:%M`.log
#
# End of user configurable variable
#
if [ "$SSO_PASSWORD " = " " ]
then
 echo "Please edit script and set SSO_PASSWORD"
 exit
fi
# Contact updates site so that we can get SSO Params for logging in
SSO_RESPONSE=`$WGET --user-agent="Mozilla/5.0" https://updates.oracle.com/Orion/Services/download 2>&1|grep Location`
# Extract request parameters for SSO
SSO_TOKEN=`echo $SSO_RESPONSE| cut -d '=' -f 2|cut -d ' ' -f 1`
SSO_SERVER=`echo $SSO_RESPONSE| cut -d ' ' -f 2|cut -d 'p' -f 1,2`
SSO_AUTH_URL=sso/auth
AUTH_DATA="ssousername=$SSO_USERNAME&password=$SSO_PASSWORD&site2pstoretoken=$SSO_TOKEN"
# The following command to authenticate uses HTTPS. This will work only if the wget in the environment
# where this script will be executed was compiled with OpenSSL. Remove the --secure-protocol option
# if wget was not compiled with OpenSSL
# Depending on the preference, the other options are --secure-protocol= auto|SSLv2|SSLv3|TLSv1
$WGET --user-agent="Mozilla/5.0" --secure-protocol=TLSv1 --post-data $AUTH_DATA --save-cookies=$COOKIE_FILE --keep-session-cookies $SSO_SERVER$SSO_AUTH_URL -O sso.out >> $LOGFILE 2>&1
rm -f sso.out
$WGET --user-agent="Mozilla/5.0" --load-cookies=$COOKIE_FILE --save-cookies=$COOKIE_FILE --keep-session-cookies "https://updates.oracle.com/download/em_catalog.zip" -O $OUTPUT_DIR/em_catalog.zip >> $LOGFILE 2>&1
# Cleanup
rm -f $COOKIE_FILE
Sie passen nur die Parameter SSO_USERNAME,SSO_PASSWORD und OUTPUT_DIR an.

Gesamtskript

Der EMCLI-Aufruf kann jetzt einfach in das wget.sh Skript eingefügt werden. Ihr Skript sieht insgesamt also so aus, nachdem -autologin eingestellt wurde, wobei Sie die oben stehenden Parameter an Ihre Umgebung anpassen:

load_patch_metadata.sh
#!/bin/sh -x # # Script to download the em_catalog.zip file an upload to Cloud Control # LANG=C export LANG #### Section to customize parameters ## SSO username and password SSO_USERNAME=EXAMPLE@ORACLE.COM SSO_PASSWORD=password ## Output directory and file OUTPUT_DIR=/home/oracle ## EMCLI settings CRED_NAME=HOST_CRED_NAME CRED_OWNER=SYSMAN EMCLIBIN=/home/oracle/emcli #### ------------------------------- # Path to wget command WGET="/usr/bin/wget --no-check-certificate --secure-protocol=TLSv1 " # Location of cookie file COOKIE_FILE=/tmp/$$.cookies # Log directory and file LOGDIR=. LOGFILE=$LOGDIR/wgetlog-`date +%m-%d-%y-%H:%M`.log # # End of user configurable variable # if [ "$SSO_PASSWORD " = " " ] then echo "Please edit script and set SSO_PASSWORD" exit fi # Contact updates site so that we can get SSO Params for logging in SSO_RESPONSE=`$WGET --user-agent="Mozilla/5.0" https://updates.oracle.com/Orion/Services/download 2>&1|grep Location` # Extract request parameters for SSO SSO_TOKEN=`echo $SSO_RESPONSE| cut -d '=' -f 2|cut -d ' ' -f 1` SSO_SERVER=`echo $SSO_RESPONSE| cut -d ' ' -f 2|cut -d 'p' -f 1,2` SSO_AUTH_URL=sso/auth AUTH_DATA="ssousername=$SSO_USERNAME&password=$SSO_PASSWORD&site2pstoretoken=$SSO_TOKEN" # The following command to authenticate uses HTTPS. This will work only if the wget in the environment # where this script will be executed was compiled with OpenSSL. Remove the --secure-protocol option # if wget was not compiled with OpenSSL # Depending on the preference, the other options are --secure-protocol= auto|SSLv2|SSLv3|TLSv1 $WGET --user-agent="Mozilla/5.0" --secure-protocol=TLSv1 --post-data $AUTH_DATA --save-cookies=$COOKIE_FILE --keep-session-cookies $SSO_SERVER$SSO_AUTH_URL -O sso.out >> $LOGFILE 2>&1 rm -f sso.out $WGET --user-agent="Mozilla/5.0" --load-cookies=$COOKIE_FILE --save-cookies=$COOKIE_FILE --keep-session-cookies "https://updates.oracle.com/download/em_catalog.zip" -O $OUTPUT_DIR/em_catalog.zip >> $LOGFILE 2>&1 # Cleanup rm -f $COOKIE_FILE $EMCLIBIN/emcli upload_catalog -from_host=$HOSTNAME -file=$OUTPUT_DIR/em_catalog.zip -cred_name=$CRED_NAME -cred_owner=$CRED_OWNER

Dieses können Sie nun in Ihr bevorzugtes Scheduling integrieren, wie zum Beispiel CRON, oder das Jobsystem von Cloud Control.

Fazit

Auch im Offline Modus können Sie ab Cloud Control 13c regelmäßig und automatisiert von stets aktuellen Patch-Empfehlungen profitieren.

Hinweis zur Lizenzierung

Das Patchmanagement in Cloud Control ist im Rahmen des Lifecycle Management Packs separat zu lizenzieren.

Weitere Informationen

 

Zurück zum Anfang des Artikels

Zurück zur Community-Seite