...

Plugin Development Kit (PDK) & IWD PureAS based Deployment with

by user

on
Category: Documents
19

views

Report

Comments

Transcript

Plugin Development Kit (PDK) & IWD PureAS based Deployment with
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Plugin Development Kit (PDK)
Jul. 30, 2012
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
おことわり
ƒ この資料は日本アイ・ビー・エム株式会社ならびに
日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを
受けておりません。
ƒ 当資料は、資料内で説明されている製品の仕様を保証するものではありません。
ƒ 資料の内容には正確を期するよう注意しておりますが、この資料の内容は2012
年7月現在の情報であり、製品の新しいリリース、PTFなどによって動作、仕様が
変わる可能性があるのでご注意下さい。
ƒ 今後国内で提供されるリリース情報は、対応する発表レターなどでご確認くださ
い。
1
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
目次
1. Plugin Development Kit (PDK)概要
2. Plugin Development Kit (PDK)を利用するために
~パターンのデプロイの仕組み~
3. Plugin Development Kit (PDK)で行うパターン作成の流れ
4. まとめ
2
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
1. Plugin Development Kit (PDK)概要
3
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターン
ƒ アプリケーションの特性に着目したパターン・モデル
– アプリケーションのグランド・デザインと非機能要件から直接システムに落とすモデル
– 標準化を徹底、必要最小限の設定のみ変更を許す
– 必要なトポロジー構成要素はプロビジョニング実施者に意識させない
ƒ アプリケーション開発者が容易にアプリケーション実行環境を構築・利用可能
□ アプリケーション機能要件
・データ定義
・ユーザー・レジストリ
・外部コネクタ情報 など
□非機能要件
ミドルウェア構成を意識させず
使用可能
・キャッシング
・冗長性
・目標応答時間 など
DB
APサーバー
Proxy
APサーバー
データベース
Proxy
EARアプリケーション
ユーザー
レジストリー
アプリケーション開発者など
4
LDAP
APサーバー
Cache
Cache
実際のミドルウェア構成は
管理者が把握
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
担当者により変わるパターンの姿
パターン・ユーザー視点
パターン・プロバイダー視点
(IBM, ISV, etc.. )
運用管理者視点
パターンは実際にはプラグインと
呼ばれる単位の組み合わせで構成
5
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
パターンの実態: プラグイン / パターン・タイプ
パターン・タイプ
– 特定のワークロード向けにグループ化
された、プラグインの論理セット
DB2
DB接続
プラグイン
– コンポーネント、ポリシー、
リンクのインプリメンテーションの実体
WAS
LDAP接続
必要なプラグインのみを
組み合わせて使用
ソリューションをプラグインの組み合わせ
の形で標準化・自動化し、ユーザーに
提供
パターン・プロバイダー(IBM / ISV)
6
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
例 ) Webアプリケーション・パターンに含まれるプラグイン
アプリ実行環境(WAS)
の導入と構成・管理
既存のDB2への接続
既存のOracle DBへの接続
アプリケーションの稼動に必要
な機能要件をプラグインの単位
で細かく実装
既存のWMQへの接続
7
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
例) プラグインの全体構造 (WAS プラグイン)
アプリケーション・モデルの定義
□ プラグイン・モデル情報(metadata.json)
OS拡張 / ミドルウェアの導入と構成
□ ノード・パート
□ パート
□ ロール
モデルからトポロジーへの変換定義
□ カーネル・サービス
□ VM(Velocity Macro)テンプレート
プラグイン・パッケージの定義
□ プラグイン構成情報(config.json)
8
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインを開発するモチベーション
パターンでのプロビジョニング範囲
DB
APサーバー
New!!
監視サーバー
パターン・ユーザー
1
既存パターンで使用できる
コンポーネントを追加したい
運用管理者
2
配布したシステムを企業内の
監視機構に組み込みたい
パターン化
MW B
MW A
導入・設定
スクリプト 導入する
ミドルウェア
DB接続の分離レベルの変更 など
運用管理者
3
9
ミドルウェア設定の企業内標準
をパターンに反映させたい
MW C
パターン・プロバイダー(IBM / ISV)
4
ソリューションをパターンの形
で標準化・自動化し、展開したい
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインを支える技術要素
ƒ Java
– アプリケーション・モデルから実際のトポロジーを決定する変換ステップの定
義に必要
– 主にJSON ArrayやJSONオブジェクトの生成・変換をコーディング
– OSGiについても理解が必要
ƒ Apache Velocity
– オープンソースのJavaベースの汎用テンプレートエンジン
ƒ Python
– 実際にミドルウェアを導入・設定するためのスクリプトの作成のために必要
これらのスキルセットを開発に必要とします
でも実際にどういう手順で作成する?
10
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
(参考) Apache Velocity
ƒ オープンソースのJavaベースの汎用テンプレートエンジン
– 雛形となる文書のテンプレートとプログラムで変更する部分を別々に扱い、動的に文書を生成
ƒ パターン・モデルから具体的なトポロジーにレンダリングする際に使用される
– CPU数、メモリー、ディスクサイズ、導入が必要なミドルウェアのリストと構成パラメータなど
私は$name です。
CPUは$coreコアで、
メモリーは$memMB
必要です。
$name = “APサーバー”
$core = “2”
$mem = “2000”
VMファイル(テンプレート)
私はAPサーバーです。
CPUは2 コアで、メモリーは
2000 MB必要です。
Velocityコンテキスト1
結果ファイル1
$name = “データベース”
$core = “4”
$mem = “8000”
Velocityコンテキスト2
私はデータベースです。
テンプレートエンジン
CPUは4 コアで、メモリーは
8000 MB必要です。
結果ファイル2
11
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Plugin Development Kit (PDK)
ƒ パターン・プロバイダー向けの仮想アプリケーション・パターン開発ツール
– プラグインおよびパターン・タイプの作成・編集を支援・容易化
パターンタイプの追加
既存パターン
プラグインの追加
新規パターン
パターン・プロバイダー(IBM / ISV)
・新規にパターンを作成したい
・既存のパターンの機能を拡張したい
ストアハウス
12
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Plugin Development Kitの利用
ƒ 「pdk-<バージョン>.zip」の形でPDKが提供
– IWDからのダウンロード
– developerWorksからのダウンロード
ƒ 以下の条件を満たすWindows / Linux環境で利用可能
– JDK 1.6 (32-bit) (必須)
– Apache Ant 1.7+ (必須)
– メッセージ・フォーマット・ツール(オプション)
PC1台で開発可能
• msgfmt (Linux)、msgfmt.exe (Windows)など
– wget (.cmd) (オプション)
ƒ PDKには2通りの利用形態がある
– Antコマンドを利用する、コマンドラインでの利用
– Eclipseフレームワークに組み込んでの利用 (PDKバージョン1.0.0.3以降)
• Eclipse V3.6.2 (32-bit) 以上、Java Enterprise Edition (JEE)を推奨
• Pythonスクリプト開発のため、PyDevなども必要があれば導入
13
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
PDKでできること
ƒ PDK単体では以下を実施可能
– プラグイン・プロジェクトの作成
• プラグインのスケルトンの生成
– プラグインのビルド
– パターン・タイプのビルド
スケルトンの生成やエラーチェック
などを支援
ƒ Eclipseフレームワークと連携する場合、以下も追加で実施可能
– パート/ノード・パートのスケルトンの生成
– ロール(管理エンティティー)のスケルトンの生成
• 依存関係を持つロールのスケルトンも生成可能
– OSGiサービス・コンポーネントの生成支援
• カーネル・サービスのトランスフォーマー作成の際に利用
– プラグイン・モデル情報(metadata.json)の構文チェック・要約
– プラグイン構成ドキュメント(config.json)の構文チェック・要約
ƒ RADであればさらに以下も実施可能
ノード・パート
パート
– 作成したプラグインのアップロード・削除
• Workload Deployerインスタンスの事前定義が必要
ƒ デバッグ用プラグインを提供
– デバッグ・プラグイン
– アンロック・プラグイン
14
ロール
Eclipse利用の場合
視覚的な支援も提供
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
2. Plugin Development Kit (PDK)を利用するために
~パターンのデプロイの仕組み~
15
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターンのデプロイまで流れ
アプリケーション
定義ドキュメント
(appmodel.json)
KS*: カーネル・サービス
KS*による
トポロジー変換
トポロジー・ドキュメント
(topology.json)
デプロイメント・ドキュメント
(deployment.json)
デプロイ
開発対象
プラグイン・モデル情報
(metadata.json)
VMテンプレート
KSの拡張クラス
プラグイン構成情報
パート
パート
パート
ノード・パート
ノード・パート
ノード・パート
(config.json)
パターン作成
OS
イメージ
パターンのデプロイ
デプロイメント
ドキュメント
に沿って展開
16
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターンのデプロイまで流れ
アプリケーション
定義ドキュメント
(appmodel.json)
KS*: カーネル・サービス
KS*による
トポロジー変換
トポロジー・ドキュメント
(topology.json)
デプロイメント・ドキュメント
(deployment.json)
デプロイ
開発対象
プラグイン・モデル情報
(metadata.json)
VMテンプレート
KSの拡張クラス
プラグイン構成情報
パート
パート
パート
ノード・パート
ノード・パート
ノード・パート
(config.json)
パターン作成
OS
イメージ
パターンのデプロイ
デプロイメント
ドキュメント
に沿って展開
17
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグイン・モデル情報 (metadata.json)
ƒ プラグインの種類と属性を規定するJSONドキュメント
例: コンポーネントのmetadata.json “type”でプラグインの種類を記述
[{
"id":"WAR", "type":"component",
"thumbnail":"appmodel¥/images¥/thumbnail¥/WebApp.png",
"category":"application"
"label":"WAR_LABEL",
"attributes":[{
"extensions“:["war"],
"label":"WAR_ARCHIVE_LABEL",
"type":"file", "scannable":true, "id":"archive",
"description":"WAR_ARCHIVE_DESCRIPTION",
"required":true},
{
"label":"CTX_ROOT_LABEL",
"regExp":"[-¥/¥¥w]*",
"type":"string", "id":"ctx_root",
"description":"CTX_ROOT_DESCRIPTION",
"required":false},
・・・},
]
“attributes”でユーザー入力部分を定義
18
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターンのデプロイまで流れ
アプリケーション
定義ドキュメント
(appmodel.json)
KS*: カーネル・サービス
KS*による
トポロジー変換
トポロジー・ドキュメント
(topology.json)
デプロイメント・ドキュメント
(deployment.json)
デプロイ
開発対象
プラグイン・モデル情報
(metadata.json)
VMテンプレート
KSの拡張クラス
プラグイン構成情報
パート
パート
パート
ノード・パート
ノード・パート
ノード・パート
(config.json)
パターン作成
OS
イメージ
パターンのデプロイ
デプロイメント
ドキュメント
に沿って展開
19
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
トポロジー変換(カーネル・サービスによる変換)
デプロイメント・ステップ(DS)
appmodel.json
V
transform
*.vm
トポロジー断片
merge
未解決トポロジー
重要
カーネル・サービス(OSGi宣言サービス)のトランスフォーマー
TopologyProvider
・コンポーネント / ポリシー / リンクをトポロジー
断片に変換
・VMテンプレートを利用する場合は
TemplateTransformerを指定(デフォルト)
TopologyProcessor
・未解決トポロジーを書き換え
config.json
resolve
解決済みトポロジー
provision
ServiceProvisioner
・共有サービスとの連携に必要な情報を
トポロジーに挿入
topology.json
deploy
deployment.json
20
PostProvisioner
・最終的なtopology.jsonを確認(変更は不可)
deployment.jsonを確認
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
VMテンプレート(*.vmファイル)
ƒ プラグインを未解決トポロジーに変換するためのテンプレート・ファイル
#set( $memory = $config.MINIMUM_MEMORY )
#set( $license = $provider.getLicensed() )
#set( $CPU =1 )
{"vm-templates": [{
“name”: “${prefix}-was”, “scaling”:{ "min": 1, "max": 1},
"roles": [{
"name": "WAS", "type": "WAS", “plugin": "$provider.getPluginScope()“,
"parms": {
#set( $jvmPolicyAttrs = $provider.getPolicyAttributes( $component, "JVMPolicyofWAS" ))
#set( $WAS-bit-level = "32")
Velocityマクロ
#set( $heapRange = $provider.getValue($jvmPolicyAttrs, "64heapRange", false))
で条件分岐を
#if ( $heapRange )
#set( $WAS-bit-level = "64")
記載可能
#else
#set( $heapRange = $provider.getValue($jvmPolicyAttrs, "32heapRange", false))
#end
・・・},
"requires": { “memory”: $memory, "disk": $config.MINIMUM_DISK, "cpu": $CPU }
} ],
作成する仮想マシンの必要とするスペックを指定
"packages": [
#if ( $routingPolicyAttrs )
"ElbServicePlaceholder",
#end
“WAS${WAS-bit-level}”, “WAS“ , ・・・],
"licenses": [$license]
仮想マシン上で定義されているパッケージ(実行スクリプト群)を指定
}]}
21
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
カーネル・サービスのトランスフォーマーのJava拡張
ƒ Javaでトポロジー変換の動作を拡張する方法も提供
例) ポリシーに対するTopologyProviderのJava拡張の実装例
package com.ise.policy;
import com.ibm.json.java.JSONArray;
import com.ibm.json.java.JSONObject;
import com.ibm.maestro.model.transform.TopologyProvider;
import com.ibm.maestro.model.transform.Transformer;
public class iseTransform extends TopologyProvider {
@Override
public JSONObject transformComponent(String vmTemplateNamePrefix,
String applicationUrl, JSONObject applicationComponent,Transformer transformer) throws Exception {
JSONObject attributes = (JSONObject) applicationComponent.get("attributes");
return attributes;}
@Override
public void transformLink(JSONObject sourceFragment, JSONObject targetFragment,
String applicationUrl, JSONObject link, Transformer transformer) throws Exception {
String targetRole = "WAS";
MatchedRole target = getMatchedRole(targetFragment, targetRole);
if (!packages.contains(“ise.scripts")) {
packages.add(“ise.scripts");}
JSONArray depends = (JSONArray) target.role.get("depends");
if (depends == null) {
depends = new JSONArray();
target.role.put("depends", depends);}
JSONObject depend = new JSONObject();
depends.add(depend);
depend.put("type", “ISEPOLICY");
depend.put("parms", sourceFragment);}
22
}
JSONドキュメントを
加工するロジックを
コーディングするだけ
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグイン構成情報(config.json)
コーディング
必須
ƒ プラグインの構成を記載したJSONドキュメント
{ "name":"was", "version":"2.0.0.1", "patterntypes":{"primary":{"webapp":"2.0"}},
"files":[
"was¥/was-8003-linux64-20120409-product.tgz","was¥/was-8003-linux64-20120409-patch.tgz“, ・・・],
"packages":{
"WAS64":[{
"parts":[{
"part":"parts¥/was.tgz",
"parms":{"installDir":"¥/opt", "binaryFile":"was¥/was-8003-linux64-20120409-product.tgz"}
},{
"part":"parts¥/was-ifixmgr.tgz",
"parms":{"installDir":"¥/", "binaryFile":"was¥/was-8003-linux64-20120409-patch.tgz"}
}],
"requires":{"memory":640,"arch":"x86_64","disk":726} }],
"WAS32":[{・・・}],
導入するインフラ・パーツを
パッケージの形でカテゴライズ
"WAS":[{
"node-parts":[{ "parms":{・・・}, "node-part":"nodeparts¥/large-page.tgz“ }],
"requires":{"arch":"x86_64"}
},{"parts":[{"part":"parts¥/was.scripts.tgz"}]}
"parms":{“PORT”:9080,“MINIMUM_MEMORY”:512, ・・・, "MINIMUM_DISK":300},]}}
23
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターンのデプロイまで流れ
アプリケーション
定義ドキュメント
(appmodel.json)
KS*: カーネル・サービス
KS*による
トポロジー変換
トポロジー・ドキュメント
(topology.json)
デプロイメント・ドキュメント
(deployment.json)
デプロイ
開発対象
プラグイン・モデル情報
(metadata.json)
VMテンプレート
KSの拡張クラス
プラグイン構成情報
パート
パート
パート
ノード・パート
ノード・パート
ノード・パート
(config.json)
パターン作成
OS
イメージ
パターンのデプロイ
デプロイメント
ドキュメント
に沿って展開
24
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
ノード・パート
ƒ アクティベーション・スクリプトにより実行されるパッケージ群(.tgz)
– 導入するミドルウェアの前提条件を満たすための設定やOS設定の拡張などに利用
□ ノード・パートの構成
{ノード・パート名}.tgz
├─common/
│
└─ python/
│
│
│
└─ scripts/
│
│
│
└─ install/
│
│
│
└─ start/
│
│
│
└─ stop/
│
└─ maestro/ *.py
└─ {any files}
└─ {N}_{name}.sh |.py
└─ {N}_{name}.sh |.py
└─ {N}_{name}.sh |.py
└─setup/
│
25
└─ setup.py
└─ {names}/{any files}
□ common/python/
・PYTHONPATHに追加される
・ワークロード・エージェントより呼び出される
Pythonスクリプトに適用
□ common/python/maestro/
maestroパッケージに追加される
□ common/scripts/
startスクリプトが開始する前にPATHに追加
□ common/install/
setup.py実行後、昇順に実行される
□ common/start/
各installスクリプト実行後、昇順に実行される
□ common/stop/
VMインスタンス停止時、降順に実行される
□ setup/
最初に呼び出されるsetup.pyが格納される
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
パート
ƒ ワークロード・エージェントにより実行されるパッケージ群(.tgz)
– ミドルウェアの導入や設定などに利用
□ パートの構成
□ install.py
必ず作成しなければならないスクリプト
ライフサイクル・スクリプトやファイルなどの
ダウンロードを実施
{パート名}.tgz
├─scripts/
│
└─ {role}
│
└─ *.py
│
└─ {dep}
│
└─ *.py
└─ install.py
└─ {names}/{any files}
*.py
install / configure / start / changed
stop / uninstall / suspend
resume / checkpoint
26
□ scripts/
ライフサイクル・スクリプトの配置先
□ scripts/{role}/*.py
ロール(管理エンティティー)に対する
ライフサイクル・スクリプトの配置先
□ scripts/{role}/{dep}/**.py
他のロールに依存する、依存ロールに対する
ライフサイクル・スクリプトの配置先
□ {names}/{any files}
任意のディレクトリーおよびファイル
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
ロール(Role)
ƒ 仮想マシン・インスタンス内にある管理エンティティー
– アプリケーション・サーバーなど状態の管理が必要なものを対象とする
WASプラグインのVMテンプレート(SingleWAS.vm)より抜粋
"vm-templates": [{
“name”: “${prefix}-was”, ・・・,
"roles": [{
ミドルウェアの遷移状態
を視覚的に表示可能*
"plugin": "$provider.getPluginScope()",
"name": "WAS", "type": "WAS",
"external-uri": [{"ENDPOINT":"http://{SERVER}:${config.PORT}/"}],
・・・
管理コンソール画面(抜粋)
27
*プロセスの稼働状況を表しているわけではないことに注意
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Pythonスクリプトのアクティベーション動作①
重要
0config.sh + アクティベーション・スクリプトの実行
:作りこみ不要
:ノード・パート利用時
必ず作成
□ トポロジー・ドキュメント(topology.json)の解析
”packages”に指定されているノード・パートを特定
:ノード・パート利用時
必要あれば作成
□ 導入されるノード・パート(.tgz)のダウンロードと展開
setup/setup.pyの実行
setup/setup.pyの実行
setup/setup.pyの実行
□ 導入されるノード・パートの数だけ実行
common/install/
{N}_{name}.pyの実行
0_{name}.py
スロット0
・・・
9_{name}.py
スロット9
□ 存在する場合、スロット番号順に実行
common/start/
{N}_{name}.pyの実行
0_{name}.py
スロット0
・・・
8_{name}.py
スロット8
□ 存在する場合、スロット番号順に実行
ワークロード・エージェント起動 (common/start/9_agent.sh)
28
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Pythonスクリプトのアクティベーション動作②
ワークロード・エージェント起動 (common/start/9_agent.sh)
□ トポロジー・ドキュメント(topology.json)の解析
”packages”に指定されているパートを特定
□ パート(.tgz)のダウンロードと展開 (昇順)
setup/setup.pyの実行
setup/setup.pyの実行
install.pyの実行
重要
:作りこみ不要
:パート利用時
必ず作成
:パート利用時
必要あれば作成
□ ダウンロード&展開された順に実行
□ ロール別に実行
scripts/{role}/install.pyの実行
scripts/{role}/configure.pyの実行
scripts/{role}/{dep}/install.pyの実行
scripts/{role}/{dep}/install.pyの実行
scripts/{role}/{dep}/configure.pyの実行
scripts/{role}/{dep}/configure.pyの実行
scripts/{role}/start.pyの実行
scripts/{role}/{dep}/changed.pyの実行
scripts/{role}/{dep}/changed.pyの実行
scripts/{role}/changed.pyの実行
※ {role}と{dep}の状態が”RUNNING”の場合に実行
※ {role}の状態が”RUNNING”の場合に実行
29
{role}: ロール名, {dep}: 依存ロール名
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
3. Plugin Development Kit (PDK)
で行うパターン開発の流れ
30
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインの開発の流れ
Step1: プラグインの開発方針の検討
新規にパターンを開発するのか、既存のパターンのカスタマイズかを選択
Step2: プラグインの作成
作成・カスタマイズしたいパターンに必要なプラグインを作成
Step2-1:プラグイン構成の定義
Step2-3: ノード・パート/パートの作成
Step2-2:カーネル・サービスの定義
Step2-4:プラグインのビルド
Step3:パターン・タイプの作成 (新規作成時のみ)
作成したプラグインをパターンの構成要素として定義
Step4: 実機へのアップロード・動作確認
作成したパターンをVirtual Pattern development Kit あるいは実機にアップロードし、動作を確認
Step5: 公開開始
パターン・ユーザーへ成果物としてのプラグインあるいはパターンを提供
31
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step1: プラグインの開発方針の検討
Step1: プラグインの開発方針の検討
新規にパターンを開発するのか、既存のパターンのカスタマイズかを選択
Step2: プラグインの作成
作成・カスタマイズしたいパターンに必要なプラグインを作成
Step2-1:プラグイン構成の定義
Step2-3: ノード・パート/パートの作成
Step2-2:カーネル・サービスの定義
Step2-4:プラグインのビルド
Step3:パターン・タイプの作成 (新規作成時のみ)
作成したプラグインをパターンの構成要素として定義
Step4: 実機へのアップロード・動作確認
作成したパターンをVirtual Pattern development Kit あるいは実機にアップロードし、動作を確認
Step5: 公開開始
パターン・ユーザーへ成果物としてのプラグインあるいはパターンを提供
32
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
(再掲)プラグインを開発するモチベーション
パターンでのプロビジョニング範囲
DB
APサーバー
New!!
監視サーバー
パターン・ユーザー
1
既存パターンで使用できる
コンポーネントを追加したい
運用管理者
2
配布したシステムを企業内の
監視機構に組み込みたい
パターン化
MW B
MW A
導入・設定
スクリプト 導入する
ミドルウェア
DB接続の分離レベルの変更 など
運用管理者
3
33
ミドルウェア設定の企業内標準
をパターンに反映させたい
MW C
パターン・プロバイダー(IBM / ISV)
4
ソリューションをパターンの形
で標準化・自動化し、展開したい
© 2012 IBM Corporation
プラグイン開発の難易度
パターン化
MW B
MW A
導入・設定
スクリプト 導入する
ミドルウェア
長
MW C
パターン・プロバイダー(IBM / ISV)
4
4
ソリューションをパターンの形
で標準化・自動化し、展開したい
パターンでのプロビジョニング範囲
DB
APサーバー
監視サーバー
開発期間
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
1
運用管理者
2
配布したシステムを企業内の
監視機構に組み込みたい
New!!
パターン・ユーザー
1
既存パターンで使用できる
コンポーネントを追加したい
3
要件により難易度は変動
・ パターンに対する理解
・ トポロジー変換の設計・開発
2
・ Pythonスクリプトの設計・開発
DB接続の分離レベルの変更 など
短
運用管理者
3
低
34
ミドルウェア設定の企業内標準
をパターンに反映させたい
・ テスト
の4つを考慮して工数を見積もり
開発難易度
高
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインの実装の計画
プラグイン実装方針① 種類別
■ コンポーネント
■ パターン全体構成
APノード
データベース
・APノードはXXを使用
・データベースはYYを使用
デプロイに合わせて新規作成
・APノードのZZ機能のONは選択可能
パターン・プロバイダー(IBM / ISV)
APノード
■ リンク
データベース
■ ポリシー
DB接続
ZZ機能をON
プラグイン実装方針② インスタンス別
■ コンポーネント: APノード
■ リンク: DB接続
■ ポリシー: ZZ機能をON
■ コンポーネント: データベース
プラグインの実装粒度は以後の
メンテナンスを考えて計画し、決定
35
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step2: プラグインの作成
Step1: プラグインの開発方針の検討
新規にパターンを開発するのか、既存のパターンのカスタマイズかを選択
Step2: プラグインの作成
作成・カスタマイズしたいパターンに必要なプラグインを作成
Step2-1:プラグイン構成の定義
Step2-3: ノード・パート/パートの作成
Step2-2:カーネル・サービスの定義
Step2-4:プラグインのビルド
Step3:パターン・タイプの作成 (新規作成時のみ)
作成したプラグインをパターンの構成要素として定義
Step4: 実機へのアップロード・動作確認
作成したパターンをVirtual Pattern development Kit あるいは実機にアップロードし、動作を確認
Step5: 公開開始
パターン・ユーザーへ成果物としてのプラグインあるいはパターンを提供
36
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインの作成 準備①
ƒ プラグインのスケルトンはツールで作成を支援
– [File] > [New] > [IBM Workload Plug-in Project] で作成
プラグイン・プロジェクトが生成
プロジェクト / プラグイン名を指定
37
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインの作成 準備②
ƒ ノード・パート / パート / ロールのスケルトンはツールで作成を支援
– 対象のプラグイン・プロジェクトを右クリックし、目的に応じて作成
• ノード・パート: [New] > [Plug-in Node Part]を選択
• パート: [New] > [Plug-in Part]を選択
• ロール: [New] > [Plug-in Role]を選択
ノード・パート
パート
ロール
先に定義だけ作成し、Step2-3でスクリプト
にロジックを追加する
38
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインの作成の流れ
Step2-2: カーネル・サービスの定義
Step2-1:プラグイン構成の定義
トポロジー・ドキュメント生成に関わるレンダリング
動作を定義
プラグインに対する構成情報やモデル情報を定義
config.json (構成情報)
Next
トランスフォーマー・クラスのJava拡張
修正
or
metadata.json (モデル情報)
修正
V
VMテンプレートの作成
Next
導入製品のバイナリー / ファイル群
V
ant
antコマンドあるいはツールからのビルドの実行
Step2-4:プラグインのビルド
39
Next
ライフサイクル・スクリプト(*.py)
関連シェル・スクリプト(*.sh)
OSの拡張設定やミドルウェアの導入設定用
ライフサイクル・スクリプトの開発を実施
Step2-3:ノード・パート/パートの作成
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step2-1:プラグイン構成の定義
Step2-2: カーネル・サービスの定義
Step2-1:プラグイン構成の定義
トポロジー・ドキュメント生成に関わるレンダリング
動作を定義
プラグインに対する構成情報やモデル情報を定義
config.json (構成情報)
Next
トランスフォーマー・クラスのJava拡張
修正
or
metadata.json (モデル情報)
修正
V
VMテンプレートの作成
Next
導入製品のバイナリー / ファイル群
V
ant
antコマンドあるいはツールからのビルドの実行
Step2-4:プラグインのビルド
40
Next
ライフサイクル・スクリプト(*.py)
関連シェル・スクリプト(*.sh)
OSの拡張設定やミドルウェアの導入設定用
ライフサイクル・スクリプトの開発を実施
Step2-3:ノード・パート/パートの作成
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグイン構成の定義
ƒ Eclipse + PDKでの開発の場合、サマリー機能で開発・構文チェック可能
config.jsonのサマリー画面
metadata.jsonのサマリー画面
構文が誤っていると、以下のようなエラーが表示
41
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグイン構成情報(config.json)の作成
プラグイン名・バージョン
所属するパターンタイプを定義
{
“name”:“plugin-example”, "version" : "1.0.0.0",
"patterntypes":{"primary":{"example_ptype":"1.0"}},
“files”:["example/example_files.tgz“],
"packages":{
"Pack1": [{
"node-parts": [{
ライフサイクルに引き渡し可能な
パラメーター名および値をparmsに定義
"parms":{
"installDir":"/opt/example", "binaryFile":"example/example_files.tgz"},
"node-part": "nodeparts¥/nodepart1.tgz“
}] }],・・・,
"Pack3":[{
"requires": {"memory": 512,"disk": 300,"arch": "x86_64"},
"parts": [{
"parms":{"installDir": "¥/opt¥/AppNode"}, "part": "parts¥/node1.tgz"
}] }], ・・・
}
ノード・パート/パートに対しパッケージを定義
}
42
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグイン・モデル情報(metadata.json)の作成
アイコン サムネイル
(48×48) (24×24)
ビルダー画面に表示する
画像を格納し、指定
プラグインの種類、
IDを指定
[{
"id" : "WAR", "label": "Web Application",
"type“ : "component",
"description“ : "Web Application",
"thumbnail": "appmodel/images/thumbnail/thumb.png",
"image": "appmodel/images/icon/icon.png",
"category": "application",
"attributes" : [{
"id": "archive", "label": "WAR File",
"description" : "Specifies WAR (*.war) to be uploaded.",
"type" : "file", "required": true, "extensions": [ "war" ]
},{
"id“ : "password", "label" : “Management User Password",
"description" : “Management User(admin) Password.",
"type" : "string", "displayType" : "password", "required" : true
}]
}]
43
属性(attributes)で
ユーザー入力部分を定義
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step2-2: カーネル・サービスの定義
Step2-2: カーネル・サービスの定義
Step2-1:プラグイン構成の定義
トポロジー・ドキュメント生成に関わるレンダリング
動作を定義
プラグインに対する構成情報やモデル情報を定義
config.json (構成情報)
Next
トランスフォーマー・クラスのJava拡張
修正
or
metadata.json (モデル情報)
修正
V
VMテンプレートの作成
Next
導入製品のバイナリー / ファイル群
V
ant
antコマンドあるいはツールからのビルドの実行
Step2-4:プラグインのビルド
44
Next
ライフサイクル・スクリプト(*.py)
関連シェル・スクリプト(*.sh)
OSの拡張設定やミドルウェアの導入設定用
ライフサイクル・スクリプトの開発を実施
Step2-3:ノード・パート/パートの作成
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
カーネル・サービスの定義 ①
□ OSGiサービス・コンポーネントの作成
1
[New] > [OSGi Service Component]を選択
2
サービスを定義
VMテンプレートの利用
45
Eclipseフレームワークを利
用すれば、マニフェスト・ファ
イルの編集も自動で実施
TopologyProvider
のJava拡張
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
カーネル・サービスの定義② - VMテンプレート・ベースの場合
□ VMテンプレート(*.vmファイル)の作成
#set( $memory = $config.MINIMUM_MEMORY )
#set( $license = $provider.getLicensed() )
{
仮想マシンの台数を指定
"vm-templates": [{
"scaling":{ "min": 1, "max": 1},
ロールを指定
"name": "${prefix}-excom01",
“roles”: [{ type": "WL1“, "name": "WL1“, "quorum": 1,
"parms": {
“archive": "$provider.generateArtifactPath( $applicationUrl, ${attributes.archive} )"
作成する仮想マシンの必要とするスペックを指定
},
"requires": {
"memory": $memory, "disk": $config.MINIMUM_DISK
},
#set( $archive = $attributes.archive )
#set( $i = ${archive.lastIndexOf('/')} + 1 )
#set( $j = $archive.lastIndexOf('.') )
#set( $ctxroot = $archive.substring($i, $j) )
"external-uri": [{"Application":"http://{SERVER}:8080/${ctxroot}"}],
Velocityマクロでロジックを埋め込み
アプリケーションのURLを指定
},],
"packages": [
"NP1", "NP2", "PT1", "PT2"
]
}]
}
46
仮想マシン上で定義されているパッケージ(実行スクリプト群)を指定
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
カーネル・サービスの定義③ - トランスフォーマーのJava拡張の場合
□ トランスフォーマーのJava拡張(1/3)
package com.ise;
import
import
import
import
P.46のVMテンプレートをトランスフォーマー
のJava拡張で記載すると、P47-49のように
なる
com.ibm.json.java.JSONArray;
com.ibm.json.java.JSONObject;
com.ibm.maestro.model.transform.TopologyProvider;
com.ibm.maestro.model.transform.Transformer;
public class excom01Transform extends TopologyProvider {
@Override
public JSONObject transformComponent(String prefix, String applicationUrl,
JSONObject node, Transformer transformer) throws Exception {
JSONObject templates = new JSONObject();
JSONObject attributes = (JSONObject) node.get("attributes");
JSONArray vmTemplates = new JSONArray();
templates.put("vm-templates", vmTemplates);
JSONObject lisence = getLicensed();
// create a single node VM
JSONObject vm = new JSONObject();
vmTemplates.add(vm);
JSONObject scaling = new JSONObject();
vm.put("scaling", scaling);
scaling.put("min", 1);
scaling.put("max", 1);
47
仮想マシンの台数を指定
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
カーネル・サービスの定義③ - トランスフォーマーのJava拡張の場合
□ トランスフォーマーのJava拡張(2/3)
vm.put("name", prefix + "-excom01");
JSONArray roles = new JSONArray();
vm.put("roles", roles);
{
JSONObject role = new JSONObject();
roles.add(role);
role.put("name", "WL1"); ロールを指定
role.put("type", "WL1");
role.put("quorum", 1);
{
JSONObject parms = new JSONObject();
role.put("parms", parms);
String archive = generateArtifactPath(applicationUrl, (String) attributes.get("archive"));
parms.put("archive", archive);
JSONObject requires = new JSONObject();
role.put("requires", requires);
requires.put("memory", getConfigParm("MINIMUM_MEMORY"));
requires.put("disk", getConfigParm("MINIMUM_DISK"));
作成する仮想マシンの必要とするスペックを指定
48
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
カーネル・サービスの定義③ - トランスフォーマーのJava拡張の場合
□ トランスフォーマーのJava拡張(3/3)
JSONArray external = new JSONArray();
role.put("external-uri", external);
{
JSONObject ex = new JSONObject();
external.add(ex);
String archive1 = generateArtifactPath(applicationUrl, (String) attributes.get("archive"));
int i = ( archive1.lastIndexOf('/') + 1);
int j = archive1.lastIndexOf('.');
String ctxroot = archive1.substring(i, j);
String url = "http://{SERVER}:8080/" + ctxroot;
ex.put("Application", url);
}
アプリケーションのアクセスURLを指定
}
}
JSONArray pkgs = new JSONArray();
vm.put("packages", pkgs);
pkgs.add("NP1");
pkgs.add("NP2");
pkgs.add("PT1");
pkgs.add("PT2");
return templates;
}
仮想マシン上で定義されているパッケージ(実行スクリプト群)を指定
}
49
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
(参考) カーネル・サービスのJava拡張のために
ƒ IBM Workload Deployer javadoc
– 各カーネル・サービスのトランスフォーマーで使用できるメソッド等を記載
– PDKのdocディレクトリーに格納
プラグイン作成に必要なクラス・メソッド等を確認
パターン・プロバイダー(IBM / ISV)
50
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step2-3:ノード・パート/パートの作成
Step2-2: カーネル・サービスの定義
Step2-1:プラグイン構成の定義
トポロジー・ドキュメント生成に関わるレンダリング
動作を定義
プラグインに対する構成情報やモデル情報を定義
config.json (構成情報)
Next
トランスフォーマー・クラスのJava拡張
修正
or
metadata.json (モデル情報)
修正
V
VMテンプレートの作成
Next
導入製品のバイナリー / ファイル群
V
ant
antコマンドあるいはツールからのビルドの実行
Step2-4:プラグインのビルド
51
Next
ライフサイクル・スクリプト(*.py)
関連シェル・スクリプト(*.sh)
OSの拡張設定やミドルウェアの導入設定用
ライフサイクル・スクリプトの開発を実施
Step2-3:ノード・パート/パートの作成
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step2-3:ノード・パート / パートの作成
□ ライフサイクル・スクリプトの作成例
実行順に注意して開発
:
# Download WAR file
WARファイルのダウンロード
archive_remote = maestro.parms['archive']
とデプロイ
archive_name = archive_remote.rsplit('/')[-1]
archive_local = os.path.join(webappsDir, archive_name)
# Download as the specified file
maestro.download(archive_remote, archive_local)
:
rc = maestro.trace_call(logger, ['chown', '-R', 'virtuser:virtuser', this_dir + '/standalone.xml'])
maestro.check_status(rc, 'JBoss chown xml error')
:
導入MWの構成ファイルの
ファイル・オーナー変更
import maestro
import logging
WL1 のロール状況を’RUNNING’へ
import maestro
logger = logging.getLogger(‘WL1/start.py')
import logging
maestro.role_status = 'RUNNING'
logger = logging.getLogger('install.py')
logger.info('set JBoss role status to RUNNING')
# Prepare (chmod +x, dos2unix) and copy scripts to the agent scriptdir
maestro.install_scripts(‘scripts’)
52
part1のscriptsディレクトリーのインストールと実行権限の付加
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
(参考) VM間スクリプト連携例: 相手先のIPアドレスを取得
インスタンスB (roleB)
scripts/roleB/configure.py
maestro.export['Center_IP'] = maestro.node['instance']['private-ip'];
IPアドレス: 192.168.11.136
{
"added": [
"Hello_Center_Plugin-hcenter.11327435622581.RoleB"
],
"deps": {
"Hello_Center_Plugin-hcenter.11327435622581.RoleB": {
"Center_IP": “192.168.11.136"
}
},
myrole= "Hello_Center_Plugin-hcenter.11327435622581.RoleB"
myrole = maestro.added[0]
HOST= “192.168.11.136"
HOST = maestro.deps[myrole]['Center_IP']
scripts/roleA/roleB/changed.py
インスタンスA (roleA)
roleAがroleBに依存、両者ともロール状況がRUNNINGの場合に実行
53
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
(参考)ライフサイクル・スクリプトの開発のために
ƒ PyDev
– Pythonスクリプト開発用のEclipseプラグイン
– 構文チェックや単体テストをEclipse上で実施可能
ƒ maestro Python pydoc
– maestroパッケージのマニュアル
– PDKのdocディレクトリーに配置
54
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step2-4:プラグインのビルド
Step2-2: カーネル・サービスの定義
Step2-1:プラグイン構成の定義
トポロジー・ドキュメント生成に関わるレンダリング
動作を定義
プラグインに対する構成情報やモデル情報を定義
config.json (構成情報)
Next
トランスフォーマー・クラスのJava拡張
修正
or
metadata.json (モデル情報)
修正
V
VMテンプレートの作成
Next
導入製品のバイナリー / ファイル群
V
ant
antコマンドあるいはツールからのビルドの実行
Step2-4:プラグインのビルド
55
Next
ライフサイクル・スクリプト(*.py)
関連シェル・スクリプト(*.sh)
OSの拡張設定やミドルウェアの導入設定用
ライフサイクル・スクリプトの開発を実施
Step2-3:ノード・パート/パートの作成
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインのビルド
ƒ プラグイン・プロジェクトからプラグイン(.tgzファイル)を生成
– Eclipseフレームワークの場合
• 対象ディレクトリーを右クリックし、 [IBM Workload Plug-in] > [Build] を選択
– 「Build with source」でカーネル・サービスのトランスフォーマーのソースも梱包
• exportディレクトリーにプラグイン・ファイルが生成される
– コマンドラインおよびパターン・タイプ用に複数プラグインを同時にビルドする場合
• 各プラグイン・プロジェクトにbuild.plugin.xmlが存在することを確認
存在しない場合は、サンプルからコピー
• plugin.dependsにあるbuild.xmlをantで実行
• plugin.dependsのimage/pluginsディレクトリーにまとめて生成される
[C:plugin.depends]
[C:plugin.depends] $$ ant
ant -f
-f build.xml
build.xml
Buildfile:
Buildfile: build.xml
build.xml
::
BUILD
BUILD SUCCESSFUL
SUCCESSFUL
Total
Total time:
time: 11
11 seconds
seconds
56
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step3:パターン・タイプの作成 (新規作成時のみ)
Step1: プラグインの開発方針の検討
新規にパターンを開発するのか、既存のパターンのカスタマイズかを選択
Step2: プラグインの作成
作成・カスタマイズしたいパターンに必要なプラグインを作成
Step2-1:プラグイン構成の定義
Step2-3: ノード・パート/パートの作成
Step2-2:カーネル・サービスの定義
Step2-4:プラグインのビルド
Step3:パターン・タイプの作成 (新規作成時のみ)
作成したプラグインをパターンの構成要素として定義
Step4: 実機へのアップロード・動作確認
作成したパターンをVirtual Pattern development Kit あるいは実機にアップロードし、動作を確認
Step5: 公開開始
パターン・ユーザーへ成果物としてのプラグインあるいはパターンを提供
57
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
パターン・タイプの作成 (新規作成時のみ) ①
ƒ 以下のディレクトリー構造になるようにプロジェクトを作成
– サンプルのpatterntype.helloを参考に構成
□ パターン・タイプのディレクトリー構造
{パターン・タイプ名}
├─build.patterntype.xml
├─patterntype.json
└─ en.html
│
│
パターン・タイプをビルドするために必要な
xmlファイル
□ patterntype.json
├─licenses/
│
□ build.patterntype.xml
:
└─ ja.html
└─locales/
└─ messages.json
パターン・タイプの構成情報を記載
□ lisenses/*.
ライセンスに関する条項を記載
□ locales/*.json
メッセージのローカライゼーションを実装する
場合に利用
patterntype.jsonが重要
58
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
パターン・タイプの作成 ②
ƒ patterntype.jsonの作成
プラグイン側で指定した
パターン・タイプ名と合わせる
{
"name"
: "patterntype.example",
"shortname" : "ptype.example",
"version"
: "1.0.0.0",
"description" : "DESCRIPTION",
"builder"
: true,
"prereqs":{
"foundation":"2.0.0.2"
},
プラグイン側のconfig.json
{
"name": "component01",
"version": "1.0.0.0",
"files": [
"examples¥/example01.tgz"
],
"patterntypes": {
"primary": {
"license" : {
"ptype.example": "1.0"
"pid" : "5725D65",
"type" : "PVU"
}
}
},
}
前提とするパターン・タイプを指定
59
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
パターン・タイプの作成 ③
ƒ ビルドはコマンドラインで実施
– サンプルで提供されるplugin.dependsで事前にプラグインのビルドを予め実施
– パターン・タイプのプロジェクト配下で以下のantコマンドを実行
## ant
ant -f-f build.patterntype.xml
build.patterntype.xml
– 所属するプラグインのconfig.jsonでfilesを指定している場合はHTTPサーバーに配置
しておき、下記のオプションを与えてビルドを実行
## ant
ant -f-f build.patterntype.xml
build.patterntype.xml
–Dstorage.url=http://X.X.X.X/managed/plugins/examples/example01.tgz
–Dstorage.url=http://X.X.X.X/managed/plugins/examples/example01.tgz
config.json(抜粋)
※wget(.cmd)の使用が前提
:
"files": [
example01.tgz
wget*
"examples¥/example01.tgz"
],
:
http://X.X.X.X/managed/plugins/examples/example01.tgz
– .tgzファイルはプロジェクトのexportディレクトリー配下に生成される
60
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
Step4: 実機へのアップロード・動作確認
Step1: プラグインの開発方針の検討
新規にパターンを開発するのか、既存のパターンのカスタマイズかを選択
Step2: プラグインの作成
作成・カスタマイズしたいパターンに必要なプラグインを作成
Step2-1:プラグイン構成の定義
Step2-3: ノード・パート/パートの作成
Step2-2:カーネル・サービスの定義
Step2-4:プラグインのビルド
Step3:パターン・タイプの作成 (新規作成時のみ)
作成したプラグインをパターンの構成要素として定義
Step4: 実機へのアップロード・動作確認
作成したパターンをVirtual Pattern development Kit あるいは実機にアップロードし、動作を確認
Step5: 公開開始
パターン・ユーザーへ成果物としてのプラグインあるいはパターンを提供
61
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
実機へのアップロード
ƒ プラグイン / パターン・タイプのアップロード方法は3種類
① コマンド行ツール(deployerコマンド)でのアップロード (制約:なし)
• プラグイン
# deployer.plugins.create(<ファイル・パス>)
• パターン・タイプ
# deployer.patterntypes.create(<ファイル・パス>)
② 管理コンソールからのアップロード (制約: ファイル・サイズが2GB以内)
• プラグイン
「クラウド」>「システム・プラグイン」に移動し、追加アイコンをクリック
• パターン・タイプ
「クラウド」>「パターン・タイプ」に移動し、追加アイコンをクリック
62
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
実機へのアップロード(続き)
③ Eclipseフレームワークでのアップロード (制約:RAD前提、プラグインのみ)
• プラグイン
対象プラグイン・プロジェクトを右クリックし、[IBM Workload Plug-in] > [Install /
update to deployer] を選択
RADのコンソールでSuccessが
出力されればアップロード完了
管理コンソールから確認が可能
63
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
動作確認:パターンのデバッグ
ƒ パターンのデバッグにおける重要ポイントは3点
① アプリケーション・ビルダー(パターン作成画面)での操作
• 作成したコンポーネント・リンク・ポリシーが期待通りに選択できるか
• アプリケーション・ビルダーで実際に操作して確認
② デプロイ実行時のカーネル・サービスによるトポロジー変換
• 期待する通りにトポロジー・ドキュメント(topology.json)が作成されるか
• デバッグ・プラグインによるモック・デプロイメントでデバッグ
不要なデプロイによるクラウド・リソースの使用を回避可能
③ Pythonスクリプトの動作
• 期待する通りに各Pythonスクリプトが動作するか
• アンロック・プラグインを利用し、プラグインの差し替え・再実行で効率よく
スクリプトのデバッグを実施可能
不要なデプロイ再実行を回避可能
64
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
デバッグ・プラグイン
ƒ 2種類のデバッグ・モードを提供するプラグイン
– モック・デプロイメント
• topology.jsonやdeployment.jsonのチェックのためのモード
意図した形でモデルからトポロジーに変換されているかを確認可能
• 実際にプロビジョニングは行われない
– マニュアル・デバッギング
• デプロイ時の詳細情報をロギングするためのモード
• エンコードしたデータなどセンシティブなデータのロギングのON/OFFを指定可能
コンポーネントのデバッグを
配置してデバッグ・モードへ
65
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
アンロック・プラグイン
ƒ 既に使用中のプラグインの削除・追加を可能とするプラグイン
– 通常、使用中のプラグインはロックされ、削除できない
– テスト環境においてバージョンを変えずにプラグインを修正したい場合に使用
• 開発したプラグインのテスト実施時にバグが発覚し、修正する必要がある場合など
• 一度デプロイした環境を削除せずにデバッグ・テストを続行可能
□ アンロックを利用したデバッグの流れ
2
アップロード
1
削除
4
全てのエージェントの停止
killall java
5
New!!
既にインストールされたアーティファクトの停止
rm -rf /opt/IBM/maestro
プラグイン
cd /0config
rm -rf 0config.log backup/ cert.tmp/
debug/ doneconfig download.zip
exec_vm_tmpl/ itlm/ lafiles/ logging/
monitor/ nodepkgs/ properties/ start/
デプロイ実施済み
3
66
SSHログイン
6
ミドルウェアの削除など初期設定に戻す
7
新しいプラグインで再度プラグインを実行
/0config/0config.sh
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
4. まとめ
67
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
まとめ
ƒ 仮想アプリケーション・パターンの実態
– プラグインとパターン・タイプ
ƒ プラグインを開発するモチベーション
– 既存のパターンのカスタマイズ
• 既存パターンで使用できるコンポーネントを追加したい
• 配布したシステムを企業内の監視機構に組み込みたい
• ミドルウェア設定の企業内標準をパターンに反映させたい
– 新規パターンの開発
• ソリューションをパターンの形で標準化・自動化し、展開したい
ƒ プラグインの開発に必要なスキル
– Java, Apache Velocity, Python
ƒ パターン開発を支援するツール
– Plugin Development Kit (PDK)
68
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
参考資料
ƒ IBM Plugin Development Kitダウンロード・サイト
– https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swgplugindekit%20
ƒ IBM Workload Deployer V3.1 Information Center
– http://publib.boulder.ibm.com/infocenter/worlodep/v3r1m0/index.jsp
ƒ パターン・ベースの手法によるクラウド・コンピューティング
– http://www.ibm.com/developerworks/jp/cloud/library/cl-wdcloudpatterns/
ƒ IBM Workload Plug-in Development Kit を使用する
– http://www.ibm.com/developerworks/jp/cloud/library/cl-puresystem-plugintasks/
69
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
補足資料
P.71-72
「1. Plugin Development Kit (PDK) 概要」の補足
P.73-81
「2. Plugin Development Kit (PDK)を利用するために」の補足
P.82-84
「3. Plugin Development Kit (PDK)で行うパターン作成の流れ」 P.54の補足
P.85
VMテンプレートの補足(P.21, P.46)
70
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインで実現するPaaSのメリット①: 仮想イメージ管理の簡素化
個別カスタマイズの嵐で装飾し
続けるイメージの管理・・・
OS,MWとバージョンの組み合わ
せに応じて増え続ける仮想イ
メージのバリエーション
IBM/ISV
運用担当者
Hoge v1.0
・・・
標準A
Hoge v1.1
標準A
ベース・イメージ
Foo v2.1
Foo v2.1
・・・
Hoge v1.0
標準A
AIX
パターン
~社個別
プラグイン
動作保証されたプラグインを利用。
企業標準OSの対応にはベース・
イメージの差し替えのみで可
運用担当者
71
Foo v2.1
MW導入済みイメージ
提供
Linux
・・・
標準B
標準A
ソリューション
Hoge v1.0
Foo v2.1
標準B
プラグインの中でOSとMW導
入を実施。プラグインの稼動
保証に専念
パターン・プロバイダー(IBM / ISV)
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
プラグインで実現するPaaSのメリット②: 環境移行の容易化
運用担当者
インフラのパーツが揃っているので、同一のインフラ構築は容易
事前に業務データの移行方法を決めておけば速やかに移行可能
SCAS*環境
東京センター
顧客データ等
開発したアセットをアップロード
将来的にはSCAS環境を開発環境
として利用し、本番環境へ開発した
プラグインを移行
72
: XX機能プラグイン
パターン・ビルダー(IBM / ISV)
: ベース・イメージ
: プラグイン
SCAS: SmartCloud Application Services
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターンのデプロイまで流れ
アプリケーション
定義ドキュメント
(appmodel.json)
KSによる
トポロジー変換
トポロジー・ドキュメント
(topology.json)
デプロイメント・ドキュメント
(deployment.json)
デプロイ
プラグイン・メタデータ
(metadata.json)
プラグイン構成情報
(config.json)
パターン作成
Velocityテンプレート
KSの拡張クラス
パート
パート
パート
ノード・パート
ノード・パート
ノード・パート
OS
イメージ
パターンのデプロイ
デプロイメント
ドキュメント
に沿って展開
73
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
アプリケーション定義ドキュメント (appmodel.json)
ƒ アプリケーション・ビルダーで構成したパターンを表すJSONドキュメント
アプリケーション・ビルダーから生成されたappmodel.json
コーディング
不要
アプリケーション・ビルダー画面
{
"model": {
"name": "PatternWS",
"nodes": [ {
“attributes”: { ・・・, “archive”: “artifacts/JSPTest.war“ ・・・ },
"id": "Web Application", "type": "WAR“
}, {
“attributes”: { ・・・ }, "id": "Existing Database", "type": "xDB2"
}, {
“attributes”: { ・・・}, "id": "Scaling Policy", "type": "ScalingPolicyofWAS",
“groups”: { ・・・, “Basic”: true, ・・・ }
} ],
"links": [ {
"source": "Web Application", "target": "Existing Database",
“attributes”: { ・・・}, "type": "WASDB2", "id": "WASDB2_1"
}, {
"source": "Scaling Policy", "target": "Web Application",
"attributes": { }, "type": "policy.ScalingPolicyofWAS",
"id": "policy.ScalingPolicyofWAS_1"
} ],
"description": "for Pattern Workshop", "app_type": "application",
"locked": false, "patterntype": "webapp", "version": "2.0"
},
"layers": [ {
"id": "layer_1",
"nodes": [ "Web Application", "Existing Database", "Scaling Policy" ]
}]
appmodel.jsonから
具体的なトポロジーを
決める変換ステップへ
}
74
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターンのデプロイまで流れ
アプリケーション
定義ドキュメント
(appmodel.json)
KS*: カーネル・サービス
KS*による
トポロジー変換
トポロジー・ドキュメント
(topology.json)
デプロイメント・ドキュメント
(deployment.json)
デプロイ
開発対象
プラグイン・モデル情報
(metadata.json)
VMテンプレート
KSの拡張クラス
プラグイン構成情報
パート
パート
パート
ノード・パート
ノード・パート
ノード・パート
(config.json)
パターン作成
OS
イメージ
パターンのデプロイ
デプロイメント
ドキュメント
に沿って展開
75
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
トポロジー・ドキュメント (topology.json)
ƒ VMインスタンスのデプロイ時に参照されるJSONドキュメント
コーディング
不要
– パート実行時に必要なパラメーター値などが記載
{
共有サービスとの連携の有無が記載
"service-templates":[{
"sharedservice":{"client-version":"2.0","name":"proxy","required":true},
"parms":{"virtualHost":"userxx.wca.com","elbServiceRequired":true,"ctx_root":"¥/PlantsByWebSphereAjax¥/*“},
"type":"elbServicePlaceholder¥/2.0.0.1_com.ibm.elbservice.placeholder.ELBPlaceholderServiceProvisioner",
"name":"com.ibm.elbservice.placeholder.ELBPlaceholderServiceProvisioner“
}, ・・・],
"meta-data":{
"ip_version":"IPv4", "plugins":{・・・,"wasdb":"2.0.0.1","was":"2.0.0.1",・・・},
"deployment-id":"d-45000e44-7f62-4fb8-831b-6e27fa8ccd5f",
"app_name":"Pattern WS", "model":"", "patterntype":"webapp", "app_type":"application",
"app_id":"a-3b2ff14b-a37e-4b9f-8f3e-be211ad4917a",
},
"vm-templates":[{
"parts":[{
"part":"https:¥/¥/192.168.11.138:9444¥/storehouse¥/admin¥/plugins¥/was¥/2.0.0.1¥/parts¥/was.tgz",
"parms":{"installDir":"¥/opt","binaryFile":"was¥/was-8003-linux64-20120409-product.tgz"}
}, ・・・],
パートのダウンロード先・実行時のパラメーターが記載
76
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
トポロジー・ドキュメント (topology.json) (続き)
[前ページの続き]
ノード・パートのダウンロード先・実行時のパラメーターが記載
"node-parts":[{
"parms":{"mountPoint":"hugetlbfs","groupName":"libhuge","fileSysDir":"¥/opt¥/libhugetlbfs"},
"node-part":"https:¥/¥/192.168.11.138:9444¥/storehouse¥/admin¥/plugins¥/was¥/2.0.0.1¥/nodeparts¥/
large-page.tgz“
}, ・・・],
"persistent":false, "scaling":{"min":2,"max":2,"role":"WAS"},
"memory":2464.0,"cpu":1.0,"type":"large","image-id":18,"disk":5894.0, デプロイ時に必要なリソース情報が記載
"name":"Enterprise_Application-was",
“packages”:[“WAS32”,“WAS”,“ElbServicePlaceholder”,・・・],
"roles":[{
"plugin":"was¥/2.0.0.1",
"depends":[{
"deps_key_id":"WASDB.jndiDataSource",
"role":"Enterprise_Application-was.xDB2_1",
ロールの依存性や必要なパラメーター値が記載
"parms":{・・・}, "localOnly":true, "type":"xDB2",
}],
"parms":{・・・},
“type”:“WAS”, “name”:“WAS”, ・・・
}, ・・・],
“plugin-data”:{ "Enterprise Application+EAR":{"useELBService":true} },
"runtime-environment":{"smtp":null,"locale":"en_US","product":"IWD"}
}
77
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターンのデプロイまで流れ
アプリケーション
定義ドキュメント
(appmodel.json)
KS*: カーネル・サービス
KS*による
トポロジー変換
トポロジー・ドキュメント
(topology.json)
デプロイメント・ドキュメント
(deployment.json)
デプロイ
開発対象
プラグイン・モデル情報
(metadata.json)
VMテンプレート
KSの拡張クラス
プラグイン構成情報
パート
パート
パート
ノード・パート
ノード・パート
ノード・パート
(config.json)
パターン作成
OS
イメージ
パターンのデプロイ
デプロイメント
ドキュメント
に沿って展開
78
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
デプロイメント・ドキュメント (deployment.json)
ƒ デプロイ状況を記述したJSONドキュメント
コーディング
不要
– 停止・再起動、自動スケーリングなどのイベントにより記載内容は変化
{
"last.update":"2012-06-27T08:19:58.979Z",
"iptype":"IPv4", "deployment_name":"Pattern WS",
パターン名
"iaas-config":{
"provider-config":{
“instanceCreateTimeout”:600000, ・・・, "instanceDeleteTimeout":300000,
“provider”:“WCA”, "runtimeEnv":"appliance", "wca.url":"https:¥/¥/192.168.11.138:443",
"virtualSystem":{“iptype”:“IPv4”, “platform”:“ESX”, "cloud":"¥/resources¥/clouds¥/1","id":"314"},
デプロイ先情報
"volumeCreateTimeout":600000,"mockDeployment":false}},
"creator":"u-0c526b61-6d99-40d5-ab35-cacc3167a324",
"appliance":{"type":"719972X","name":"(none)","uuid":“XXX-XXX-XXX","group":"","product":"IWD"},
インスタンス
"actual":"RUNNING", "maintenance_mode":false, ・・・
稼働状況
"templates":{"Enterprise_Application-was":{"min":2,"max":2,"persistent":false,"current":2,"create":[]}},
“start.time":"2012-06-27T08:00:28.052Z", ・・・, “desired”:“RUNNING”, ・・・, "health":"NORMAL",
"roles":{
“XXX-WAS":{"last.update":“AAA","status":"RUNNING","node":“XXX","type":"WAS","health":"NORMAL"}, ロール状況
・・・},
"deployment_version":"3.1.0.2",
"instances":{
“XXX":{"last.update":“AAA","reboot.count":0,"activation-status":"RUNNING","public-ip":"192.168.11.130","privateip":"192.168.11.130","vmId":625,"status":"RUNNING","public-hostname":"vm130.wca.com","starttime":“CCC","stopped.by":"","id":“XXX","uuid":“MMM","health":"NORMAL"}, ・・・},
インスタンス状況
"services":{
"deployment":"https:¥/¥/192.168.11.138:9443¥/services¥/deployments¥/d-45000e44-7f62-4fb8-831b6e27fa8ccd5f"}
}
79
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
仮想アプリケーション・パターンのデプロイまで流れ
アプリケーション
定義ドキュメント
(appmodel.json)
KS*: カーネル・サービス
KS*による
トポロジー変換
トポロジー・ドキュメント
(topology.json)
デプロイメント・ドキュメント
(deployment.json)
デプロイ
開発対象
プラグイン・モデル情報
(metadata.json)
VMテンプレート
KSの拡張クラス
プラグイン構成情報
パート
パート
パート
ノード・パート
ノード・パート
ノード・パート
(config.json)
パターン作成
OS
イメージ
パターンのデプロイ
デプロイメント
ドキュメント
に沿って展開
80
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
オペレーション・ドキュメント(operation.json/tweek.json)
ƒ デプロイ後の構成変更を実施可能とするためのJSONドキュメント
– インスタンスの管理画面の「操作」タブのカスタマイズが可能
デプロイ後の設定
を変更可能
operation.json
{
"WAS":[{
ロール名を指定
"preset_status":"RUNNING",
"label":"JAVA_CORE_LABEL",
"script":"debug.py javacore",
"id":"generateJavacore",
"description":"JAVA_CORE_DESCRIPTION",
"category":"TROUBLE_SHOOTING"
}, ・・・
81
## debug.py
debug.py javacore
javacore
該当インスタンスで
スクリプト実行
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
(参考) maestroパッケージのコモン・スクリプト
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
82
maestro.download(url, file)
– url からリソースをダウンロードし、ファイルfile としてローカルに保存する
maestro.downloadx(url, dir)
– .zip , .tgz , または.tar.gz ファイルをダウンロードしてディレクトリーdir に解凍する
• .tgz ファイルと .tar.gz ファイルはストリーム中に解凍される
• .zip ファイルはダウンロード後に解凍される
maestro.decode(str)
– maestro エンコード・ユーティリティーでエンコードされたストリングstrをデコードする
• 例えば、com.ibm.ws.security.utils.XOREncoder.encode(String)でエンコードし
た文字列をデコードする場合にmaestro.decode(s)を使用
maestro.install_scripts(dir)
– ライフサイクル・スクリプトをdirにコピーし、 シェル・スクリプトを実行可能にする
(dos2unix および chmod +x)
maestro.check_status(rc, message)
– ゼロ以外のrcのスクリプトをロギングして終了する
maestro.trace_call(logger,**)
– OSコマンドおよびスクリプトを実行する
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
(参考) データ・オブジェクト
ƒ maestro.parturl
– パートの.tgzファイルの入手元の完全修飾 URL (string; RO)
ƒ maestro.filesurl
– ストアハウス内の共有ファイルの完全修飾 URL プレフィックス (string;RO)
ƒ maestro.parms
– トポロジー文書に指定された関連パラメーター (JSON オブジェクト; RO)
ƒ maestro.node['java']
– Java 実行可能ファイルの絶対パス (string; RO)
ƒ maestro.node['deployment.id']
– デプロイメント ID (例えば、d-xxx) (string; RO)
ƒ maestro.node['tmpdir']
– 作業ディレクトリーの絶対パス。使用後にクリアされます。(string; RO)
ƒ maestro.node['scriptdir']
– スクリプト・ディレクトリーのルートの絶対パス(string; RO)
ƒ maestro.node['instance'][ 'private-ip'], maestro.node['instance'][ 'public-ip']
– サーバーのIPアドレス(string; RO)
ƒ maestro.node['parts']
– このノードで起動されるすべてのPython スクリプトで共有されるJSONオブジェクト
83
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
反復可能タスク
ƒ 指定した時間の経過後にスクリプトを起動するためのフレームワーク
– 一定の周期でローカルにあるログをリモート・サーバーにバックアップする、など
の要件がある場合に実装を考慮
ƒ start.pyやchanged.pyなどのスクリプトに対し、以下のように設定
– backupLog.pyを繰り返し実行させたい場合は、 backupLog.py内にタスクを設定
task = {}
task['script']='backupLog.py'
「10秒後にbackupLog.pyを実行する」タスクを設定
task['interval'] = 10
taskParms={}
taskParms['hostname'] = hostname
taskParms['directory'] = directory
backupLog.py実行に必要な
taskParms['user'] = user
パラメーターを設定
taskParms['keyFile'] = keyFile
task['parms'] = taskParms
maestro.tasks.append(task)
タスクの実行
84
© 2012 IBM Corporation
Pattern-based Deployment with PureAS & IWD
ワークロード・パターンによる革新的インフラ構築
~PureApplication System, IBM Workload Deployer で設計・導入からサービス開始までを劇的に短縮~
復旧: リブートまたは置換
ƒ
ƒ
もし仮想マシンが予期せずに停止した場合の復旧アクションを指定
persistentプロパティーで仮想マシンの永続性を指定
– true: 仮想マシンをリブート
– false(デフォルト): 仮想マシンを置換(新規に仮想マシン・インスタンスを作成)
ƒ
設定方法は次の2通り:
1. トランスフォーマーでvm-templateに対しpersistentプロパティーを指定
– 2.での設定よりも1.で指定した値が優先される
2. プラグイン構成ドキュメント(config.json)でpersistentプロパティーを指定
□ VMテンプレートのvm-templates
へのpersistent設定例
□ config.jsonでのpersistent指定例
{
“name” : “db2”, "version" : "1.0.0.0",
"packages" : {
"DB2" : [{
“requires” : {“arch” : “x86_64”, "memory" : 0},
"persistent" : true,
“parts” : [{・・・}]
}]
"vm-templates": [{
"persistent":true,
"scaling": {
"min": 1, "max": 1
},
・・・
}]
85
}}
© 2012 IBM Corporation
Fly UP