...

3. PureApplicationで システム基盤をコード化する

by user

on
Category: Documents
1

views

Report

Comments

Transcript

3. PureApplicationで システム基盤をコード化する
セッション番号. セッションタイトル
SoEの変化のスピードに対応するアジャイル開発/運用基盤の実現!
∼DevOpsツールとWAS Liberty / PureApplicationの連携∼
3. PureApplicationで
システム基盤をコード化する
2015年11⽉18⽇ ⽇本IBM IBM Systems Software 岩品 友徳 ([email protected])
1
© 2015 IBM Corporation
アジェンダ
n  [復習] パターン・デプロイメント
n  パターンでどこまで表現できるか
n  パターンの開発環境
n  パターンでの開発手順
1)スクリプト・パッケージ
2)ソフトウェア・コンポーネント
3)緊急修正パッケージ
n  パターン開発 と DevOpsツール の連携
n  本日のまとめ
© 2015 IBM Corporation
2
我々に求められているのは、
イノベーションによって、世界に変化を起こすこと。
変化がなければ、それはイノベーションではない。
© 2015 IBM Corporation
3
本⽇のセミナー
協業いただける
ビジネス・パートナー様を探しています
u  PureApplication
Software環境の導⼊構築
u  パターンの開発
© 2015 IBM Corporation
4
[復習] パターン・デプロイメント
© 2015 IBM Corporation
5
PureApplication ファミリー
システム構築⾃動化技術
クラウド向け 統合運⽤管理基盤
パターン・デプロイメント
仮想化集約の最適化
(VM⾃動再配置)
ポリーシーベースの拡張性
フィックス適⽤⾃動化
マルチテナンシー
アクセス権限管理
パターン
ライセンス管理
モニタリング
⾃動障害通知
・・・
ハイブリッド・クラウド
既存仮想化環境+
既存仮想化環境の最適化
標準化・⾃動化の推進
MS Azureサポート(⼀部機能)
(IA, Power)
オフプレミス環境
垂直統合型システム
System
(IA, Power)
6
Software
パターン
企業のクリティカル・システムに
求められる可⽤性と冗⻑性
HWまで含めた事前最適化、統合
柔軟な製品機能による災対構成
Service on
世界中のSoftLayerデータセンター (IA)
海外への企業システムの展開
検証環境としての利⽤
IoTやMobileなどのフロントエンド
© 2015 IBM Corporation
パターン・デプロイメント
仮想化
+
標準化
+
⾃動化
システムの雛形「パターン」
ソフトウェアの導⼊
パラメータ設定
コンポーネント間連
携
専⾨家のノウハウ
OSS や 他社製品
パターンをデプロイすることで
システムを⾃動構築する
標準化
q 
q 
⾃動化
システム全体ではなく
「パーツ」の標準化
再利⽤性の向上と
投資対効果の最⼤化
q 
q 
システム固有要件
IBMミドルウェアに限らず
スクリプト対応可能なものは、
他社製/OSSソフトウェアも組込み可能
オープン技術(Chef および docker)も統合
外部に公開された数多くのレシピやイメージを利⽤可能
MW運⽤スクリプト
運⽤スクリプト群
各社IT標準
7
セキュリティ標準
© 2015 IBM Corporation
クラウド時代:基盤技術者はソフトウェア開発者である
⼿作業による
再現性のない作業
(の繰り返し)
⼤量のドキュメント
・作業⼿順書の整備
コード実⾏による
均質な作業と実⾏結果
短時間で
確実なアウトプット
§  基盤構築は「ソフトウェア開発」と認識する
u 
u 
u 
保守性の低い大きな成果物を作るのではなく、
部品の標準化・共通化・ライブラリ化を進めて、汎用性の高い部品を作成する
システム開発・システム構築に利用する部品(スクリプト、ソフトウェア)は、
SCM(ソースコード管理システム)を利用して、バージョン付けして管理する
インフラ構築で発生した問題は、ソフトウェアのバグと同様に管理する
•  バグがなぜ発生し、どの部品のどのバージョンで解消されるかを管理する
•  各環境にリリースした基盤が、どの部品・どのバージョンの組み合わせでできているかを管理する
u 
u 
システム基盤を、ソフトウェア開発と同様、継続的に進化する環境と認識する
常に同じ結果を提供できることを担保するため、テストを自動化する
© 2015 IBM Corporation
8
ビジネスに対する価値、市場投⼊のスピード
グローバル経営層Study 2015
Uberization
http://ibm.biz/CSUITE_2015
© 2015 IBM Corporation
9
PureApplication と DevOpsツール(UrbanCode)で
開発から本番までリリースを完全⾃動化
課題
• 
• 
• 
⼿作業に依存し、複数チームが関わるアプリ
ケーションのデプロイ
特定のスキルある担当者しかできない作業
ボトルネックとなる環境準備作業
[US⾦融事業者 事例]
InterConnect 2015 お客様事例発表
「Deployment reusable, repeatable, reliable」より
プロジェクトの成功基準
デプロイメントと構成変更の 100% ⾃動化
⼿動作業が残った場合は、プロジェクトの失敗
• 
• 
チャレンジ
• 
• 
• 
• 
• 
• 
• 
10
プロセスが複雑化し時間がかかるという社内の抵抗
⼿動作業は無くならないという懐疑
結果
全環境に渡る、再現性があり検証済みのリリース・プロセス
検証環境準備のアプリケーション・チーム セルフ・サービス化
リリースにかかる66%の⼯数削減、90%の時間削減
継続デリバリーの実現、変更ペースの加速
⼿作業を完全排除することでリリース数(ビジネス要件の反映)
が劇的に改善。コスト削減以上のビジネス価値
© 2015 IBM Corporation
パターンでどこまで表現できるか
© 2015 IBM Corporation
11
パターン・ビルダーによるシステム構築
1. 
2. 
3. 
4. 
基本OSの配置
ソフトウェアの導⼊
カスタマイズ・スクリプトの配置
コンポーネント間の関連付け
ソフトウェア
ソフトウェア
スクリプト
スクリプト
スクリプト
基本OS
基本OS
© 2015 IBM Corporation
12
パターンで表現されていること (BPMパターンを例に)
データベースの
⾼可⽤性
Webサーバー統合
APサーバーの
クラスタリング構成
ディスクの割当て
13
ポリシーベースの
拡張性
各種パラメーター
© 2015 IBM Corporation
パターンで表現されていること (BPMパターンを例に)
処理の依存関係
© 2015 IBM Corporation
14
パターンで表現されていること (BPMパターンを例に)
最終的には json の定義ファイルに落ちる
© 2015 IBM Corporation
15
パターンで表現されていること (BPMパターンを例に)
デプロイされたインスタンスに対して
インスタンス・コンソール
任意のタイミングで実⾏可能な
スクリプト
製品コンソールへのリンク
© 2015 IBM Corporation
16
パターンで表現されていること (BPMパターンを例に)
デプロイされたインスタンスに対して
ログ集約
運⽤機能
定型運⽤ジョブの組込み
ログ統合
© 2015 IBM Corporation
17
コンポーネントの再利用性 (BPMパターンを例に)
BPM
WebSphere
AS ND
DB2
(HADR)
Base OS Image
© 2015 IBM Corporation
18
パターンの開発環境
© 2015 IBM Corporation
19
パターン・デプロイメントにおける開発物 3種類
ソフトウェア
ソフトウェア
スクリプト
スクリプト
スクリプト
基本OS
基本OS
1)  ソフトウェア・コンポーネント
• 
• 
パターンに導入するソフトウェアの表現
製品の導入から、設定・構成、運用までを表現
2)  スクリプト・パッケージ
• 
ソフトウェア・コンポーネントではカバーしきれない
個別要件の自動化、カスタマイズ
3)  緊急フィックス
• 
• 
20
ソフトウェアに対する修正などの適用
リリース後修正すべき課題の反映
© 2015 IBM Corporation
パターン・デプロイメント開発環境
https://ibm.biz/BdHfSQ
21
© 2015 IBM Corporation
PureApplication Software for Developers
n  同梱物
© 2015 IBM Corporation
22
コンポーネント開発を助ける開発環境
n  IBM Workload Plug-in Development Kit (PDK)
Ø  PureApplication Software for Developers に付帯
l  Eclipse ベースの開発環境
• 
Eclipse Marketで提供されるプラグインを利⽤して、
スクリプトのビジュアル・エディター、SCMツールとの連携が可能
l  ソフトウェア・コンポーネントの開発、登録
• 
ミドルウェアの導⼊・運⽤⾃動化を効率化する maestro API
l  スクリプト・パッケージの開発、登録
© 2015 IBM Corporation
23
コンポーネント開発を助ける開発環境 (オプショナル)
n  追加 Eclipse プラグイン例
ü  ⽣産性を向上するためのプラグイン をEclipse MarketPlaceから⼊⼿
ü  いずれもIBM提供外。各プラグインのライセンスをご確認ください
l  Easy Shell
• 
ビジュアル・エディター、シェルの単体実⾏
• 
• 
Windows Server環境向けのスクリプト開発
PowerShellのビジュアル・エディター、コード保管
• 
• 
Software Component を開発する際は python を利⽤
pythonの開発環境
• 
ソースコード管理ツール SubVersionと連携
l  PowerShell Editor
l  PyDev
l  SubVersive
© 2015 IBM Corporation
24
コンポーネント開発を助ける開発環境
n  テスト・デプロイメント環境の登録
l  Eclipse > 環境設定 > IBM Plug-in Toolkit
l  PureApplication 環境の認証情報を登録
•  作成した パーツを PureApplication 上のカタログに登録することが可能に
© 2015 IBM Corporation
25
パターンでの開発の手順
© 2015 IBM Corporation
26
1) スクリプト・パッケージ
n  最も基本的な実装⽅法
l  RHEL では bash, AIXでは ksh,
Windowsでは PowerSH/bat で実装
l  各スクリプトから各製品コマンドの呼出しが可能
•  製品導⼊から構成、パラメータ設定など 汎⽤的に利⽤可能
l  パッケージング
• 
• 
• 
• 
スクリプト本体
その他スクリプト実⾏に必要な定義ファイル、製品導⼊イメージ
cbrscript.json : スクリプト実⾏に必要な定義ファイル
extendedattributes.json: 拡張定義ファイル(コンソール、ライセンス、実⾏時引数など)
[
]
27
{
}
■実⾏タイミング
"name": "CMN01-createDirectory",
・仮想システム作成時
"version": "1.0.0.0",
"execmode": 0,
・仮想システム削除時
"type": "APPLICATION",
・実⾏開始時(任意タイミング)
"location": "/tmp/CMN01",
・仮想システム作成時
"command": "createDirectory.sh",
&実⾏開始時(任意タイミング)
"ostype": "linux/unix",
"log": "/scriptPackageLogs/CMN01",
"keys": [
{ "type": "string”, “scriptkey”: “DirectoryList”, “locked”: false, “required": true}
]
© 2015 IBM Corporation
[参考] スクリプト・パッケージの開発 1/7
n  パースペクティブの選択
l 
右上のパースペクティブ・アイコンより
「Workload Plug-in Development」パースペクティブを選択
© 2015 IBM Corporation
28
[参考] スクリプト・パッケージの開発 2/7
n  スクリプト・パッケージ プロジェクトの作成
l 
l 
Project Explorer ペーン上で右クリックし、New > Otherを選択
「IBM Workload Script Package Project」を選択
⼀つのプロジェクトに
複数のスクリプトを定義可能
ある程度のサイズでまとめる
プロジェクト名指定
© 2015 IBM Corporation
29
[参考] スクリプト・パッケージの開発 3/7
n  スクリプト・パッケージの作成
l 
スクリプト・パッケージ・プロジェクト> New > Script Package
スクリプト名の指定
© 2015 IBM Corporation
30
[参考] スクリプト・パッケージの開発 4/7
n  スクリプト定義ファイル(cbscript.json)内容の指定
スクリプト・パッケージ名指定
スクリプト・パッケージ 展開先
環境変数
実⾏コマンド
実⾏コマンド引数
実⾏タイミング
スクリプトログ出⼒先
OSタイプ
© 2015 IBM Corporation
31
詳細は http://www-01.ibm.com/support/knowledgecenter/?lang=ja#!/SSCR9A_2.1.0/doc/iwd/pcr_cbscript.html
[参考] スクリプト・パッケージの開発 5/7
n  (オプション) 拡張定義ファイル(extendedAttriubtes.json)の指定
Enviroment Only:
環境変数の値を VM内のファ
イルに保管するか否か
デフォルトfalse / 推奨true
Save Environment
Variables:
環境変数の値を永続化。
後続実⾏時も同じ値が
利⽤される
インスタンス管理画⾯に登録するリンク
© 2015 IBM Corporation
詳細は http://www-01.ibm.com/support/knowledgecenter/?lang=ja#!/SSCR9A_2.1.0/doc/iwd/pcr_extendattr.html
32
[参考] スクリプト・パッケージの開発 6/7
n  スクリプトの開発
l  New > File で、スクリプト名を指定して作成
n  スクリプト⾃体は通常通り開発
© 2015 IBM Corporation
33
[参考] スクリプト・パッケージの開発 7/7
n  スクリプト・パッケージのビルド(zip化)
l  スクリプト・パッケージを選択して、右クリック
l  IBM Plug-in Toolkit > Build を選択
n  スクリプト・パッケージの PureAppへの登録
l  スクリプト・パッケージを選択して、右クリック
正常にビルドされると
exportディレクトリに
zipファイルが作成される
l  IBM Plug-in Toolkit > Install/Update to Test Environment を選択
© 2015 IBM Corporation
34
2) ソフトウェア・コンポーネント
n  ミドルウェアの導⼊・設定、ライフサイクル管理
n  ライフサイクルに応じて、必要なコードを実装
l  ライフサイクル・スクリプトは pythonで記述(OS依存性を低減
• 
pythonから シェルや製品コマンドを呼ぶことは可能
l  パターン・ビルダーで定義させる変数や、
他コンポーネントにexposeするパラメータも定義可能
SWコンポーネント
プログラミング・モデル
install
configure
start
stop
・storehouse や Installation Manager、
yumを利⽤して製品イメージのダウンロード
と初期導⼊
・製品の構成作業
・OS内ファイアウォールのオープン
・製品の起動処理
・ステータスの変更
・製品の停⽌処理
© 2015 IBM Corporation
35
ソフトウェア・コンポーネント開発の⼿順
1
枠
組
み
の
定
義
開
発
・
実
装
2
3
4
5
6
ビ
ル
ド
・
検
証
7
8
36
ソフトウェア・コンポーネント
プロジェクトの作成
ソフトウェア・パッケージ
(パート)の設定
ソフトウェア・コンポーネントの設定
ライフサイクル・スクリプトの編集
運⽤操作の設定
ソフトウェア・コンポーネントのプロジェクトを作成する
その際、⾃動的にプロジェクトに必要な定義の枠組みが⽣成される
ソフトウェア・コンポーネントに含まれる パッケージ情報を設定する
その際、前提とするパターン・タイプを指定。
パッケージ名や含まれるソフトウェア、前提条件などの情報を記載
☆ 本項⽬にてconfig.jsonファイルへの記載が実施される。
パターン・ビルダー画⾯で、ユーザーが操作/指定するコンポーネン
およびプロパティを記載する。
PureAppへのアップロード時に本項⽬がプロパティに表⽰される。
☆ 本項⽬にてmetadata.jsonファイルへの記載が実施される。
ソフトウェア・コンポーネントの構成要素であるライフサイクル・
スクリプトを編集し、それぞれで実施したい内容を記載する。
デプロイした仮想マシンに対し、ミドルウェアの構成変更などの
操作を⾃動化し、メニュー化したい場合に設定する。(オプション)
☆ 本項⽬にてoperation.jsonファイルへの記載が実施される。
ソフトウェア・コンポーネント
のビルド
PureAppへアップロードするために上記2ファイルを.tgz形式で圧縮
しアウトプットする。
PureAppへのアップロード
作成したソフトウェア・コンポーネントをPureApp上へアップし正
しく認識されていることを確認する。
パターンへの組込み、検証
導⼊されたソフトウェア・コンポーネントを、
仮想システム・パターンに組込み稼働検証を実施する© 2015 IBM Corporation
ソフトウェア・コンポーネントのプロジェクト構成
PDK 開発環境ライブラリ
ビルド後に⽣成される
PureApplicationに
導⼊可能なイメージ
SWコンポーネント定義ファイル
(metadata.json)
SWコンポーネントの定義
SWコンポーネント運⽤定義ファイル
(operations.json)
SWコンポーネントの実装
ライフサイクル・スクリプト
開発のメイン部分
SWパッケージの定義
SWパッケージ定義ファイル
(config.json)
© 2015 IBM Corporation
37
[参考] ソフトウェア・コンポーネントの開発 1/8
n  SW Component Projectの作成
Software Component Projectの作成
configure software package をクリック
Software Component Project名を指定
スペース、ハイフン は利⽤できない プロジェクトの枠組みが
⾃動⽣成される
overviewを開く
© 2015 IBM Corporation
38
[参考] ソフトウェア・コンポーネントの開発 2/8
n  Packagesの作成: config.jsonの定義①
l  パッケージ⼤枠の定義(パッケージ名、パターン・タイプ、部品となるイメージ)
パターン・タイプは そのままでよい
Artifacts(パッケージに組込む部品)
・PureApp管理ノード上の Storehouse
(内部レポジトリ)に配置される
・MW導⼊イメージなどを登録
製品イメージ・ファイルへのパス
Storehouse上のパス
Plug-in Parameters
・パッケージをまたがって参照される環境変数
39
IM Artifacts
・Installation Managerを利⽤して導⼊するIBM製品
・PureApp内のInstallation Managerに登録される
© 2015 IBM Corporation
[参考] ソフトウェア・コンポーネントの開発 2/8
n  Packagesの作成: config.jsonの定義②
l  個別パッケージ(パート)の詳細定義(製品イメージ適⽤の制約を指定)
Image Requirements
・製品イメージ実⾏上の制約を設定
OSや必要最低リソースなど
②各種パッケージ詳細情報を定義
Dependent Products
・稼働の前提となる他製品(あれば)
Package Provides
・このパッケージで提供されるソフトウェア
を登録
①パッケージを選択
・1つ⽬はSWコンポーネント名から⾃動⽣成される
③パッケージ内で利⽤する環境変数を定義
© 2015 IBM Corporation
40
[参考] ソフトウェア・コンポーネントの開発 3/8
n  SWコンポーネントを定義
Label
l  パターン・ビルダーで表⽰・設定させる内容を定義
② ソフトウェア・コンポーネント情報を指定
ID: 定義ファイル上で利⽤されるコンポーネント名
Label:アイコン上に表⽰されるコンポーネント名
Extends: PART(固定値)
Image:詳細画⾯で表⽰されるアイコン
① Addをクリックして新規作成
Thumbnail:メニュー内で表⽰されるアイコン
③ ソフトウェア・コンポーネント各種定義
Attributes:
・パターン・ビルダーで指定させる属性
Console Link:
・インスタンス・ページに登録するリンク(製品管理画⾯など)
・別コンポーネントから参照可能にしたい場合
“Export as output…” をクリック
Required Package:
・Package:Software Packageの中で利⽤する packageを指定
・License:トラッキングに利⽤するためのライセンス情報を指定
Outputs:
41
・別コンポーネントから参照可能にしたい値
・Attributesで変更させるものでなくてもOK
© 2015 IBM Corporation
[参考] ソフトウェア・コンポーネントの開発 4/8
n  ライフサイクル・スクリプトの開発
l  VMのライフサイクルに合わせて、製品の導⼊・構成をpythonで実装
l  PureApp内部エージェント(maestro)の提供するAPIも利⽤可能
install.py
・storehouse や Installation Manager、
yumを利⽤して製品イメージのダウンロード
と初期導⼊
configure.py
・製品の構成作業
・OS内ファイアウォールのオープン
start.py
・製品の起動処理
stop.py
・製品の停⽌処理
・ステータスの変更
ライフサイクル・スクリプト開発の詳細については、製品マニュアルをご確認ください
http://www-01.ibm.com/support/knowledgecenter/?lang=ja#!/SSCR9A_2.1.0/doc/iwd/pgt_usecustplugin.html
© 2015 IBM Corporation
42
[参考] ソフトウェア・コンポーネントの開発 4/8
n  maestro のAPI
l  パターン・デプロイメント・エンジンが提供する機能
l  ドキュメントは PDKの docsディレクトリに存在
© 2015 IBM Corporation
43
[参考]ライフサイクル・スクリプト install.py サンプル
#!/usr/bin/python
# -*- coding: utf-8 -*import logging
import maestro
import os
logger = logging.getLogger("ApacheTomcat_SWComponent/install.py")
## Fetch Patrameters -----------------------------------------------# Package Parameter
imagefile = maestro.packages['APACHETOMCAT_SWCOMPONENT'][0]['imagefile_name']
storehousePath = maestro.packages['APACHETOMCAT_SWCOMPONENT'][0]['storehouse_path']
# Component Parameter, which can be specified or changed during deployed
installPath = maestro.parms["INSTALL_PATH"]
tomcatPort = maestro.parms["TOMCAT_PORT"]
パッケージ・パラメータの取得
・pakckageパラメータは、パッケージごとの定数
コンポーネント・パラメータの取得
・componentパラメータは、ユーザーが
デプロイ時に値を指定できる変数
## Download middleware image from the storehouse to tempolary directory -----------------------------------------------# join PureAS external url and file image path
import urlparse
installerUrl = urlparse.urljoin(maestro.filesurl, storehousePath)
PureApp内のレポジトリ storehouseから
# download to temporary directory
製品イメージをダウンロード
downloadPath = os.path.join("/tmp",imagefile)
maestro.download(installerUrl, downloadPath)
## Install Tomcat -----------------------------------------------# unzip to install path
import zipfile
with zipfile.ZipFile(downloadPath, "r") as zfile:
zfile.extractall(installPath)
Tomcatの導⼊(zipの展開)
# Set TomcatHome as a Role Attribute for later use
imagefilenamewithoutextension = imagefile.rstrip('.zip')
tomcatHome = os.path.join(installPath,imagefilenamewithoutextension)
maestro.role['TOMCAT_HOME'] = tomcatHome
導⼊パスを、後続のスクリプトで利⽤できるよう登録
# change permission in bin directory
import glob
import stat
導⼊した製品のパーミッションを設定
binPath = os.path.join(tomcatHome, 'bin','*.sh')
files = glob.glob(binPath)
for file in files:
os.chmod(file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IROTH)
logger.debug(file)
© 2015 IBM Corporation
44
[参考]ライフサイクル・スクリプト configure.py サンプル
#!/usr/bin/python
# -*- coding: utf-8 -*import logging
import maestro
import os
logger = logging.getLogger("ApacheTomcat_SWComponent/configure.py")
## Fetch Patrameters -----------------------------------------------# Component Parameter, which can be specified or changed during deployed
tomcatPort = maestro.parms["TOMCAT_PORT"]
tomcatHome = maestro.role['TOMCAT_HOME']
パラメータの取得
## Configure server.xml when necessary ----------------------------------------------構成ファイルの編集(略)
## Open Firewall -----------------------------------------------logger.info("Open firewall port : "+ str(tomcatPort))
maestro.firewall.open_tcpin(dport=tomcatPort)
maestro.firewall.open_tcpout(dport=tomcatPort)
import time
time.sleep(60)
OSファイアウォールのオープン
## execute Version.sh -----------------------------------------------# Version.shの実行
version_sh = os.path.join(tomcatHome, 'bin', 'version.sh')
logger.debug(version_sh)
rc = maestro.trace_call(logger, version_sh)
maestro.check_status(rc, 'Failed while executing %s' % version_sh)
© 2015 IBM Corporation
45
[参考]ライフサイクル・スクリプト start.py & stop.py サンプル
#!/usr/bin/python
# -*- coding: utf-8 -*import logging
import maestro
import os
logger = logging.getLogger("ApacheTomcat_SWComponent/start.py")
## Fetch Patrameters -----------------------------------------------tomcatHome = maestro.role['TOMCAT_HOME']
パラメータの取得
## Start Tomcat ## Fetch Patrameters -----------------------------------------------# Execute startup.sh
製品提供 起動シェルの実⾏
logger.info("Start Tomcat.")
startup_sh = os.path.join(tomcatHome, 'bin', 'startup.sh')
rc = maestro.trace_call(logger, startup_sh)
maestro.check_status(rc, 'Failed while executing %s' % startup_sh)
#!/usr/bin/python
# -*- coding: utf-8 -*# Set Status -----------------------------------------------import logging
maestro.role_status = 'RUNNING'
import maestro
import os
logger = logging.getLogger("ApacheTomcat_SWComponent/start.py")
ステータスを「実⾏中」に変更
## Fetch Patrameters -----------------------------------------------tomcatHome = maestro.role['TOMCAT_HOME']
## Start Tomcat ## Fetch Patrameters
-----------------------------------------------# Execute startup.sh
logger.info("Stop Tomcat.")
製品提供 停⽌シェルの実⾏
shutdown_sh = os.path.join(tomcatHome, 'bin', 'shutdown.sh')
rc = maestro.trace_call(logger, shutdown_sh)
maestro.check_status(rc, 'Failed while executing %s' %
shutdown_sh))
© 2015 IBM Corporation
46
[参考] ソフトウェア・コンポーネントの開発 6/8
n  ソフトウェア・コンポーネントのビルド
l  Build
スクリプト・パッケージのビルド
l  Build with Source
Javaソースコードがある場合に、Javaソースコード
含めてビルド
l  Build with Binary
バイナリー・ファイル(製品イメージ)を含めて
ビルド。初回に製品イメージをstorehouseに
アップロードする際、および製品イメージを更新する
際に指定
ソフトウェア・コンポーネントの
プロジェクトを選択して右クリック
© 2015 IBM Corporation
47
ビルドの正常終了を確認
[参考] ソフトウェア・コンポーネントの開発 7/8
n  ビルドされたソフトウェア・コンポーネントのアップロード
Install/Update to Test Environment を選択
ソフトウェア・コンポーネントの
コンソールで正常終了を確認
プロジェクトを選択して右クリック
PureApplicationコンソールを
PureApplicationコンソールを
カタログ > コンポーネント定義と開き、
「仮想システム・パターン・タイプ」の下に、
ソフトウェア・コンポーネントが定義されていることを確認
システム> Storehouseブラウザーと開き、
admin/file以下の指定したパスに、
製品イメージが登録されたことを確認
© 2015 IBM Corporation
48
[参考] ソフトウェア・コンポーネントの開発 8/8
n  パターンへの組込みとデプロイ、稼働検証、問題判別
実際にデプロイして確認
n 
OSイメージに SWコンポーネントを関連付け
指定したSWコンポーネント・パラメータが
表⽰されているか確認
エラー・メッセージを確認し、スクリプトを
修正、再度ビルドして、
Install/Update to Test Environment を実⾏
エラーがあったコンポーネントのログを確認
49
© 2015 IBM Corporation
[参考] ソフトウェア・コンポーネントの開発 8/8
n  IBM Workload Plugin Runtime パースペクティブ
n  実際にデプロイされたVMインスタンスに接続して、ログを確認することも可能
Add new VMをクリック
PureAppへの接続情報
稼働確認したいVMを選択
エラーとなったコンポンーネントの確認が可能
© 2015 IBM Corporation
50
[参考] ソフトウェア・コンポーネントの開発 8/8
n  デプロイされたインスタンスのリンクの確認
© 2015 IBM Corporation
51
3) 緊急フィックス
n  修正リリース⽤のパッケージ
l  緊急フィックスの適⽤ターゲットを指定
• 
• 
OSイメージ
プラグイン(SWコンポーネント)
l  パッケージング
• 
• 
• 
修正適⽤シェル本体
その他シェル実⾏に必要なファイル
(修正モジュール、定義ファイルなど)
service.xml
n  2つのタイミング
l  パターンへの組込み
l  稼働済みインスタンスへの適⽤
© 2015 IBM Corporation
52
パターン開発 と DevOpsツール の連携
© 2015 IBM Corporation
53
PureApplication における DevOps環境例 [IBM構成]
ビジネス・
オーナー
基盤担当者
運⽤担当者
アプリケーション開発者
+ PDK
開発
Rational
Requirement
Composer
要求管理
ソースコード、
構成ファイル、
環境定義ファイルの登録
Rational
Application Developer
パターン・ビルダー
Rational
Team Concert
アプリケーションのビルド
スクリプト・
パッケージ管理
基盤定義ファイルの
登録・管理
改善
IBM UrbanCode Deploy
デプロイ
パターンの
デプロイ命令
EAR
WAR
JAR
開発
Rational
Test Workbench
テスト⾃動化
ステージング
本番
© 2015 IBM Corporation
54
PureApplication における DevOps環境例 [OSS構成]
ビジネス・
オーナー
基盤担当者
運⽤担当者
アプリケーション開発者
要求管理・問題管理
+ PDK
開発
ソースコード、
構成ファイル、
環境定義ファイルの登録
スクリプト・
パッケージ管理
基盤定義ファイルの
登録・管理
パターン・ビルダー
SubVersion
ソース・レポジトリ
改善
パターンの
デプロイ命令
アプリケーションのビルド
EAR
WAR
55
JAR
開発
デプロイ
ステージング
本番
© 2015 IBM Corporation
Jenkins と PureApplicationの 連携
n  パターンのデプロイは、フリー・スタイル・プロジェクトで定義
l  「ビルドのパラメータ化」を利用し、実行時に必要な情報を指定
デプロイのための認証情報、
パターン名、
パターンのパラーメタetc
© 2015 IBM Corporation
56
パターン・デプロイ・ジョブの例
l  pure.cli を利用して、PureApplicationへのデプロイを定義
pure.cli が存在しなければ、
ダウンロードし展開
受け取った引数を利用して、パターン・デプロイを実施
デプロイした インスタンスが、
“LAUNCHING” から “RUNNING” になるのと待機
それ以外はエラーとして処理
© 2015 IBM Corporation
57
[参考] パターン・デプロイ・コマンド サンプル
./pure.cli/bin/pure -h 192.168.255.100 -u ${UserName} -p ${Password} -c
'vsyspatternid=deployer.virtualsystempatterns["'${PatternName}'"][0].app_id'
-c 'print vsyspatternid'
-c 'srcpattern=deployer.virtualsystempatterns.get(vsyspatternid)'
-c 'env=deployer.environmentprofiles[0]'
-c 'cloud=env.clouds.keys()[0]'
-c 'ipgroup=env.clouds[cloud].ipgroups.keys()[0]'
-c 'deployOptions = { "environment_profile" : env, "cloud_group": cloud, "ip_group": ipgroup,
"ip_version": "IPv4" }ʼ
-c 'vsys = srcpattern.deploy("'${InstanceName}'", deployOptions)'
© 2015 IBM Corporation
58
ビルドジョブの実行
l  パラメータ付きビルドで、パターンのデプロイを実行
l  コンソール出力
より詳細な情報は、
プロジェクト > ワークスペースを
開き、pure.cli のログで確認できる
© 2015 IBM Corporation
59
本日のまとめ
© 2015 IBM Corporation
60
本⽇のまとめ
n  基盤構築は「ソフトウェア開発」
l 
l 
l 
部品の標準化・共通化・ライブラリ化
SCM(ソースコード管理システム)を利用して、バージョン付けして管理する
システム基盤を、ソフトウェア開発と同様、継続的に進化する環境と認識する
コード実⾏による
均質な作業と実⾏結果
⼿作業による
再現性のない作業
(の繰り返し)
⼤量のドキュメント
・作業⼿順書の整備
短時間で
確実なアウトプット
協業いただけるビジネス・パートナー様を探しています
u 
u 
PureApplication Software環境の導⼊構築
パターンの開発
© 2015 IBM Corporation
61
製品資料
n  PureApplication コミュニティー・ページ
• 
日本語で PureApplicationの技術情報を提供
http://ibm.biz/PureAppJpn
n  製品マニュアル
•  PureApplication System
http://www-01.ibm.com/support/knowledgecenter/?lang=ja#!/SSCR9A/welcome
•  PureApplication Service on Softalayer
http://www-01.ibm.com/support/knowledgecenter/?lang=ja#!/SSNS6R/welcome
•  PureApplication Software
http://www-01.ibm.com/support/knowledgecenter/?lang=ja#!/SSL5ES/welcome
n  PureApplication採用に関するご相談は、以下までお問い合わせください。
(障害対応窓口ではありません)
☎電話番号: 0120-550-210
(識別コード 109HE03W)
Webからもお問い合わせいただけます。
http://www.ibm.com/software/jp/info/pureapplication/
© 2015 IBM Corporation
62
Fly UP