Oracle Enterprise Manager Cloud Control (Cloud Control)で提供されているデプロイメント・プロシージャは、業界でのすべてのベスト・プラクティスを考慮して作成されているデフォルトのプロシージャです。デプロイメント・プロシージャに含まれている手順により、プロビジョニングとパッチ適用に関するすべての要件を満たすことができます。デフォルトの設定のままデプロイメント・プロシージャを使用して、環境内のターゲットに対してプロビジョニングまたはパッチ適用を行うことはできますが、デプロイメント・プロシージャをカスタマイズして、カスタム手順を追加する、不要な手順を無効化する、認証ツールを使用して別のユーザーとしての一部の手順を実行するといったことも可能です。
デプロイメント・プロシージャをカスタマイズして、様々なエラー処理方法を実装することもできます。たとえば、複数のホストにパラレルでパッチを適用するパッチ操作では、エラーが発生したホストのスキップが適切な場合があります。ただし、デバイス作成におけるエラーによって、その後のプロビジョニング操作が無効になることがあります。したがって、場合によってはこのようなステップのエラーの際にプロシージャ全体を中止する必要があります。
この章では、ニーズに合うようにデプロイメント・プロシージャをカスタマイズする方法を理解することができます。この章の具体的な内容は次のとおりです。
次に、デプロイメント・プロシージャに対して行えるカスタマイズのタイプを説明します。
タイプ1 | タイプ2 |
---|---|
カスタム・デプロイメント・プロシージャの編集 Cloud Controlで提供されている既存のカスタム・デプロイメント・プロシージャを編集して、新しいフェーズとステップを追加できます。ただし、パッチ適用の場合、追加できるステップはディレクティブ・ステップまたはホスト・コマンド・ステップのみです。 次のタスクを実行できます。
注意: Oracle所有のデプロイメント・プロシージャは編集できません。そのためには、類似作成の機能を使用してOracle所有のプロシージャをクローニングし、それを編集して変更を含める必要があります。 |
ユーザー定義デプロイメント・プロシージャの作成 新しいステップ、フェーズ、権限レベルなどを含む独自のデプロイメント・プロシージャを作成できます。 次のタスクを実行できます。
注意: ユーザー定義デプロイメント・プロシージャを作成するための手順は、「ユーザー定義デプロイメント・プロシージャ(UDDP)の作成、保存および起動」を参照してください。 |
次の図では、デプロイメント・プロシージャのカスタマイズ・ページを使用して、Cloud Controlで提供されるデフォルト・デプロイメント・プロシージャのコピーを作成する方法を示します。その後、新しいステップやフェーズを追加するか、コピーに含まれる既存のステップやフェーズを編集して、プロシージャをカスタマイズできます。
ステップとフェーズの追加方法の詳細は、「デプロイメント・プロシージャのカスタマイズ」を参照してください。
デプロイメント・プロシージャをカスタマイズするための最初の手順は、Cloud Controlで提供されるデフォルト・デプロイメント・プロシージャのコピーの作成です。独自の変更内容で編集およびカスタマイズできるのはコピーだけです。デフォルト・デプロイメント・プロシージャは絶対に変更しないでください。
デプロイメント・プロシージャにフェーズまたはステップをさらに追加して、追加のカスタム・スクリプト、ホスト・コマンドまたはジョブを実行できます。フェーズおよびステップを参照してください。
注意:
フェーズの外部でステップを追加する場合、追加できるステップのタイプは「ジョブ・ステップ」または「手動ステップ」に限定されます。フェーズの外部で、他のステップは追加できません。一方フェーズの内部では、この項で説明するすべてのステップを追加できます。
ここでは、デプロイメント・プロシージャで様々なタイプのフェーズまたはステップを編集する方法を説明します。特に、次の内容について説明します。
フェーズの一般情報を編集するには、次の手順に従います。
「エンタープライズ」メニューから「プロビジョニングとパッチ適用」を選択し、「プロシージャ・ライブラリ」を選択します。
プロビジョニング・ページの「プロシージャ・ライブラリ」タブで、メニューから「新規作成」を選択し、「実行」をクリックします。
新規プロシージャの作成ページで、「プロシージャ・ステップ」タブをクリックします。
フェーズを選択し、「ステップの編集」をクリックして、フェーズを編集します。
作成ウィザードで、次の手順を実行します。
作成ページに、フェーズの一般情報が表示されます。必要に応じてを変更し、「次へ」をクリックします。
ターゲット・リストの選択ページで、新しいフェーズを実行するターゲットのタイプを指定します。
プロシージャの作成中に宣言されたターゲット・リストがすべてドロップダウン・メニューにリストされるので、このフェーズで使用するターゲット・リストを選択します。実際のターゲットは、プロシージャの起動時に選択できます。
確認ページで、新しいフェーズを作成するために指定した情報を確認して、「終了」をクリックします。フェーズの変更が保存されます。
編集ウィザードで、次の操作を実行します。
編集ウィザードで、次の操作を実行します。
表55-1 フィールドの説明 - ステップのカスタマイズ
フィールド名 | 説明 |
---|---|
選択 |
「ステップ」を選択します。 |
名前 |
カスタム・ステップの名前を指定します。 |
説明 |
カスタム・ステップの説明を指定します。 |
条件 |
このフィールドを空白のままにします。 |
挿入場所 |
選択したステップの後にカスタム・ステップを挿入する場合は、「"ステップ名"の後」を選択します。それ以外の場合は、「"ステップ"の前」を選択します。 |
タイプ |
|
エラー処理 |
カスタム・フェーズに設定するエラー処理モードを選択します。デプロイメント・プロシージャのすべてのステップには、エラー処理モードが事前に構成されています。これにより、フェーズまたはステップでエラーが発生した際にデプロイメント・プロシージャの動作が指示されます。Cloud Controlでは次のエラー処理モードが提供されています。 - 継承 - 包含するフェーズに設定されているエラー処理モードを継承します。(フェーズの外部のステップに設定されると、デプロイメント・プロシージャのエラー処理モードを継承します)。 - エラー時に停止 - エラーが発生した場合に停止します。エラーを修正するか、オーバーライドするまでは、デプロイメント・プロシージャは次のステップに進みません。 - エラー時も続行 - エラーが発生した場合でも続行します。 - ターゲットをスキップ - リストで失敗したターゲットを無視し、他のターゲットで続行します。 |
Enterprise Manager 12.1.0.3 (パッチ・セット2)以上では、PAF機能ドメイン内のコマンド・ブロックを使用する新しい機能が導入されています。コマンド・ブロックは、ホストで実行中のスクリプトにより出力ストリームに印刷される必要のある一連の文字列です。次の形式に従います。
$$$--*$$' <commandBlock> <executeProc name="MGMT_PAF_UTL.UPDATE_RUNTIME_DATA"> <scalar>%job_execution_id%</scalar> <scalar>${data.<DP_VARIABLE_NAME>}</scalar> <scalar><DP_VARIABLE_VALUE></scalar> </executeProc> </commandBlock> $$$*--$$ Where,you need to enter the values for <DP_VARIABLE_NAME> and <DP_VARIABLE_VALUE> Example: In the following example, isPingSuccessful is the DP variable, and true is the value. print '$$$--*$$'; print '<commandBlock>'; print '<executeProc name="MGMT_PAF_UTL.UPDATE_RUNTIME_DATA"> '; print '<scalar>%job_execution_id%</scalar> '; print '<scalar>${data.isPingSuccessful}</scalar> '; print '<scalar>true</scalar> '; print '</executeProc>'; print '</commandBlock>'; print '$$$*--$$';
任意の言語(シェル、Perlなど)を使用して、ホストで実行するスクリプトを記述できます。前述のコマンド・ブロックを出力ストリームに印刷できるかぎり、プロシージャ変数は更新されます。
この機能を使用すると、ランタイム時にプロシージャで宣言された変数の値を更新できます。また、コマンド・ブロック機能を使用すると、リモート・マシン(エージェント)から生成された出力の自動後処理の実行が可能になり、この出力はOMSにアップロードされてジョブ・システムで処理されます。PAFでは、この機能を使用して、コマンド・ブロック形式の出力を持つプロシージャ内のステップを定義できます。コマンド・ブロック内では、SQLプロシージャを起動して、プロシージャ変数に値を割り当てることができます。
注意:
実行時にコマンド・ブロックを使用してプロシージャで宣言された変数を更新できるのは、ディレクティブ・ステップ、コンポーネント・ステップおよびジョブ・ステップのみです。
次の例に、ターゲットでコマンドを実行して、ランタイム時にプロシージャの変数を更新する方法を示します。この例では、プロシージャのディレクティブ・ステップを使用して、pingコマンドをホストで実行します。pingコマンドが成功すると、ディレクティブはプロシージャの値をtrue
に設定します。失敗すると、ディレクティブはプロシージャの値をfalse
に設定します。
次に示すのは、高レベルのステップです。
表55-2 ランタイム時の変数値の割当て
手順 | 詳細 |
---|---|
手順1 |
ローカル・ホストで、 |
手順2 |
Perlスクリプトをソフトウェア・ライブラリにアップロードします。手順の詳細なリストについては、ステップ2: ソフトウェア・ライブラリへのTestPingAndDPvariable.plのアップロードを参照してください。 |
手順3 |
変数 |
手順4 |
プロシージャを実行します。詳細は、ステップ4: プロシージャの起動および実行時の変数値の入力を参照してください。 |
手順5 |
変数の詳細を確認します。詳細は、ステップ5: デプロイメント・プロシージャ変数値の確認を参照してください。 |
任意のエディタを開き、次のコード行をコピーして、ファイルをPerlスクリプトとして保存します。
system("ping", "-c", "1", "127.0.0.1"); if ( $? == 0 ) { # below 9 lines of print statements set the DP variable "isPingSuccessful" as "true" string print '$$$--*$$'; print '<commandBlock>'; print '<executeProc name="MGMT_PAF_UTL.UPDATE_RUNTIME_DATA"> '; print '<scalar>%job_execution_id%</scalar> '; print '<scalar>${data.isPingSuccessful}</scalar> '; print '<scalar>true</scalar> '; print '</executeProc>'; print '</commandBlock>'; print '$$$*--$$'; } else { # below 9 lines of print statements set the DP variable "isPingSuccessful" as "false" string print '$$$--*$$'; print '<commandBlock> '; print '<executeProc name="MGMT_PAF_UTL.UPDATE_RUNTIME_DATA"> '; print '<scalar>%job_execution_id%</scalar> '; print '<scalar>${data.isPingSuccessful}</scalar> '; print '<scalar>false</scalar> '; print '</executeProc> '; print '</commandBlock>'; print '$$$*--$$ '; }
ソフトウェア・ライブラリでディレクティブ・エンティティを作成するには、次の手順に従います。
関連項目:
詳細は、『Oracle Enterprise Manager Cloud Control管理者ガイド』を参照してください。
プロシージャを作成するには、次の手順に従います。
Cloud Controlで、「エンタープライズ」メニューから「プロビジョニングとパッチ適用」を選択し、「プロシージャ・ライブラリ」をクリックします。
「プロシージャ・ライブラリ」ページでメニューから、「新規作成」を選択し、「実行」をクリックします。
「一般情報」ページで、プロシージャの一意の名前を入力します。
「新規プロシージャの作成」ページで、「プロシージャ変数」をクリックします。「行を追加」をクリックし、次の詳細を入力します。
「プロシージャ・ステップ」タブをクリックします。「デフォルト・フェーズ」を選択し、「挿入」をクリックして、次のステップをデフォルト・フェーズに追加します。
プロシージャを実行する前に変数の値を印刷するホスト・コマンド・ステップを追加します。次に手順を示します。「作成」ページで、メニューから「ホスト・コマンド」を選択して、ステップの一意の名前を入力し、「次」をクリックします。「コマンドの入力」ページで、値echo Before String is: "${data.isPingSuccessful}"
を入力します。
注意: DPコードのDP変数isPingSuccessful
にアクセスする式は、${data.isPingSuccessful}です。
「次」をクリックします。詳細を確認して、「終了」をクリックします。
ソフトウェア・ライブラリにアップロードされたディレクティブをコールするためのping
と呼ばれるディレクティブ・ステップを追加します。これを行うには、「作成」ページで、ステップに対して一意の名前を入力し、「タイプ」メニューから「ディレクティブ」を選択します。「ディレクティブの選択」ページで、文字列%Ping%
を検索します。アップロードしたディレクティブを選択し、次をクリックします。「プロパティのマップ」ページで、すべてをデフォルト値のままにすることができます。「確認」ページで、「終了」をクリックします。
プロシージャを実行した後に変数の値を印刷するホスト・コマンド・ステップを追加します。次に手順を示します。「作成」ページで、メニューから「ホスト・コマンド」を選択して、ステップの一意の名前を入力し、「次」をクリックします。「コマンドの入力」ページで、値echo After String is: "${data.isPingSuccessful}"
を入力します。「次へ」をクリックします。詳細を確認して、「終了」をクリックします。
「保存して閉じる」をクリックします。
デプロイメント・プロシージャのすべてのステップには、エラー処理モードが事前に構成されています。これにより、フェーズまたはステップでエラーが発生した際にデプロイメント・プロシージャの動作が指示されます。Cloud Controlでは次のエラー処理モードが提供されています。
継承- 含まれるフェーズに設定されたエラー処理モードを継承します。(フェーズの外部のステップに設定されると、デプロイメント・プロシージャのエラー処理モードを継承します)。
エラー時に停止 - エラーが発生すると停止します。エラーを修正するか、オーバーライドするまでは、デプロイメント・プロシージャは次のステップに進みません。
ステップの詳細は、「フェーズおよびステップ」を参照してください。
エラー処理モードを変更するには、次の手順を実行します。
次の例は、「Oracleデータベースのプロビジョニング」デプロイメント・プロシージャをカスタマイズして、「宛先ユーザー権限のチェック」フェーズのエラー処理モードを変更する様子です。
Cloud Controlは、デプロイメント・プロシージャのステータスを報告するために電子メール通知を送信できます。ただし、デフォルトではデプロイメント・プロシージャのこの機能は有効ではありません。電子メール通知を送信するには、スーパー管理者がEnterprise Manager内で送信メール(SMTP)サーバーを構成する必要があります。その後、管理者が、通知を受信するための電子メール・アドレスとパスワードを指定する必要があります。
電子メール通知の有効化は、次のような2段階のプロセスです。
注意:
前提条件として、Cloud Controlでメール・サーバーを構成し、電子メール・アドレスを設定しておく必要があります。
Enterprise Managerが電子メール通知を送信するには、送信メール(SMTP)サーバーを設定しておく必要があります。
注意:
権限を持つユーザーのみがSMTPサーバーを構成できます。
SMTPサーバーを設定するには、次の手順を実行します。
次の例では、ポート587のsmtp01.example.com
とポート25 (デフォルト・ポート)のsmtp02.example.com
という、2つのメール・サーバーが指定されています。1つの管理者アカウント(myadmin)が両方のサーバーで使用されます。
送信メール(SMTP)サーバー: smtp01.example.com:587
、smtp02.example.com
ユーザー名: myadmin
パスワード: ********
パスワードの確認: ********
送信者の識別: EMD Notifications
送信者の電子メール・アドレス: mgmt_rep@example.com
セキュアな接続を使用: SSL
通知スケジュールを定義する場合、通知の送信先の電子メール・アドレスを1つ以上指定します。通知用電子メール・アドレスを定義する以外に、各電子メール・アドレスで使用される通知メッセージの書式(長いまたは短い)を関連付けます。
電子メール・アドレスは128文字以内で、必要な数だけ指定できます。
電子メール・アドレスを追加する手順は、次のとおりです。
user1@example.com
やuser2@example.com
などです。通知用電子メール・アドレスを定義すると、これらのアドレスは通知スケジュールを定義する際に表示されます。たとえば、user1@example.com
、user2@example.com
、user3@example.com
です。これらの電子メール・アドレスの1つ以上を、インシデント・ルールの電子メール通知の送信先として使用するように選択できます。
Enterprise Managerインストール環境で、他のEnterprise Manager環境に適用したいプロビジョニング・バンドルをカスタマイズした場合には、次の手順を実行します。プロビジョニング・エンティティには、プロシージャ定義またはソフトウェア・ライブラリ・エンティティ、あるいはその組合せを含めることができます。
この項の内容は次のとおりです。
次のことを確認します。
カスタムしたプロビジョニング・エンティティが、ソース・サイトのシステムにあること。
ソース管理者が、カスタマイズしたプロビジョニング・エンティティにソース・サイトでアクセスできること。
ソース管理者が、プロビジョニング・エンティティのエクスポートに必要な権限を持っていること。
コピー先サイトがソース・サイトと同じように設定されており、両方に同じバージョンのEnterprise Managerがインストールされていること。
コピー先の管理者は、プロビジョニング・エンティティのインポートに必要な権限を持っています。
次の手順を実行します。
次のコマンドでPARファイルをエクスポートします。
emctl partool export -guid <procedure guid> -file <file> -displayName <name> -description <desc> -metadataOnly(optional)
プロビジョニング・エンティティをインポートする場合には、次のようにしてemctl
partoolを使用できます。
emctl partool <deploy|view> -parFile <file> -force(optional) emctl partool <deploy|view> -parFile <file> -force(optional) -ssPasswd <password> emctl partool <deploy|view> -parDir <dir> -force(optional)
あるいは、次の手順で説明するようにCloud ControlからPARファイルをインポートする方法もあります。
「エンタープライズ」メニューから「プロビジョニングとパッチ適用」を選択し、「プロシージャ・ライブラリ」を選択します。
プロシージャ・ライブラリ・ページのリストで「インポート」を選択し、「実行」をクリックします。
プロシージャ・ファイルのアップロード・ページで、次のいずれかを選択します。
ローカル・マシンからアップロード: PARファイルがローカル・マシンに格納されている場合。「参照」をクリックし、アップロードするPARファイルを選択します。「インポート」をクリックします。
管理エージェント・マシンからアップロード: PARファイルを管理エージェント・マシンに格納した場合。「ターゲット」をクリックし、ホストを選択します。「ファイルの選択」をクリックし、PARファイルを選択します。「インポート」をクリックします。
インポートしたエンティティを適用します。
基本的にディレクティブはソフトウェア・ライブラリに格納されるスクリプトです。デプロイメント・プロシージャ内のディレクティブ・ステップという特別なタイプのアクション・ステップで使用されます。ディレクティブ・ステップを追加する手順の詳細は、「ディレクティブ・ステップの追加」を参照してください。
Cloud Controlで提供されるディレクティブをカスタマイズする場合は、まず、そのディレクティブに関連付けられているPerlスクリプトのコピーを作成し、そのコピーから新しいディレクティブを作成します。次に、デプロイメント・プロシージャをカスタマイズして、この新しいディレクティブを使用するステップを変更し、デプロイメントをスケジュールします。この項の内容は次のとおりです。
デフォルト・ディレクティブを使用してカスタマイズしたディレクティブを新たに作成するには、次の手順を実行します。
Cloud Controlで、「エンタープライズ」メニューから「プロビジョニングとパッチ適用」を選択し、「ソフトウェア・ライブラリ」を選択します。
ソフトウェア・ライブラリ・ページの表で、ソフトウェア・ライブラリを展開し、そのカテゴリの下のレベルをさらに展開して、コピーするディレクティブを表示します。
たとえば、パッチ適用操作の「パッチの適用」ディレクティブをコピーする場合は、「ソフトウェア・ライブラリ」を展開してから「パッチ適用」を展開します。このレベルで、「共通」、「すべて」、最後に「汎用」を展開します。「汎用」の下にディレクティブ「パッチの適用」が表示されます。
コピーするディレクティブを選択して「類似作成」をクリックし、このディレクティブのコピーをカスタム・フォルダ「ディレクティブ」に格納します。
このカスタム・ディレクティブを選択し、「編集」をクリックします。
ディレクティブの作成ウィザードで、次の手順を実行します。
説明ページに、作成するディレクティブの説明を入力します。
構成ページで、「追加」をクリックして、コマンドライン引数がディレクティブに渡されるように指定します。Perlスクリプトを追加するため、「シェル・タイプ」は「Perl」に設定します。スクリプトがPerlでもBashでもない場合は、「スクリプトで定義」に設定します。
各エントリは1つのコマンドライン引数を表します。各引数に含まれる変数には、後で設定するもの、接頭辞および接尾辞があります。接頭辞と接尾辞のテキストが、プロパティ値の前や後に付加されて、コマンドライン引数になります。
このステップを繰り返して、すべてのコマンドライン引数を追加します。
ファイルの選択ページで「ファイルのアップロード」 を選択します。ソースの指定セクションで「ローカル・マシン」を選択し、「追加」をクリックして、変更したperlファイルを選択します。
「保存とアップロード」をクリックします。
新しいディレクティブを使用するようにデプロイメント・プロシージャをカスタマイズするには、次の手順を実行します。
Cloud Controlで、「エンタープライズ」メニューから「プロビジョニングとパッチ適用」を選択し、「プロシージャ・ライブラリ」を選択します。
プロビジョニング・ページで、この新しいディレクティブを使用するデプロイメント・プロシージャを選択して、「類似作成」をクリックします。
類似作成プロシージャ・ページで「プロシージャ・ステップ」タブを選択し、次の手順を実行します。
このデプロイメント・プロシージャ内のすべてのステップが含まれる表で、新しいディレクティブを関連付けるディレクティブ・ステップを選択し、「ステップの編集」をクリックします。
ディレクティブ・ステップの編集ウィザードで次の手順を実行します。
編集ページで「次へ」をクリックします。
ディレクティブの選択ページで「新規ディレクティブの選択」を選択します。次に、作成した新しいディレクティブを検索して選択し、「次へ」をクリックします。
プロパティのマップ・ページで、ディレクティブ・プロパティの値を指定し、「次へ」をクリックします。
確認ページで「終了」をクリックします。
「保存」をクリックします。