プライマリ・コンテンツに移動
Oracle® Enterprise Manager Cloud管理ガイド
12c リリース5 (12.1.0.5)
B70509-13
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

57 ブループリントの概要

この章では、Oracle Private Cloudのクラウド・ブループリント(この章ではブループリントと呼びます)の概要、使用方法および独自のブループリントの作成方法について説明します。内容は次のとおりです。

57.1 ブループリントの概要

ブループリントは、必要な相互に関連するクラウド・リソースのセットを記述するために使用します。建築で使用するブループリントと同様に、このブループリントでは、リソースの構築方法ではなく、リソースを相互に動作させるための構成方法など、必要な事項が記述されます。たとえば、ブループリントでは、コンポーネントを作成する順序は記述されません。これは、ブループリントの編成ロジックによって、リソース間の依存関係に基づいて決定されます。

例として、Weblogic Serverインスタンス、アプリケーション、データベースなどの相互作用するクラウド・リソースのセットを作成するとします。そのためには、まずデータベースおよびWeblogic Serverインスタンスを作成してアプリケーションをデプロイし、Weblogic Serverでデータベースへの接続に使用されるJEEデータソースを作成する必要があります。

これらの操作はすべて、Enterprise Managerのセルフ・サービス・ポータルから手動で実行できます。WebLogic Serverおよびデータベースの作成をリクエストして、両方の作成が完了するのを待機します。作成リクエストのステータスを定期的にチェックします。WebLogic Serverが作成された後、アプリケーションをデプロイできます。WebLogic Serverとデータベースの両方が作成された後、JEEデータソースを作成できます。

または、このプロセスを自動化するために、4つのクラウド・リソースを記述するブループリントを使用できます。これを行うには、ブループリントのインスタンス化をリクエストし、ブループリントで必要な入力パラメータ値を指定します。ブループリントは、リソースの作成を開始し、必要なリソースが作成されるとすぐに依存リソースが自動的に作成されるように作成プロセスを監視します。

この章の残りの部分では、既存のブループリントのデプロイ方法や独自のブループリントの記述方法など、ブループリントの概念について説明します。ブループリントの詳細は、第58章「クラウド・ブループリントおよびブループリントのリファレンス」でも参照できます。

57.2 ブループリントの使用

ブループリントは、サービス・インスタンスの作成を自動化するのに使用できます。EM_SSA_USERは、次のような様々な理由でブループリントを使用できます。

  • 複数のサービス・インスタンスおよび関連クラウド・リソースから構成される1つのアプリケーションを作成するため。

  • このようなインスタンスのセットを複数回作成するため。

  • 他のEM_SSA_USERSのためにインスタンスの作成を容易にするため。

  • インスタンスのセットを作成するのに必要な、手動でやり取りする手順を省くため

  • 他のユーザーが確認したり変更できるテキスト表現を作成するため。

要するに、ブループリントを使用すると、サービス・インスタンスのセットの作成を自動化できます。

たとえば、企業の品質保証チームは、Webアプリケーションのテストに必要なリソースを割り当てたり、解放する必要があります。Enterprise Manager Cloud Self Serviceアプリケーションを使用してサービス・インスタンスを手動で作成するかわりに、このタスクの実行にブループリントを使用できます。1人のユーザーがブループリントを作成し、これにより、すべてのQAエンジニアはブループリントを呼び出して数個の入力パラメータ値を入力するだけで済み、この作業の後、リソースが作成されます。各ユーザーは、ブループリント・プロセッサにより表示される各リソースの作成ステータスを確認できます。

簡素化および一貫性の課題への、ブループリントを使用した対処について、別の例で説明します。あるITショップには、8つの入力パラメータを受け入れる1つのサービス・テンプレートがあります。特定のユーザー・グループについて、それらの8つのパラメータのうち6つに同じ値のセットを使用する必要があります。単純なブループリントでは、2つのパラメータを受け入れ、テンプレートを使用して他の6つパラメータを矛盾なく定義してインスタンスを作成します。

57.3 Enterprise Manager Cloudの概念

