Oracle® Fusion Middleware Oracle Identity and Access Managementエンタープライズ・デプロイメント・ガイド 11gリリース2 (11.1.2.2.0) B71694-10 |
|
前 |
次 |
この付録では、単一のホストからすべてのスクリプトを起動するスクリプトの記述方法について説明します。
スクリプトを単一のホストからすべてのスクリプトを起動するように記述することで、1コマンドでのデプロイメント作成の効果が得られます。
次のサンプルスクリプトは、これを行うように変更できます。
免責事項: これらのスクリプトは実行例であり、デプロイメント処理を自動化する方法を示す概念を証明するものとして現状のまま提供されます。スクリプトは、使用している環境固有のニーズに合わせてカスタマイズおよびテストする必要があります。 |
この付録の内容は、次のとおりです。
このスクリプトは環境を設定します。
#!/bin/sh
#
# setenv.sh
#
# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
#
# NAME
# setenv.sh - captures details of environment to be deployed
#
# DESCRIPTION
# <short description of component this file declares/defines>
#
# NOTES
# <other useful comments, qualifications, etc.>
#
# MODIFIED (MM/DD/YY)
#
CURRENT_HOST=`hostname`
export USERNAME=<unix user eg oracle>
export IDMTOP=SW_ROOT
export SHARED_CONFIG_DIR=$IDMTOP/config
export LOCAL_CONFIG_DIR=<LOCAL_ROOT>
export REPOSITORY=<REPOS_HOME>
export INSTALLERS=$REPOSITORY/installers
export RESPONSE_FILE=<FULLY QUALIFIED PATH TO DEPLOYMENT RESPONSE FILE>
export PROVISIONING=<IDMLCM_HOME>/provisioning
export SCRIPTS_DIR=<DIRECTORY CONTAINING THESE SCRIPTS>
export JAVA_HOME=$REPOSITORY/jdk6
export ANT_HOME=$REPOSITORY/provisioning/ant
export PRIMORDIAL_TO_DMZ_SHARE=$PROVISIONING/dmzShare
export RCU_HOME=$INSTALLERS/rcu
export RCU_LOG_LOCATION=$SCRIPTS_DIR/rcu/logs-$$
export RCU_LOG_NAME=rcu.log
export RCU_TIMESTAMP_LOG_DIR=false
export DB_SCHEMA_PREFIX=DEV
PHASES_TO_RUN='preverify install preconfigure configure configure-secondary postconfigure startup validate'
export ALL_HOSTS='<LDAPHOST1> <LDAPHOST2> <OAMHOST1> <OAMHOST2> <OIMHOST1> <OIMHOST2> <WEBHOST1> <WEBHOST2>'
export DB_CONNECT_STRING=<DB-SCAN>:<DB_LSNR_PORT>:<IDSTORE_SERVICE_NAME>
export DB_PASSWORD_SYS=<DB SYS PWD>
export DB_PASSWORD_SCHEMA=<RCU_SCHEMA_PASSWORD>
mkdir -p $PRIMORDIAL_TO_DMZ_SHARE
function timer()
{
if [[ $# -eq 0 ]]; then
echo $(date '+%s')
else
local stime=$1
etime=$(date '+%s')
if [[ -z "$stime" ]]; then stime=$etime; fi
dt=$((etime - stime))
ds=$((dt % 60))
dm=$(((dt / 60) % 60))
dh=$((dt / 3600))
printf '%d:%02d:%02d' $dh $dm $ds
fi
}
execCmd()
{
HOST=$1
shift
CMD_LINE=$*
CMD="ssh $USERNAME@$HOST $CMD_LINE"
echo "[idmprov] " `date` $CMD
tmr=$(timer)
$CMD
printf '[idmprov] Elapsed time: %s\n' $(timer $tmr)
}
#!/bin/sh # # setlocalenv.sh # # Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. # # NAME # setenv.sh - captures details of environment to be deployed # # DESCRIPTION # <short description of component this file declares/defines> # # NOTES # <other useful comments, qualifications, etc.> # # MODIFIED (MM/DD/YY) # CURRENT_HOST=`hostname` export USERNAME=<software owner> export IDMTOP=<SW_ROOT> export SHARED_CONFIG_DIR=$IDMTOP/config export LOCAL_CONFIG_DIR=<LOCAL_ROOT> export REPOSITORY=<REPOS_HOME> export INSTALLERS=$REPOSITORY/installers export RESPONSE_FILE=<FULLY QUALIFIED PATH TO DEPLOYMENT RESPONSE FILE> export PROVISIONING=<IDMLCM_HOME>/provisioning export SCRIPTS_DIR=<DIRECTORY CONTAINING THESE SCRIPTS> export JAVA_HOME=$REPOSITORY/jdk6 export ANT_HOME=$REPOSITORY/provisioning/ant export PRIMORDIAL_TO_DMZ_SHARE=$PROVISIONING/dmzShare
これは、デプロイメント・スクリプトです。
#!/bin/sh # # deploy.sh # # Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. # # NAME # provision.sh - this script starts executing Deployment phases in all hosts # # DESCRIPTION # <short description of component this file declares/defines> # # NOTES # - copy all scripts named prov_*.sh to a directory in primordial host # - make sure this directory is accessible using the same path from all hosts being provisioned # - update prov_env.sh with environment specific details (directories, hostnames, db, etc) # - run this script from the primordial host # - script will create one log file for each phase in each host - named prov_run-<phase>-<host>.log # - script will stop when Deployment completes or on detecting 1st failure (absence of "BUILD SUCCESSFUL" in the log file) # # MODIFIED (MM/DD/YY) # . <DIRECTORY CONTAINING THESE SCRIPTS>/setenv.sh if [ ! -e $SCRIPTS_DIR/logs ]then mkdir -p $SCRIPTS_DIR/logs fi rm -r $SCRIPTS_DIR/logs/* LCM_ROOT/provisioning* <LCM_ROOT>/internal LCM_ROOT/lcmconfig LCM_ROOT/keystores 2> /dev/null starttmr=$(timer) for PHASE in $PHASES_TO_RUN do phasetmr=$(timer) for HOST in $ALL_HOSTS do echo "[idmprov] Running $PHASE on $HOST" logFile=$SCRIPTS_DIR/logs/$PHASE-$HOST.log execCmd $HOST ". $SCRIPTS_DIR/setlocalenv.sh; cd $PROVISIONING/bin; ./runIAMDeployment.sh -responseFile $RESPONSE_FILE -target $PHASE" > $logFile fgrep -s "BUILD SUCCESSFUL" $logFile if [ "$?" = "1" ] then echo "ERROR: $PHASE failed in $HOST" exit 1 fi done echo -e "[idmprov] Total $PHASE\c" printf ' time: %s\n' $(timer $phasetmr) done printf '[idmprov] Total Elapsed time: %s\n' $(timer $starttmr)
スクリプトの使用方法は、次のとおりです。
このスクリプトをトポロジ内の各ホスト上の使用可能な場所にコピーします。
スクリプトを編集し、<SW_ROOT>
のようなエントリを、ご使用の環境に適用可能なエントリと置き換えます。これを行いやすくするには、第7.1項「Identity and Access Managementのデプロイメントのための情報収集」を使用してください。
最初のホストからトポロジ内の他のホストのそれぞれに、ssh
等価を設定します。詳細については、オペレーティングシステムのドキュメントを参照してください。
最初のホストからトポロジ内の各ホストに次のコマンドを発行して、ssh
等価が機能していることを検証します。このコマンドでは、プロンプトなしで各リモート・マシンでの日付を示す必要があります。
ssh hostname date
第8章「デプロイメント・プロファイルの作成」で生成されたデプロイメント・レスポンス・ファイルを、これらのスクリプトのあるディレクトリと同じディレクトリにコピーします。
deploy.sh
スクリプトを実行します。
デプロイメントの完了後、ssh
等価を削除します。