この項で説明する概念は、Enterprise Manager Cloudの概念です。これらはブループリントの一部として導入されるのではなく、ブループリントによって使用される概念です。これらの概念はブループリントの基本となっているため、ここで要約します。

  • OracleクラウドAPI: OracleクラウドAPI (第45章「クラウドAPIの概要」を参照)は、IaaS、MWaaSおよびDBaaSのコンシューマに対して、Oracleのソリューション・スタックに基づいたRESTfulプログラミング・インタフェースを定義します。ブループリント・プロセッサでは、ブループリントによって指定された内容に基づいて、クラウド・リソースを作成する場合に、OracleクラウドAPIを使用します。

  • Oracleクラウド・リソース・モデル: Oracleクラウド・リソース・モデル(第46章「クラウドのリソース・モデル」を参照)には、OracleクラウドAPIを経由して操作できるリソースのタイプについて詳細に記述されており、かつ、各タイプについて、その属性と、リソース・タイプのインスタンスに対して実行できる操作の両方について、詳細に記述されています。

  • クラウド・リソースのタイプと属性: クラウド・リソース・モデルは、uri (それぞれのURI)やresource_status (READYやCREATINGなどの値を持つ)など、すべてのクラウド・リソースに共通な属性セットを指定します。このモデルは、一連のクラウド・リソース・タイプとその属性も定義します。次のリソース・タイプについては、このマニュアルで後述します。

    • DbPlatformInstance: テンプレートを使用してデータベース・プラットフォーム・インスタンスが作成されます。これには、zone (DBaaSインスタンスの場所)やparams (ユーザー名とパスワードを指定)などの属性があります。

    • JavaPlatformInstance: テンプレートを使用して、JEEサーバー・インスタンスも作成されます。DbPlatformInstanceと同様に、JavaPlatformInstanceにはzoneなどの属性があります。MWaaS固有の属性の例として、application_instance_deploymentsをあげることができ、これは、インスタンスにデプロイされるすべてアプリケーションを特定します。

    • ApplicationInstanceDeployment: JavaPlatformInstanceへのアプリケーション・デプロイメントを表すリソース・タイプです。

    • Datasource: JavaPlatformInstanceのデータソースを表すリソース・タイプです。これはJavaPlatformInstance内に含まれ、DatabaseInstanceを参照します。

  • リソースの包含: クラウド・リソースは他のリソースを含めることができます。たとえば、JavaPlatformInstanceのDatasourceは、JavaPlatformInstanceに含まれ、テンプレートにはそのテンプレートを使用して作成されたすべてのサービス・インスタンスが含まれます。

    作成するすべてのリソースは、親クラウド・リソースに含まれます。ブループリント内の各リソース定義の一環として、リソースのコンテナを特定します。

57.4 ブループリントの概念

一般的に、1つのブループリントで、作成する1つ以上のクラウド・リソースを記述します。ユーザーは、ブループリントによって記述されたリソースを作成するために、ブループリントをデプロイし、そのときに、ブループリントによって使用されるすべての入力パラメータ値を指定します。各リソースを作成するために、ブループリントによって属性値が指定されますが、これらの属性値は、ハードコーディングされるか、ブループリントの入力パラメータから提供されるか、または他のリソースから収集されます。すべてのリソースをインスタンス化するときに、ブループリント・システムによって、リソースの依存関係が判別され、ブループリントで記述されているインスタンスを正しく作成するために必要な、リソースの作成または構成(またはその両方)の順序が、これを使用して決定されます。

  • 入力パラメータ: ブループリントでは、入力パラメータを定義できます。各パラメータ定義では、名前、データ型およびデフォルト値などのオプション仕様を指定します。ブループリントをデプロイするユーザーは、デフォルト値を持たないすべてのパラメータの値を指定する必要があります。

  • リソース: ブループリントのリソースにより、クラウド・リソースの構成方法が定義されます。リソースによって、一連の属性および新規に作成されたリソースが含まれる親クラウド・リソースが指定されます。ブループリント内の各リソースには、ブループリント内で一意の名前を付ける必要があります。

  • 出力: 出力が指定されると、ブループリントのデプロイメントの完了時に、指定された値が表示されます。出力パラメータを使用して、JEEアプリケーション・デプロイメントのURLをエンド・ユーザーに通知するなどの目的で、デプロイメント時に派生した情報を表示できます。

  • 固有関数: ブループリント言語には、事前定義済の一連の関数(後で説明)が含まれます。

  • 名前付きリテラル: プログラミングの便宜上、ブループリントにはDataセクションを含めることができます。これは、一般的にリテラル値のシンボリック名を指定するために使用されます。

  • 依存関係: ブループリントのデプロイメントは、可能な場合は複数のリソースを同時に作成して行われますが、他のリソースに依存するリソースは、依存先のリソースが作成されるまで作成できません。このような依存関係は暗黙的な場合が多いですが、ブループリントの処理により依存関係が特定され、全体的な手順が編成されます。

57.5 ブループリントのデプロイ

前提条件:

  • ブループリント・ファイルがあること。

  • ブループリント・プロセッサ・ソフトウェアがインストールされていること。

ブループリント・ファイルは、作成者がブループリント言語を使用して必要なものを記述しているテキスト・ファイルです。ブループリント・プロセッサを実行してブループリントをデプロイします。たとえば、Windowsでは次のようなコマンドを使用します。

bp_processor.py myfile.yml -u myname –c https://myhost/em/cloud

この例では、–uオプションでEnterprise ManagerユーザーIDを指定します。ここでパスワードを指定しないと、ブループリント・ファイルの実行時に要求されます。–cオプションは、クラウドURLの指定に使用します。コマンドライン・オプションは、この他にも多数あります。サポートされるオプションの説明を表示するには、次のように入力します

bp_processor.py deploy -h

57.6 ブループリントのデプロイメント処理

ブループリントをデプロイする場合、実行時ロジックで入力パラメータを処理し、リソースの作成を編成します。可能な場合は、これを並列して実行します。また、進捗を監視して、ユーザーに逐次通知します。表示される出力は、ブループリントおよび環境によって異なります。次の例では、Weblogic Server、アプリケーション、データベースおよびJEEデータソースをデプロイするブループリントを使用しています。このブループリントの実行による出力から、ブループリント処理の手順がわかります。

C:\Users\myname\Dropbox\Code\blueprints>bp_processor.py xyzApp.yml -c
https://... -g deployment_report
...
Cloud user id: ssa_user1
Password:

上で入力したコマンドでは、クラウドURL (-cオプションを使用)およびオプションのデプロイメント・レポートの格納先ディレクトリ(-gオプションを使用)を指定しています。その後、処理の続行を求められたのに従い、資格証明を入力しました。

Blueprint Processor - Invocation Summary
----------------------------------------
   Cloud URI:                https://...
   User:                     ssa_user1
   Blueprint file:           xyzApp.yml
   Timeout:                  90 minutes, 0 seconds
   Refresh frequency:        15 seconds
   Inputs:
   Pause points:             (none)
   Debug logging:            False
   Instance name:            default_instance_name
   Graphical report dir:     deployment_report
   Versions:
      Blueprint processor:   12.1.0.5, 10-Oct-2012
      Cloud protocol:        10001

14:24:59  INFO: Connecting to cloud: https://....

注意: 対応しているオプションを指定していないため、起動サマリーのほとんどの情報には使用されているデフォルト値が反映されています。

使用しているブループリントで入力パラメータを定義しているため、値の指定を要求されます。

Input Parameter Value Entry
---------------------------
   Zone to use for db (Zone1):
   Password to use for db (welcome1):

この例では、[Enter]を押してゾーンZone1のデフォルト値を受け入れた後、パスワードを入力しました。

必要な情報をすべて指定すると、ブループリント・プロセッサによってリソースの作成および進捗の監視が開始されます。これは、"縦タイムライン"で表されるため、進捗を確認できます。作成される各リソースは、1つの列で表されます。各リソースの状態遷移が発生するにつれて、縦タイムラインの対応する列に表されます。

最初に、すべての可能な状態のリストが短縮形とともに出力されます。状態には、処理フェーズおよび各フェーズの結果が反映されます。

14:25:03  INFO:
14:25:03  INFO: Resource State Timeline
14:25:03  INFO: -----------------------
14:25:03  INFO:   State Key:
14:25:03  INFO:      e : Evaluating
14:25:03  INFO:      ep: Evaluation pending. (See right side for pendee)
14:25:03  INFO:      es: Evaluation succeeded, creation requested
14:25:03  INFO:      EF: Evaluation failed
14:25:03  INFO:      c : Creating
14:25:03  INFO:      CF: Creation failed
14:25:03  INFO:      CS: Creation succeeded. State = READY
14:25:03  INFO:

リソース定義を処理する最初のステップは、リソースを記述する定義の式を評価することです(状態キー: e)。場合によっては、表を遅延させる必要があります(状態キー: ep)。すべての評価が完了すると、作成リクエストが作成され(状態キー: c)、そのリソースの処理は正常に完了します(状態キー: CS)。状態キーが出力された後に、リソース作成タイムラインが表示されます。

14:25:03  INFO:              MyApp
14:25:03  INFO:             /
14:25:03  INFO:            /    MyDB
14:25:03  INFO:           /    /
14:25:03  INFO:          /    /    MyDS
14:25:03  INFO:         /    /    /
14:25:03  INFO:        /    /    /    MyWebServer
14:25:03  INFO:       /    /    /    /
14:25:03  INFO:   ---------------------
14:25:03  INFO:   |    |    |    | e  |
14:25:04  INFO:   |    |    |    | es |
14:25:10  INFO:   |    |    |    | c  |
14:25:10  INFO:   |    | e  |    | .  |
14:25:12  INFO:   |    | es |    | .  |
14:25:17  INFO:   |    | c  |    | .  |
14:25:17  INFO:   |    | .  | e  | .  |
14:25:17  INFO:   |    | .  | ep | .  | Awaiting creation of MyWebServer
14:25:17  INFO:   | e  | .  |    | .  |
14:25:17  INFO:   | ep | .  |    | .  | Awaiting creation of MyWebServer
14:25:33  INFO:   |    | .  |    | .  |
14:25:50  INFO:   |    | .  |    | .  |
.....
14:41:18  INFO:   |    | .  |    | .  |
14:41:33  INFO:   |    | .  |    | CS |
14:41:33  INFO:   |    | .  |    |====|
14:41:44  INFO:   |    | .  | ep |    | Awaiting creation of MyDB
14:41:57  INFO:   | es | .  |    |    |
14:42:00  INFO:   | c  | .  |    |    |
14:42:17  INFO:   | .  | .  |    |    |
....
14:44:44  INFO:   | .  | .  |    |    |
14:45:16  INFO:   | CS | .  |    |    |
14:45:16  INFO:   |====| .  |    |    |
14:45:32  INFO:   |    | .  |    |    |
14:45:47  INFO:   |    | .  |    |    |
14:54:17  INFO:   |    | .  |    |    |
14:54:17  INFO:   |    | CS |    |    |
14:54:17  INFO:   |    |====|    |    |
14:54:18  INFO:   |    |    | es |    |
14:54:19  INFO:   |    |    | c  |    |
14:54:33  INFO:   |    |    | CS |    |
14:54:33  INFO:   |    |    |====|    |
14:54:33  INFO:   ---------------------
14:54:33  INFO:
14:54:33  INFO:

タイムラインが縦に表示され、4つリソースはMyApp、MyDB、MyDS、およびMyWebServerであることがわかります。

MyWebServerリソース定義が最初に評価されます(状態キー: e)。この評価に成功すると、作成プロセスが開始されます(状態キー: c)。並行して、MyDBリソースが評価され、作成プロセスが起動されます。次に、MyDSリソースが評価され、ブループリント・プロセッサによってMyWebServerリソースが作成されるまで評価を完了できないと判断されます。同じプロセスがMyAppリソースにも当てはまります。MyDBおよびMyWebServerリソースが正常に作成されると(状態キー: CS)、MyAppおよびMyDSリソースの作成プロセスを続行できます。

次に、このブループリント例の出力セクションが処理されます。

14:54:33  INFO: Output Processing
14:54:33  INFO: -----------------
14:54:33  INFO:
14:54:33  INFO: Output values specified: 1
14:54:49  INFO:    Value of URL: {u'ms_1': u'http://...} 
14:54:49  INFO:

前述の例では、ブループリントで"URL"という1つの出力値を指定し、値はhttps://…で表されています。

すべてのリソースが正常に作成されると、ブループリント・プロセッサによって結果が要約されます。これには、リクエストされた各リソースの処理サマリーの他、各リソースおよび実行全体の時間情報が含まれます。

14:54:49  INFO: Blueprint Processing Summary
14:54:49  INFO: ----------------------------
14:54:49  INFO:
14:54:49  INFO: Resource State Summary:
14:54:49  INFO:    MyWebServer: READY
14:54:49  INFO:      URI: /em/cloud/jaas/javaplatforminstancerequest/163
14:54:49  INFO:      Cloud resource state: READY
14:54:49  INFO:      Timing info:
14:54:49  INFO:        Creation start:     14:25:04
14:54:49  INFO:        Creation end:       14:41:33
14:54:49  INFO:        Duration:           16 minutes, 29.6 seconds
14:54:49  INFO:    MyDB: READY
14:54:49  INFO:      URI: /em/cloud/dbaas/dbplatforminstance/byrequest/164
14:54:49  INFO:      Cloud resource state: READY
14:54:49  INFO:      Timing info:
14:54:49  INFO:        Creation start:     14:25:12
14:54:49  INFO:        Creation end:       14:54:17
14:54:49  INFO:        Duration:           29 minutes, 5.7 seconds
14:54:49  INFO:    MyDS: READY
14:54:49  INFO:      URI: /em/cloud/jaas/datasourcerequest/QA_app_DS@201
14:54:49  INFO:      Cloud resource state: READY
14:54:49  INFO:      Timing info:
14:54:49  INFO:        Creation start:     14:54:18
14:54:49  INFO:        Creation end:       14:54:33
14:54:49  INFO:        Duration:           0 minutes, 15.3 seconds
14:54:49  INFO:    MyApp: READY
14:54:49  INFO:      URI: 
/em/cloud/jaas/applicationinstancedeploymentrequest/myApp@181
14:54:49  INFO:       Cloud resource state: READY
14:54:49  INFO:       Timing info:
14:54:49  INFO:         Creation start:     14:41:57
14:54:49  INFO:         Creation end:       14:45:16
14:54:49  INFO:         Duration:           3 minutes, 18.9 seconds
14:54:49  INFO:
14:54:49  INFO: Timing Summary (seconds):
14:54:49  INFO:    Client-side CPU time: 0 minutes, 6.474 seconds
14:54:49  INFO:    Elapsed time:
14:54:49  INFO:       Processing time:    29 minutes, 58.0 seconds
14:54:49  INFO:       Paused time:        0 minutes, 1.9 seconds
14:54:49  INFO:       Total elapsed time: 29 minutes, 59.9 seconds
14:54:49  INFO:
14:54:49  INFO: Graphical Report Generation
14:54:49  INFO: -------------------------------
14:54:49  INFO:
14:55:37  INFO: Graphical report generated: deployment_report/bp_report.html

C:\Users\myname\Dropbox\Code\blueprints>

57.7 ブループリントの例

この項では、より複雑なブループリントの例を順を追って示すことによって、ブループリント概念の使用および構文について説明します。ブループリントを作成する計画がない場合は、この項をスキップできます。

57.7.1 ブループリントの構造と基本

クラウド・ブループリントでは、一連の必要なクラウド・リソースを指定し、テキスト・ファイルによってこれらのリソースを表現します。ブループリントでは、判読が簡単なデータ構造テキストの標準であるYAMLを使用しています。

YAMLは、XMLやJSONと同様に、標準的な表記法です。JSONと同様に、YAMLは、リスト、ディクショナリおよびネストによる情報の表現に使用されます。これらの概念は、すべてのブループリント・セマンティックを取り込むのに十分です。

57.7.1.1 単純なブループリント

ブループリントは、複数のセクションを含んだドキュメントと考えることができます。最も単純で実用的なブループリントでは、Resourcesセクションと1つのリソースのみを指定します。この例では、リソースはテンプレートにより定義されるデータベースです。

Resources
  MyDB:
   Type: application/oracle.com.cloud.common.DbPlatformInstance+json
   Container: ...  (refers to db template)
   Properties: ... (provides properties of db)

前述のブループリントでは、MyDBという名前のブループリント・リソースを定義しています。Typeエントリでは、クラウド・リソース・モデルAPIで定義されている、データベースのメディア・タイプを指定しています。Containerエントリでは、新規に作成されたオブジェクトが含まれる親クラウド・リソースを定義しています。(第46章「クラウドのリソース・モデル」でも説明していますが、すべてのクラウド・リソースはこれらのリソースを既存のコンテナに追加することで作成されます)。これはデータベース・サービス・インスタンスであるため、サービスを作成するために使用されるデータベース・テンプレートを介して作成されます。コンテナの指定方法については後述するため、ここでは省略形を使用しています。同様に、このテンプレートで必要とされるデータは、後述するPropertiesエントリで指定されます。次に、Inputsセクションを追加します。

Inputs:
  DbZone:
    Type: String
    DefaultValue: Zone1
    Prompt: Zone to use for db
  DbPassword:
    Type: String
    DefaultValue: welcome1
    Prompt: Password to use for db
    Sensitive: True
Resources:
  MyDB:
    Container: ...
    Properties: ...

ユーザーがこのブループリントのデプロイメントをリクエストするときは、DbZoneパラメータの値を指定するか、ブループリントで指定されているデフォルト(Zone1)を使用します。ユーザーが指定した入力パラメータ値は、ブループリントの他の部分でも使用でき、特に、リソースの作成に必要な属性値を提供するために使用できます。詳細については後述します。

57.7.1.2 単純なリソース: データベース・サービス・インスタンス

ブループリントでは、作成するクラウド・リソースを記述するために、ブループリント・リソースを使用します。各ブループリント・リソースについて、クラウド・リソース・モデルで必要とされる情報が提供されます。

次のブループリントでは、データベース・サービス・インスタンスを作成するための単一のリソースを指定しています。

  MyDB:
    Type: application/oracle.com.cloud.common.DbPlatformInstance+json
    Container: ...
    Properties:
      zone: ...
      name: jbName
      params: 
        username: app_user
        password: change_me

ブループリント内の各リソース定義では、名前、リソースの追加先コンテナおよび作成対象の特性を指定するために使用するプロパティが指定されています。この場合は、次のようになります。

  • ブループリント・リソース定義の名前はMyDBです。この名前は、ブループリント全体で使用され、たとえば、ブループリントをデプロイしているユーザーに各リソースの進捗を通知する場合に使用されます。より複雑な場合においては、この名前はブループリント内の他の場所で参照できます。

  • Containerエントリでは、新規リソースの追加先となるコンテナのURIが指定されています。データベース・サービス・インスタンスを作成するには、必要なデータベースの種類に対応するサービス・テンプレートを特定します。(この方法は、固有関数のトピックについて説明するときに示します。)

  • Propertiesエントリでは、リソースの作成に必要な値が指定されています。この場合、モデルにはzone、nameおよびparamsプロパティの指定が必要です。これらは、インスタンスを作成するゾーン、名前および選択されたテンプレートで必要な名前/値のペアを指定します。

57.7.1.3 固有関数

データに基づいて動作するために、ブループリントでは、固有関数の使用がサポートされています。f_で始まる名前のすべての関数は、引数のリストを使用して呼び出されます。前述の例を引き続き使用すると、2つの固有関数を使用して、必要なコンテナおよび必要なゾーンのURIを返します。

Resources:
  MyDB:
    Type: application/oracle.com.cloud.common.DbPlatformInstance+json
    Container: 
      f_getTemplateURI:
        - Small Database Service Template_automation_VIMAL_si
        - dbaas
    Properties:
      zone: 
        f_getZoneURI: ...
      name: jbName
      params: 
        username: app_user
        password: ...

示されているとおり、f_getTemplateURI関数では、テンプレートの名前とサービス・タイプの2つの引数を使用します。現在サポートされているサービス・タイプは、dbaas、jaasおよびiaas (Database-、Java-、およびInfrastructure-as-a-Service)です。f_getZoneURIf_getTemplateURIと類似していますが、対象はゾーンです。その他の固有関数については後で説明します。関数の完全セットは、第58章「クラウド・ブループリントおよびブループリントのリファレンス」で説明しています。

57.7.1.4 パラメータを使用する単純なリソース

前述のブループリントの例に対して、ここで2つのパラメータを追加して使用します。このようにすることによって、ブループリントをデプロイするユーザーは、使用するゾーンとパスワードを指定できます。

Inputs:
  DbZone:
    Type: String
    DefaultValue: Zone1
    Prompt: Zone to use for db
  DbPassword:
    Type: String
    DefaultValue: welcome1
    Prompt: Password to use for db
    Sensitive: True
Resources:
  MyDB:
    Type: application/oracle.com.cloud.common.DbPlatformInstance+json
    Container: 
      f_getTemplateURI:
        - Simple DB Template
        - dbaas
    Properties:
      zone: 
        f_getZoneURI:
          - f_path:
            - "Inputs.DbZone.Value"
          - dbaas
      params: 
        username: app_user
        password: 
          f_path: 
           - 'Inputs.Password.Value'

Inputsセクションでは、2つの入力パラメータを定義し、パラメータの値は、f_path固有関数を経由してアクセスされます。f_path関数は、パス式の評価に使用され、ブループリント内の任意のデータや、アクセス権がある任意のクラウド・リソース・データにアクセスします。この例では、パス式はネストされた属性にアクセスするために単にドット演算子を使用しており、初めにブループリントのInputs属性(Inputsセクション)にアクセスし、その中からUserId属性にアクセスし、その中からValue属性にアクセスしています。

57.7.1.5 Dataセクション(名前付きリテラル)

ブループリントによって複数のデータベースが作成され、ユーザーにユーザー名とパスワードの入力を要求しないようにするとします。さらに、後でパスワードを変更しやすいようにブループリントをコーディングします。手続き型言語では、意図を文書化するために名前付きリテラルを使用し、コードの先頭でこれを変更できるようにします。ブループリント内では、Dataセクションを使用してこれを実現しています。

Data:  
 QADBCreds:    
  user: sysman    
  password: sysman 
Resources:
  MyDB1:
    Type: application/oracle.com.cloud.common.DbPlatformInstance+json
    Container: 
      f_getTemplateURI:
        - Small Database Service Template_automation_VIMAL_si
        - dbaas
    Properties:
      zone: 
        f_getZoneURI:
          - f_path:
            - "Inputs.DbZone.Value"
          - dbaas
      params: 
        username: 
          f_path:
           - ”Data.QADBCreds.user”
         password: 
          f_path:
           - ”Data.QADBCreds.password”
      name: jbName

  MyDB2:
    Container: 
    ...

前述の例では、Dataセクションが、前に示したInputsと同じ方法で、path関数を経由してトラバースできるYAML構造になっていることがわかります。

57.7.2 すべてを集約: 複数の独立リソース

次のより複雑な例では、これを使用したデータベースおよびアプリケーションの作成方法を示します。これを行うには、ブループリントで次の4つのクラウド・リソースを指定します。

  • データベース・サービス・インスタンス

  • Javaサービス・インスタンス

  • Javaサービス・インスタンスのデータソース

  • Javaサービス・インスタンスのアプリケーション

新しい構成メンバーは下記で強調表示されています。

Inputs:
  DbZone:
    Type: String
    DefaultValue: Zone1
    Prompt: Zone to use for db
  DbPassword:
    Type: String
    DefaultValue: welcome1
    Prompt: Password to use for db
    Sensitive: True
Macros:
  # Return a name with unique (date-time) suffix  
  # The one argument is a 'name' string  
  f_myDescriptiveName:    
    - 1    
    - f_concat:
      - arg_1      
      - '_'      
      - f_path:
      - f_path:
        - 'Info.time_suffix'
Resources:
  MyDB:
    Type: application/oracle.com.cloud.common.DbPlatformInstance+json
    Container: 
      f_getTemplateURI:
        - Small Database Service Template_automation_VIMAL_si
        - dbaas
    Properties:
      zone: 
        f_getZoneURI:
          - f_path:
            - "Inputs.DbZone.Value"
          - dbaas
      params: 
        username: app_user
        password: 
          f_path:
            - "Inputs.DbPassword.Value"
      name: jbName
  MyWebServer:
    Container: 
      f_getTemplateURI:
        - PS4_LowHeapTemplate
        - jaas
    Properties:
      name: 
        f_myDescriptiveName:
          - jb_pf 
      zone:
        f_getZoneURI:
        - Zone1
        - jaas
  MyDS:
    Type: application/oracle.com.cloud.jaas.DataSource
    Container: 
      f_getResourceURI:
        - MyWebServer
    Properties:
      name: QA_app_DS
      jndi_name:
        - jndi_1
        - jndi_2
      jdbc_driver: oracle.jdbc.OracleDriver
      database_type: Oracle
      database_connect_string: 
         f_concat:
          - 'jdbc:oracle:thin:@'
          - f_getResourceAttr:
            - MyDB
            - connect_string
      username: app_user
      password:
          f_path:
           - "Inputs.DbPassword.Value"
  MyApp:
    Type: application/oracle.com.cloud.jaas.ApplicationInstanceDeployment
    Container: 
      f_getResourceURI:
        - MyWebServer
    Properties:
      application_instance_component:
        f_getAppCompURI:
          - jbcomponent
          - SSA_USER1
          - 
      name: myApp
Outputs:
  URL:
    Description: URL of the deployed app
    Value:
      f_getResourceAttr:
        - MyApp
        - http_application_invocation_url

57.7.2.1 マクロ・セクション

繰り返し実行する構成メンバーの順序がある場合、マクロ展開を使用してブループリントの可読性を改善できます。マクロを使用すると、ロジックをカプセル化することも可能であり、たとえば、1つの場所でロジックを変更して、それを参照するすべてのコードに影響を及ぼすことができます。このブループリントの例では、f_myDescriptiveNameというマクロを定義しています。このマクロでは1つの文字列パラメータを使用し、_ (アンダースコア)と現在時刻の文字列表現を付加します。

57.7.2.2 作成されたリソースの属性(依存関係)

この例では、主要な新機能として、作成されたリソースの属性を参照できることを示しています。たとえば、データソースのクラウド・リソース・モデルでは、その値がデータソースの作成に必要なdatabase_connect_string属性が定義されます。この文字列の内容はデータベースが作成されるまで取得できないため、ブループリントの作成者はこの内容を事前に知ることができないことは明らかです。かわりに、ブループリントの作成者は、固有関数を使用して新しく作成されたデータベースの必要なプロパティを参照します。(各DatabasePlatformInstanceは、connect_stringプロパティを公開します。)これを行うために、データソースでは、f_getResourceAttr固有関数を経由して、JDBCConnectStringの値を指定します。

  MyDS:
    ...
    Properties:
       ...
      database_connect_string: 
         f_concat:
          - 'jdbc:oracle:thin:@'
          - f_getResourceAttr:
            - MyDB
            - connect_string

この場合、f_getResourceAttr関数は、MyDBリソースが作成されるのを待機し、MyDBリソースのconnect_stringプロパティの値を返します。同様に、データソースの作成を完了するためには、最初に作成されたJavaPlatformInstanceにこのデータソースを追加する必要があるため、JavaPlatformInstanceのURIを参照する必要があります。

MyDS:
    ...
    Container: 
      f_getResourceURI:
        - MyWebServer

この場合、f_getResourceURI関数は、MyWebServerリソースが作成されるのを待って、そのURIを返します。(データソースをMyWebServerに追加するのに加え、ApplicationInstanceDeploymentも追加する必要があるため、両方に同じ手法が使用されます。)

注意: f_path関数を使用しても同じ効果を実現できますが、f_getResourceAttrでは、リソースの作成が成功し、そのステータスがREADYになるのを待って、その属性の取得を試みます。

一般的には、ブループリントのリソースは別のリソースを参照でき、ブループリントの編成はこのような依存関係を構成し、可能な場合はリソースが並行して作成されます。

57.7.3 ブループリント処理の視覚的表現

ブループリント・プロセッサは、ブループリントのグラフィック表示が含まれるHTMLレポートも生成できます。これは、ブループリントの全体構造とブループリント・エンティティの関係を理解するのに役立ちます。また、レポートには、ブループリントのデプロイ結果を含めることができます。

次のサンプル・レポートは、第57.6項「ブループリントのデプロイメント処理」で説明したブループリントの例に対するものです。レポートの最初の部分に、実行のサマリーが表示されます。

図57-1 ブループリント・レポートのタイトル

ブループリント・レポートのタイトル

次のグラフィック表示では、2つのタイプの矢印が使用されています。1つは、包含を表します。たとえば、WebLogic Server内へのデータソースの包含などです。もう1つは、ブループリントの要素間でデータがどのように使用されるかを表します。ブループリント・デプロイメントが成功すると、すべてのリソースのステータスはREADY(緑)になり、リソースをクリックできます。これは、別のレポート・セクションにリンクしており、作成時の属性の値を確認できます。

図57-2 ブループリントのグラフィック表示

ブループリントのグラフィック表示

この後に、グラフィック表記規則を説明する凡例が表示されます。

図57-3 ブループリントの凡例

ブループリントの凡例

最後に、作成された各リソースのサマリーが表示されます。(グラフィック表示のリソース定義をクリックすると、選択したリソースのリソース・サマリーが直接表示されます。)

図57-4 ブループリントによって作成されたクラウド・リソース - I

ブループリントによって作成されたクラウド・リソース

図57-5 ブループリントによって作成されたクラウド・リソース - II

ブループリントによって作成されたクラウド・リソース - II

57.8 結び

これで、クラウド・ブループリントの紹介は終わりです。次の機能を含む多くの機能は、第58章「クラウド・ブループリントおよびブループリントのリファレンス」でのみ説明しています。

  • ブループリント・マクロ。クラウドおよびブループリントの参照用パス式。ブレークポイントの設定およびブループリントのデバッグ。ヒント、アドバイスおよびよくある質問。