WAS Liberty+DevOpsツールで実現する インフラ構築自動化...

84
© 2015 IBM Corporation セッション番号 . セッションタイトル WAS Liberty+DevOps ツールで実現する インフラ構築自動化ガイド 1

Transcript of WAS Liberty+DevOpsツールで実現する インフラ構築自動化...

Page 1: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

セッション番号. セッションタイトル

WAS Liberty+DevOpsツールで実現する

インフラ構築自動化ガイド

1

Page 2: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

目次

1. 新しいシステム構築・運用

2. 自動化ツールを使用したLibertyインフラ構築・運用

1. Libertyプロファイル概要

2. システムの構築・運用フロー

3. 自動化ツールを使用したLiberty運用

4. 【参考】各種自動化ツールの紹介

3. Libertyプロファイルとツールの連携

1. はじめに

2. 開発~ソース管理

3. ビルド

4. デプロイ

5. テスト

4. 参考資料一覧

2

Page 3: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

1. 新しいシステム構築・運用

3

Page 4: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

近年のシステム運用の潮流

従来のSystems of RecordからSystems of Engagementへ

フォーカスするアプリケーションのタイプが変わるとともにインフラのあり方も変化

Systems of Engagement and The Future of Enterprise IT- Geoffrey Moore• But these systems of record are no longer a source of competitive differentiation

for organizations. They are a necessary condition of doing business.

• This means they have to focus more resources on their core businesses, core competences, and core differentiation.

• What will enable this transformation are Systems of Engagement that will overlay and complement our deep investments in systems of record.

4

1. ビジネス・ニーズに即応

2. スピーディーな機能追加・修正

1. インフラ の状態 を コードとして記述 ⇒ 自動化

2. 自動化 の恩恵 により⇒ インフラは都度作り直す / 変更を加えない普遍・不変のインフラ

DevOps

Immutable Infrastructure

Infrastructure as Code

Page 5: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

イノベーションのスピードに合わせたシステム開発

開発手法:アジャイル開発、DevOps

必要な機能から実装して小規模な開発を反復

開発と運用を一体化して実施

アプリケーションの側面

機能毎にアプリケーションを実装

• マイクロサービス・アーキテクチャー

サービスの組み合わせが前提

• 変更に強くテストは最小単位での実施

インフラの側面

クラウド環境の利用

最小構成でのサービス開始

インフラ構築の自動化

• Infrastructure as code

• インフラ構築をコード化して何度も同じ構成を実施

• Immutable Infrastructure

• 一度作成した環境に手を入れず常に新しい環境を作成

5

開発 ビルド テスト デプロイ 本番

イテレーションのサイクルが速いスモール・スタート開発プロジェクト

週単位のリリース変わり続けるシステム

Page 6: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

つまり・・・「新しいシステム構築・運用」の要素としては・・・

• インフラ構築も自動化

• 自動化のためにはインフラ構成や運用をコード化しておく必要性

• そして・・・冪等性の獲得ができる(再現性のある)インフラ構築が可能

• システムの在り方が「業務効率化」から「新しい価値創造」へシフト

• より迅速にビジネスニーズをシステムに反映させる必要性

• アプリケーションへの機能追加・改修とそれに伴うインフラの変更をいかに効率よく行えるか?

DevOps

Infrastructure as Code

• 「一度デプロイしたインフラは変えない」「コードを修正して再度デプロイして作り直すインフラ」

• 再現可能なインフラ構築によって再現可能なシステムを実現(インフラも含めたアプリ稼動が再現可能)

Immutable Infrastructure

• 再現可能なシステム ⇒ テストが容易

• 開発~テスト~本番環境を一連の処理として実施可能(本番リリースへの過剰な神経や配慮は不要)

結果として・・・

6

Page 7: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

そして・・・「新しいシステム構築・運用」への1つの回答

Liberty+α で実現する新しいシステム構築・運用 コード化

• インフラもコードとして扱えるように・・・・

• Libertyプロファイル ではサーバー構成を1つのファイルに記述(ファイル分割も可能)

自動化

• 各種自動化ツールが充実化

• IBM製品:Rational 製品群(UrbanCode、Test Workbench・・・)

• OSS:Chef、Maven、Jenkins・・・・

7

このガイドでは・・・

Libertyプロファイルと自動化ツールを組み合わせて

新しい時代の新しいシステム運用を実現するためのシステム構築例を紹介

Page 8: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

2. 自動化ツールを使用したLibertyインフラ構築・運用

8

1. Libertyプロファイル概要2. システムの構築・運用フロー3. 自動化ツールを使用したLiberty運用

Page 9: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

Libertyプロファイルの特長

WAS V8.5.5.x Liberty & WDT

①Java EE 7対応 & 新機能提供Java EE 7 標準に準拠したアプリを完全サポートJAX-WS, JAX-RS, JMSもサポート新機能も継続的に提供

③Unzipによる導入とデプロイパッケージをしたサーバー + アプリ + 構成情報をUnzipでデプロイ可能

②軽量ランタイムメモリー使用量が小: 60MB程度~ディスク使用量も100MB以下起動が速い:5秒程度

⑦様々な環境で稼動オンプレ、クラウド(IaaS、PaaS)で稼動可能

⑤統合ツール(WDT)高機能なEclipse用の連携ツールを無償で提供Eclipseから簡単に使用可能

⑥自動化ツールとの連携多くのOSSツールに無償でプラグインを提供

④簡単な構成最低限必要な構成ファイルはserver.xmlひとつだけデフォルトベースで簡単構成

9

⑧構成の動的変更構成変更やアプリケーションの更新は再起動なしに反映

Page 10: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

10

Libertyプロファイルのパッケージング機能概要

WLP

Server

Application

パッケージング

server.zip / server.jar

SDK1

WLP

Server

Application

SDK2

WLP

Server

Application

WDTのパッケージ化ウィザードを利用した場合

[例]

serverコマンドのpackageアクションを利用した場合

[例]

・同一マシンの別ロケーション

・別マシン

・別プラットフォーム などに展開可能

# <WLP>/bin/server package <servername> --archive=server.zip

WLPServerApplication

アプリケーション情報

サーバー構成

ランタイム環境

ファイル名に「.jar」を付けることで

Jar形式のパッケージングも可能

サーバー単位のためLiberty Collective 環境全体のPackageは不可

Page 11: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

Libertyプロファイルによる Immutable Infrastructure の実現

Libertyプロファイルのパッケージング機能を使った Immutable Infrastructure

デプ

ロイ

作っては壊すシステムへ

OS#1

Java SDK

Liberty Profile

サーバー構成アプリ

①インストール

②サーバー構成

③デプロイ

OS#2

Java SDK

Liberty Profile

サーバー構成アプリ

zipファイルzipファイルzipファイル

④パッケージ ⑤展開

デプ

ロイ

デプ

ロイ

展開!

展開!

展開!常に新たな環境を作り直すことで変化に強いシステム環境を維持する

11

Page 12: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

Libertyプロファイルの各種自動化ツールとの連携・親和性

各種CI・Buildツールとの連携機能を提供

UrbanCode連携プラグインを提供 https://developer.ibm.com/urbancode/plugin/websphere-liberty-ibmucd/

OSSツールは連携機能をGitHubで公開

継続的インテグレーション: UrbanCode,Jenkins

ビルドツール: Ant、Maven、gradle

構成管理ツール:CHEF、Puppet

https://github.com/wasdev

12

Page 13: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

2. 自動化ツールを使用したLibertyインフラ構築・運用

13

1. Libertyプロファイル概要2. システムの構築・運用フロー3. 自動化ツールを使用したLiberty運用

Page 14: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

フェーズで見るシステムの構築・運用フロー

14

開発環境

テスト

本番環境

チーム開発 ソース管理 ビルド パッケージ管理 デプロイ

検証環境Liberty Profileサーバー構成

アプリ

構成ファイル編集 構成ファイル管理

バージョン管理

パッケージ作成

(zip)

パッケージ管理

バージョン管理各環境へのデプロイ デプロイ後のテスト

ソース編集ソース管理

バージョン管理

パッケージ作成

(war/jar/ear)

アプリケーションのみの開発/運用フロー

インフラ(Liberty)のみの開発/運用フロー

共通の開発/運用フロー

(例)

単体

テスト

(例)

統合

テスト

Page 15: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

トポロジーで見るシステムの構築・運用フロー

15

各環境サーバー

開発環境

本番環境

検証環境

ビルドサーバー

Liberty Profileサーバー構成

アプリ

開発端末 ソース管理/

パッケージ管理サーバー

管理サーバー管理端末

ライフサイクル全体管理

デプロイ

デプロイ

デプロイ

チーム開発 ソース / 構成ファイル / パッケージ管理

ビルド / テスト デプロイ後のテスト

Page 16: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

2. 自動化ツールを使用したLibertyインフラ構築・運用

16

1. Libertyプロファイル概要2. システムの構築・運用フロー3. 自動化ツールを使用したLiberty運用

Page 17: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

各フェーズにおいて利用可能な自動化ツール

17

フェーズ IBMツール OSSツール(オープンソース・ソフトウェア)

チーム開発

IBM Rational Team ConcertGit

Subversionソース管理パッケージ管理

ビルド Rational Build ForgeAnt

Mavengradle

デプロイIBM UrbanCode Deploy

IBM PureApplication

PuppetChef

Jenkinsライフサイクル

全体管理

テストIBM Rational Quality ManagerIBM Rational Test Workbench

IBM Rational Test Virtualization Server

JUnitArquillian

Page 18: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

自動化ツールを使用したLiberty運用における検討ポイント(1/4)

デプロイする単位としてのどのようなパターンを想定しておくか?

サーバー構成ファイル(server.xml等)のみをデプロイ

サーバー構成ファイルとアプリケーションをデプロイ

Libertyランタイムやアプリケーションをまとめたパッケージ(zip)をデプロイ(構成によりJDKを含めることも可能)

Libertyランタイムとアプリケーションを別々にデプロイ

18

ソース管理/パッケージ管理サーバー デプロイ

Java SDK

Liberty Profile

サーバー構成

アプリサーバー

構成ファイル

ソース管理/パッケージ管理サーバー デプロイ

Java SDK

Liberty Profile

サーバー構成

アプリ

ソース管理/パッケージ管理サーバー デプロイ

Java SDK

Liberty Profile

サーバー構成

アプリ

パッケージ

ソース管理/パッケージ管理サーバー

Java SDK

Liberty Profile

サーバー構成

アプリアプリケーション

パッケージ

アプリケーション

サーバー

構成ファイル

Page 19: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

自動化ツールを使用したLiberty運用における検討ポイント(2/4)

環境固有の構成(DB接続先等)を反映する方法としてどのようなパターンを想定しておくか?

環境固有の構成ファイルと環境共通となる構成ファイルを一緒にパッケージして環境毎にまとめてデプロイ

各環境毎にIncludeされる構成ファイルを作成して共通部分パッケージのデプロイ後に別途デプロイ

19

ソース管理/パッケージ管理サーバー

開発環境

本番環境

デプロイ

デプロイ

ソース管理/パッケージ管理サーバー

開発環境

本番環境

開発環境用

Include構成ファイル

開発環境用

Include構成ファイル

デプロイ

デプロイ

共通構成ファイル開発環境用

Include構成ファイル

共通構成ファイル本番環境用

Include構成ファイル

共通構成ファイル開発環境用

Include構成ファイル

共通構成ファイル本番環境用

Include構成ファイル

共通構成ファイルデプロイ

共通構成ファイル開発環境用

Include構成ファイル

共通構成ファイル本番環境用

Include構成ファイル

Page 20: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

自動化ツールを使用したLiberty運用における検討ポイント(3/4)

フェーズ全体の中でどこまでのスコープを一連のジョブで実行するか?

ビルドサーバー上でビルド後にテスト実行して成功したら開発環境にデプロイ(下図赤色の矢印)

上記に加えて開発環境と検証環境へのデプロイとテスト実行に成功したら本番環境にデプロイ(下図緑色の矢印)

20

各環境サーバー

開発環境

本番環境

検証環境

ビルドサーバー

Liberty Profileサーバー構成

アプリ

開発端末ソース管理/

パッケージ管理サーバー

①ビルド&テスト①ビルド&テスト

③検証環境への

デプロイ&テスト

④本番環境への

デプロイ

②開発環境へのデプロイ

②開発環境への

デプロイ&テスト

Page 21: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

自動化ツールを使用したLiberty運用における検討ポイント(4/4)

その他の検討ポイント

どのツールを組み合わせて使用するか?

どのようなトポロジーを構成するか?

どこまで自動化してどこから手動運用とするか?

自動化の中で承認プロセスはどうするか?

誰が各プロセスの主体となって処理をキックするか?

(コード修正の自動検出, 各開発者, リリース担当者 etc)

どのようなリリースを対象とするか?(通常リリース, 緊急リリース, Fix適用 etc)

各サーバー上でどこまでのテストを実施するか?

一連ジョブのチェックポイントやエラー時対応はどうするか?

各ツール自体のメンテナンスや可用性の確保をどうするか?

などなど

21

Page 22: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

自動化ツールを使用したLiberty運用パターン例

この章では次ページより下記運用パターンを紹介

①IBMツール構成

②OSSツール構成

③最小トポロジー構成

22

Page 23: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

管理端末

自動化ツールを使用したLiberty運用パターン例 ①IBMツール構成

各環境サーバー

開発環境

本番環境

検証環境

ビルドサーバー

Liberty Profileサーバー構成

アプリ

ソース管理/

パッケージ管理サーバー

管理サーバー

バージョン指定してビルド実行

パッケージ指定して検証環境にデプロイ

統合テスト実行

Rational Team

Concert

Maven

UrbanCode Client

UrbanCode Client

Rational Test Virtualization Server

パッケージ指定して本番環境にデプロイ

UrbanCode Client

UrbanCode Client

Rational Test Virtualization Server

ビルドしたパッケージをソース管理/パッケージ管理サーバーに登録

データの流れ

処理の流れ

UrbanCode

Server

ジョブ実行

検証環境でのテスト後に本番環境にデプロイするフロー例

A-①

D

B

A-② A-③C

下記ジョブ実行

サーバー構成ファイルの

バージョンを指定してビルド

検証環境にデプロイ

検証環境で統合テスト実行

本番環境にデプロイ

指定バージョンのサーバー構成ファイルを取得してビルド

A

B

C

D

成功したら

成功したら

成功したら

23

Page 24: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

管理端末

自動化ツールを使用したLiberty運用パターン例 ②OSSツール構成

各環境サーバー

開発環境

本番環境

検証環境

ビルドサーバー

Liberty Profileサーバー構成

アプリ

ソース管理/

パッケージ管理サーバー

管理サーバー

下記ジョブ実行

サーバー構成ファイルの

バージョンを指定してビルド

検証環境にデプロイ

検証環境で統合テスト実行

本番環境にデプロイ バージョン指定してビルド実行

指定バージョンのサーバー構成ファイルを取得してビルド

パッケージ指定して検証環境にデプロイ

統合テスト実行

Git

Maven

Jenkins Agent

Jenkins Agent

パッケージ指定して本番環境にデプロイ

Jenkins Agent

Jenkins Agent

Arquillian

ビルドしたパッケージをソース管理/パッケージ管理サーバーに登録

データの流れ

処理の流れ

Jenkins

Server

ジョブ実行

検証環境でのテスト後に本番環境にデプロイするフロー例

Arquillian

A

B

C

DA-①

A-② A-③

D

B

C

成功したら

成功したら

成功したら

24

Page 25: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

管理端末

自動化ツールを使用したLiberty運用パターン例 ③最小構成トポロジー

各環境サーバー

開発環境

本番環境

Liberty Profileサーバー構成

アプリ

管理/ソース管理/

パッケージ管理/ビルドサーバー

下記ジョブ実行

サーバー構成ファイルの

バージョンを指定してビルド

開発環境にデプロイ

開発環境でテスト実行

本番環境にデプロイ

Git

Maven

Jenkins Agent

Jenkins Agent

Arquillian

データの流れ

処理の流れ

Jenkins

Server

ジョブ実行

JUnit

バージョン指定しビルド実行

A

開発環境にデプロイ

B

テスト実行

本番環境にデプロイ

D

開発環境でのテスト後に本番環境にデプロイするフロー

A

B

C

D

成功したら

成功したら

成功したら

C

25

Page 26: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

3. Libertyプロファイルとツールの連携

26

1. はじめに2. 開発~ソース管理3. ビルド4. デプロイ5. テスト

Page 27: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

はじめに

ここでは、3章で紹介する各サーバー間の相関、および処理の流れについて記述します。

以降の各処理では、この流れに沿って説明します。

各処理の説明にあたって、処理の手順や構成に複数の選択肢が考えられる部分においては、要検討事項として考えられる選択肢、今回の想定を併記する形で記述します

もちろん、それ以外にも構成や使用するツール、前提とする考え方によってより多くの検討パターンが派生すると考えられますが、参考情報として参照ください。

27

Page 28: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

3章で扱うシステムの全体像

28

稼働環境

ビルドサーバー

Liberty Profileサーバー構成

アプリ

ソース管理

管理サーバー

管理 / 開発端末

下記ジョブ実行

A

サーバー構成ファイルのバージョンを指定してビルド

成功したら

B

稼働環境にデプロイ

成功したら

C

ビルドサーバーでテスト実行

バージョン指定してビルド起動

サーバー構成ファイルを取得

Git

Maven

Jenkins Agent

Jenkins Agent

パッケージ指定して稼働環境にデプロイ

ビルドしたパッケージを登録

データの流れ

処理の流れ

ジョブ実行

テスト起動

A-1

A-2 A-4

C

B

Jenkins

Server

Arquillian

テスト

C

B

サーバー構成ファイルを登録

A-3ビルド/パッケージ

Jenkins Agent

Page 29: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

処理全体の流れ

事前作業

サーバー構成ファイルを登録します。

作成したパッケージをターゲットの環境にコピーし、展開します。

Jenkins gitMaven

/Arquillian実行環境端末

サーバー構成ファイルの登録

前サーバー構成ファイルの登録

デプロイジョブの実行デプロイB

ファイルのコピー ファイルのコピー

テストジョブの実行 テストジョブの実行

テスト テスト

テストC

パッケージの展開

自動化されたテストを実行します。

ビルド対象となるファイル群をビルドサーバーにコピーして、ビルド(Libertyパッケージ作成)を行います。

作成したパッケージも、ソース管理の対象としてリポジトリに登録します。

ビルドAビルドジョブの起動

git pull で同期

ビルド/パッケージ

git pull で同期

git pushで同期git pushで同期

ビルドジョブの実行 1

2

3

4

データの流れ

処理の流れ

29

Page 30: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

ディレクトリ構成

ソース/パッケージ管理サーバー(RHEL6)

ホスト名 :scm.ise.com

導入ソフトウェア

• Maven :/opt/Maven/apache-maven-3.3.3/

• git :/opt/git

• Jenkins :/opt/Jenkins/SCM //slave.jarの配置場所

ディレクトリ構成

• git共用リポジトリ

• Mavenプロジェクトリポジトリ :/opt/IBM/Liberty/maven-shared

• Libertyサーバーリポジトリ :/opt/IBM/Liberty/liberty-shared

• gitローカルリポジトリ

• Mavenプロジェクトリポジトリ :/opt/IBM/Liberty/maven

• Libertyサーバーリポジトリ :/opt/IBM/Liberty/build

• Jenkins作業用ディレクトリ :/opt/IBM/Jenkins/SCM/workspace

ビルドサーバー(RHEL6)

ホスト名 :build.ise.com

導入ソフトウェア

• Maven :/opt/Maven/apache-maven-3.3.3/

• git :/opt/git

• Jenkins :/opt/Jenkins/Build //slave.jarの配置場所

ディレクトリ構成

• gitローカルリポジトリ

• Mavenプロジェクトリポジトリ :/opt/IBM/Liberty/maven

• Libertyサーバーリポジトリ :/opt/IBM/Liberty/build

• Jenkins作業用ディレクトリ :/opt/IBM/Jenkins/Build/workspace

30

Page 31: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

ディレクトリ構成

Jenkinsサーバー実行環境(Windows 7)

ホスト名 :jenkins.ise.com

導入ソフトウェア

• Jenkins :下記Libertyプロファイルにjenkins.earをデプロイ

• Libertyプロファイルホームディレクトリ :C:¥IBM¥WebSphere¥LibertyArchive8556/wlp

• Libertyプロファイルサーバー名 :defaultServer

Libertyプロファイルサーバー実行環境(RHEL6)

ホスト名 :production.ise.com

導入ソフトウェア

• Jenkins :/opt/Jenkins/Prod //slave.jarの配置場所

ディレクトリ構成

• Jenkins作業用ディレクトリ :/opt/IBM/Jenkins/Prod/workspace

• Libertyプロファイルホームディレクトリ :/opt/IBM/Liberty/prod/wlp

• Libertyプロファイルサーバー名 :templateServer

31

Page 32: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

3. Libertyプロファイルとツールの連携

32

1. はじめに2. 開発~ソース管理3. ビルド4. デプロイ5. テスト

Page 33: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行すること

その前に・・・ Gitについての基本知識、およびEclipseからgitの操作を行うまでのセットアップ方

法については、別途「git」の資料を参照ください。

ここでは、以下の流れの操作を行うことを想定しています。 開発端末上のEclipseでLibertyプロファイルのサーバー構成を行います。

構成済みファイルをEclipseから直接gitにadd、commit、pushします。

33

Page 34: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

要検討事項! ー git(SCM:Source Code Management)でのLibertyの管理

リポジトリの持ち方 リポジトリの範囲

• wlp全体?

• usrの下?

• サーバー単位?

34

リポジトリの範囲はすなわち版管理、共有の範囲となりますので、冪等性、不変を標榜するImmutable Infrastructureの思想からすると・・・・今回はwlp全体をリポジトリ管理の対象とする事としました。

但し、ランタイムであるJDKなどは1ノード内の複数インスタンスの稼動を考えると、リソース・管理効率の観点から、共用対象から除外した方が良いかも知れません。

今回は・・・

Page 35: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

要検討事項! ー git(SCM)でのLibertyの管理

リポジトリの持ち方 リポジトリの分け方

• 単一のリポジトリでブランチを環境毎にわけるのか?

• リポジトリ自体を環境ごとに分けるのか?

35

今回の構成例ではデプロイ対象がテスト環境1つのみなので実質選択の必要はないのですが、開発・テスト・本番など複数環境管理を行う場合は判断が必要です。

基本的には同一の構成を持ちながら、変更差分の管理を行うことを考えると、1リポジトリ複数ブランチ構成が妥当でしょうか。

もしくは、1ブランチに環境固有ファイルを複数配置して、パッケージ作成時に必要なものを選択するという方式でももちろんOKです。(環境固有部分を別ファイルに書き出して、server.xml でincludeする)

今回は・・・

Page 36: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

【参考】 本当にLibertyプロファイルを丸ごとソース管理するのか?

上記の例では丸ごとaddする流れで記述していますが、ランタイムごとに動的に生成されるものや、テンポラリで使用するもの、キャッシュファイルなどは、あまりソース管理を行う意味がありません。

そこで・・・

gitには特定ファイルをソース管理から除外する機能があります。

• .gitignore ファイルへの除外ルールの記述

• $GIT_DIR/info/excludeファイルへの除外ルールの記述

• https://git-scm.com/docs/gitignore

この機能を利用して、必要ではないファイルやディレクトリをソース管理対象外とする事を検討してください。

例えば、以下のようなファイルは除外対象になると考えられます。

36

/servers/.classCache//servers/.logs//servers/.pid//servers/<SERVER_NAME>/workarea//servers/<SERVER_NAME>/logs/

注!

Page 37: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

要検討事項! ー git でのネーミングルール

ブランチ名などのネーミングルール 端末、SCMサーバー、Jenkinsからのブランチ指定、などサーバーを跨って同じも

のを扱う必要がありますので、特にgit内で使用するブランチなどのネーミングルールは予め決定し周知しておく必要があります。

例えば・・・

• ブランチ切り替え

• git checkout production

37

Page 38: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

事前作業

サーバー構成ファイルを登録します。

作成したパッケージをターゲットの環境にコピーし、展開します。

Jenkins gitMaven

/Arquillian実行環境端末

サーバー構成ファイルの登録

前サーバー構成ファイルの登録

デプロイジョブの実行デプロイB

ファイルのコピー ファイルのコピー

テストジョブの実行 テストジョブの実行

テスト テスト

テストC

パッケージの展開

自動化されたテストを実行します。

ビルド対象となるファイル群をビルドサーバーにコピーして、ビルド(Libertyパッケージ作成)を行います。

作成したパッケージも、ソース管理の対象としてリポジトリに登録します。

ビルドAビルドジョブの起動

git pull で同期

ビルド/パッケージ

git pull で同期

git pushで同期git pushで同期

ビルドジョブの実行 1

2

3

4

データの流れ

処理の流れ

3章での処理全体の流れ

いまココ!

38

Page 39: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

git - 使用方法

ここでは、初期セットアップが完了しているものとして、server.xmlの編集後からの操作の流れを紹介します。

39

Server.xmlの編集と、アプリケーションのデプロイを行っています。

Page 40: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

git - 使用方法

Eclipseでの操作は・・・egit(eclipseのgitプラグイン)で!

40

ここをクリックしてcommitと共用リモートリポジトリへのPUSHを行います。

コミットが完了し、履歴に残っています。

Page 41: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

git - 使用方法

他のクライアントから、commitの内容を確認してみます。

ここでは、ビルドサーバー上のローカルリポジトリで変更が反映されているか確認してみます。

41

[wasadmin@oms94 build]$ git [email protected]'s password:remote: Counting objects: 10, done.remote: Compressing objects: 100% (8/8), done.remote: Total 10 (delta 3), reused 0 (delta 0)Unpacking objects: 100% (10/10), done.From ssh://scm.ise.com/opt/IBM/Liberty/liberty-shared* branch master -> FETCH_HEAD

Updating 77ff68b..d08f488Fast-forwardwlp/usr/servers/templateServer/server.xml | 3 +++wlp/usr/shared/apps/SampleServlet_EAR_v1.0.ear | Bin 0 -> 12288 bytes2 files changed, 3 insertions(+)create mode 100644 wlp/usr/shared/apps/SampleServlet_EAR_v1.0.ear

[wasadmin@oms94 build]$ cat /opt/IBM/Liberty/build/wlp/usr/servers/templateServer/server.xml<?xml version="1.0" encoding="UTF-8"?><server description="new server">

<!-- Enable features --><featureManager>

<feature>webProfile-7.0</feature></featureManager>

<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" --><httpEndpoint id="defaultHttpEndpoint"

httpPort="9080"httpsPort="9443" />

<!-- Added Application 10/26 --><enterpriseApplication location="${shared.app.dir}/SampleServlet_EAR_v1.0.ear" id="Sample"></enterpriseApplication>

git pullコマンドでSCMサーバー上に登録された情報を取得しています。

先ほど編集したserver.xmlとアプリケーションを取得しています!

編集内容が反映されている事を確認できました!

Page 42: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

まとめ

ここまででできた事 ソース管理サーバー上のgit共用リポジトリの設定、開発端末上のgitローカルリ

ポジトリの設定が完了しました。

開発端末上で設定を行ったLibertyプロファイルサーバー構成(server.xml)をcommitしました。

ビルドサーバー上のgitローカルリポジトリでも、開発端末上で行ったLibertyプロファイルサーバー構成を参照することができました。

次は・・・・ 次は、Jenkinsからビルドのタスクを呼び出して、Libertyプロファイルサーバー パッ

ケージを作成します。

42

Page 43: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

3. Libertyプロファイルとツールの連携

43

1. はじめに2. 開発~ソース管理3. ビルド4. デプロイ5. テスト

Page 44: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行すること

ビルドというとアプリケーションをビルドしてEARファイルやWARファイルの生成をする事をイメージされるかと思いますが、ここではビルド済みのアプリケーションを含むLibertyプロファイルパッケージを生成することをビルドと呼ぶことにします。

ここで使用するMavenでは、Libertyプロファイル用のマルチモジュールプロジェクト生成のarchetypeとして、liberty-plugin-archetype が提供されています。これには、以下の処理が含まれています。

シンプルなwebアプリケーションのビルド

Libertyプロファイルサーバーへのデプロイ

Libertyプロファイルサーバー上でのテスト

ここでは、この liberty-plugin-archetype を使用する前提で説明します。

その前に・・・

Mavenについての基本知識、およびMavenのセットアップ方法については、別途「Maven」の資料を参照ください。

44

Page 45: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

前提:Mavenのリポジトリをgitに格納してシェアする

今回のシステムではgit も使用していますので、Maven のリポジトリもgit リポジトリとして登録を行う事とします。

開発端末のEclipseでMavenの設定などを行い、git共用リポジトリ@SCMサーバーに登録し、buildサーバーでのそのプロジェクトを読み込んでビルドを行う、という分散管理の利点を生かす環境を構築します。

45

ビルドサーバー開発端末 ソース管理/

パッケージ管理サーバー

入れる

GUI(Eclipse)で効率的に設定を入れ込みます。

ためる

Git共有リポジトリにmavenの情報も保管します。

使う

Gitの共用リポジトリをcloneすることで、分散環境でも同じイメージを使って作業できます。

Page 46: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

要検討事項! ー ジョブの設定単位

ジョブはどの粒度で設定する? コマンド=ジョブ単位で実行し、処理順序設定で対応する?

機能処理=ジョブ単位で実行し、ジョブステップを細かく区切る?

46

ジョブの実行時に、どの程度の粒度でジョブを分割するか、というのも重要な検討項目です。

あまりに細かい粒度でジョブを分割してしまうと、管理が煩雑になってしまいます。かといってあまりに大きい粒度で設定すると、障害発生時などの対応が不便になります。

おおよその機能処理の塊でジョブを定義し、リトライ等が、し易い単位でジョブを設定しておくのが良さそうです。

今回は・・・

Page 47: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

事前作業

サーバー構成ファイルを登録します。

作成したパッケージをターゲットの環境にコピーし、展開します。

Jenkins gitMaven

/Arquillian実行環境端末

サーバー構成ファイルの登録

前サーバー構成ファイルの登録

デプロイジョブの実行デプロイB

ファイルのコピー ファイルのコピー

テストジョブの実行 テストジョブの実行

テスト テスト

テストC

パッケージの展開

自動化されたテストを実行します。

ビルド対象となるファイル群をビルドサーバーにコピーして、ビルド(Libertyパッケージ作成)を行います。

作成したパッケージも、ソース管理の対象としてリポジトリに登録します。

ビルドAビルドジョブの起動

git pull で同期

ビルド/パッケージ

git pull で同期

git pushで同期git pushで同期

ビルドジョブの実行 1

2

3

4

データの流れ

処理の流れ

3章での処理全体の流れ

いまココ!

47

Page 48: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行すること

ここからは、以下の流れの操作を行うことを想定しています。前ページの作業の流れと合わせてご確認ください。

Jenkinsコンソールから、ビルド作業一式を行うジョブを定義します。

ジョブは、ビルドサーバー上で実行されます。まずは、ビルドサーバー上でgit pullコマンドを実行して、gitの共用リポジトリと同期します。

次に、mavenのLibertyプロファイルプラグインを呼び出し、gitのワークディレクトリ上のLibertyプロファイルディレクトリをパッケージングします。("ビルド"です。)

生成されたパッケージを、git上にadd、commit、pushして共用リポジトリに反映させます。

前述の処理の流れの各ステップと、Jenkinsのプロジェクトの対応は、以下のようになります。

48

1

2

3

4

ビルドジョブの起動

ビルド/パッケージ

git pull で同期

git pushで同期

1

2

3

4

Page 49: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

使用方法 - まずは、ジョブ(プロジェクト)を定義(1/3)

49

git pull で同期 2

実行ノードの指定をしないと、利用可能な何れかのノードで実行されてしまいます。このジョブはビルドサーバー上で実行したいので、"Build"のラベルがつけられたビルドサーバーを指定しています。

(本来はエラーハンドリング処理なども記述すべきですが・・・)実行するコマンドを記述しています。Libertyプロファイルローカルリポジトリにcdして、git pullして最新化しています。

このプロジェクトの正常終了後に実行するプロジェクトを指定しています。

以下は、ジョブ定義変更箇所の抜粋です。

Page 50: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

使用方法 - まずは、ジョブ(プロジェクト)を定義(2/3)

50

同じく、実行ノードの指定をしないと、利用可能な何れかのノードで実行されてしまいます。このジョブはビルドサーバー上で実行したいので、"Build"のラベルがつけられたビルドサーバーを指定しています。

(本来はエラーハンドリング処理なども記述すべきですが・・・)実行するコマンドを記述しています。今回、複数のブランチを利用する想定にはなっていませんが、ここでブランチの選択なども行うとよいでしょう。

ビルドサーバー上のMavenで、Libertyプロファイルサーバーのパッケージを行うゴール、およびpom、引数として渡すプロパティを指定しています。以下のように実行されます。/opt/Maven/apache-maven-3.3.3/bin/mvn -f /opt/IBM/Liberty/maven/pom.xml -DpackageFile=templateServer.jar -DserverHome=/opt/IBM/Liberty/build/wlp/ -DserverName=templateServerliberty:package-server

ビルド/パッケージ 3 以下は、ジョブ定義変更箇所の抜粋です。

Page 51: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

アプリケーションのデプロイは?

ここでは、サンプルアプリケーションが組み込まれているMavenのarchetypeを使用していますのでアプリケーションのデプロイ手順が省略されていますが、本来はここで併せて

アプリケーションのビルド

Libertyパッケージへの組み込み

が必要になります。

51

注!

Page 52: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

使用方法 - まずは、ジョブ(プロジェクト)を定義(3/3)

52

以下は、ジョブ定義変更箇所の抜粋です。

またまた同じく、実行ノードの指定をしないと、利用可能な何れかのノードで実行されてしまいます。このジョブはビルドサーバー上で実行したいので、"Build"のラベルがつけられたビルドサーバーを指定しています。

git pushで同期 4

ここで指定したプロジェクトの正常終了後に、このプロジェクトを実行する、という指定をしています。

(本来はエラーハンドリング処理なども記述すべきですが・・・)実行するコマンドを記述しています。生成されたパッケージ(本環境ではmaven側ディレクトリに生成されます)をaddして、commit(コメントにはJenkinsが生成ビルドのタグを埋め込む様に変数の指定)、pushしています。

Page 53: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

ジョブを実行します。

実行結果!

53

Page 54: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行結果!

54

git pull で同期 2

Git pullの実行結果です。

Git pullではなく、git fetch + merge を使うべき という議論もあるようですが、それはまたの機会に・・・

次のジョブ(プロジェクト)を起動しています。

Page 55: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行結果

55

前のジョブから起動された事がわかります。

Mavenのプロジェクトが実行されています。

次のジョブを起動しています。

ビルド/パッケージ 3

中略

Page 56: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行結果

56

git pushで同期 4

前のジョブから起動された事がわかります。

コミットされました。

Page 57: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

アーカイブの形式はzip?jar?

Unixにおいてはserver packageコマンドでアーカイブする際に、jarを指定した場合とzipを指定した場合では、(unzipコマンドの実装に依存して)解凍時のファイルパーミッションに違いが生じます。

zipの場合はパーミッションが保管されませんので注意が必要です!

57

[wasadmin@oms94 jar]$ java -jar templateServer.jar /work/jar/

Extracting files to /work/jar/wlp

Successfully extracted all product files.

[wasadmin@oms94 jar]$ ls -la /work/jar/wlp/bin/server

-rwxrwxr-x. 1 wasadmin wasadmin 30806 Nov 16 14:55 /work/jar/wlp/bin/server

[wasadmin@oms94 zip]$ unzip templateServer.zip

Archive: templateServer.zip

creating: wlp/

[wasadmin@oms94 jar]$ ls -la /work/zip/wlp/bin/server

-rw-rw-r--. 1 wasadmin wasadmin 30806 Nov 16 14:46 /work/zip/wlp/bin/server

-rw-rw-r--

-rwxrwxr-x

jar

zip

注!

■ダウンロードしたファイルおよびアーカイブを使用した Liberty のインストールとアンインストール

http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ae/twlp_inst.html

Page 58: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

まとめ

ここまででできた事 Jenkinsにてビルドを行うためのジョブ(プロジェクト)の登録を行いました。

実際にビルドジョブの起動によって、以下を実行しています。

• gitリポジトリ内のLibertyプロファイルサーバー構成を参照し、

• MavenのLibertyプロファイルサーバーパッケージゴールを実行して

• 生成されたパッケージファイルを再びgitリポジトリへ登録!

次は・・・・ 次は、Jenkinsからデプロイタスクを呼びだして、稼働環境へのLibertyプロファイ

ルサーバーパッケージの配置と展開を行います。

58

Page 59: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

3. Libertyプロファイルとツールの連携

59

1. はじめに2. 開発~ソース管理3. ビルド4. デプロイ5. テスト

Page 60: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

要検討事項! ー どのようにしてパッケージを配置する?

どのようにしてパッケージを配置する? 生成したパッケージをどのようにしてテスト環境へ配置するか決定する必要がありま

す。

例えば以下のような方法が考えられます。

• ソース管理サーバーからファイル転送プロトコル(scp/sftpなど)で配置する

• テスト環境にもgitクライアントを導入してpullする

• さらには、gitリモート/ローカル 間の通信に使用するプロトコルも選択可能です。• https://git-scm.com/book/ja/v2/Git%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-

%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB

これは、主に各社のセキュリティ標準システムの位置づけなどのセキュリティ要件に基づいて決定する事になります。

今回は、作成したパッケージをgitリポジトリから取り出して、テスト環境へscpにてコピーする、という方法をとることにします。

60

Page 61: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

事前作業

サーバー構成ファイルを登録します。

作成したパッケージをターゲットの環境にコピーし、展開します。

Jenkins gitMaven

/Arquillian実行環境端末

サーバー構成ファイルの登録

前サーバー構成ファイルの登録

デプロイジョブの実行デプロイB

ファイルのコピー ファイルのコピー

テストジョブの実行 テストジョブの実行

テスト テスト

テストC

パッケージの展開

自動化されたテストを実行します。

ビルド対象となるファイル群をビルドサーバーにコピーして、ビルド(Libertyパッケージ作成)を行います。

作成したパッケージも、ソース管理の対象としてリポジトリに登録します。

ビルドAビルドジョブの起動

git pull で同期

ビルド/パッケージ

git pull で同期

git pushで同期git pushで同期

ビルドジョブの実行 1

2

3

4

データの流れ

処理の流れ

3章での処理全体の流れ

いまココ!

61

Page 62: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行すること

ここからは、以下の流れの操作を行うことを想定しています。前ページの作業の流れと合わせてご確認ください。

Jenkinsコンソールから、デプロイ作業一式を行うジョブを定義します。

ジョブは、ソース/パッケージ管理サーバー上で実行されます。まずは、ソース/パッケージ管理サーバー上のローカルリポジトリでgit pullコマンドを実行して、gitの共用リポジトリと同期した上で、Libertyプロファイルサーバーパッケージをテスト環境へコピーします。

テスト環境上で、コピーしたLibertyプロファイルサーバーパッケージを展開します。

前述の処理の流れの各ステップと、Jenkinsのプロジェクトの対応は、以下のようになります。

62

1

2

3

デプロイジョブの実行

ファイルのコピー

パッケージの展開

1

2

3

Page 63: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

使用方法 - まずは、ジョブ(プロジェクト)を定義(1/3)

63

以下は、ジョブ定義変更箇所の抜粋です。

実行ノードの指定をしないと、利用可能な何れかのノードで実行されてしまいます。このジョブはソース管理サーバー上での処理になるので、"SCM"のラベルがつけられたソース管理サーバーを指定しています。

パッケージLibertyプロファイルサーバーパッケージはMavenのリポジトリ下に生成されますので、そこから稼働環境へパッケージの識別ができるようにビルド番号付でコピーしています。

ここで指定したプロジェクトの正常終了後にこのプロジェクトを実行します。

ファイルのコピー 2

Page 64: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

使用方法 - まずは、ジョブ(プロジェクト)を定義(2/3)

64

以下は、ジョブ定義変更箇所の抜粋です。

お馴染みの実行ノードの指定です。このジョブは稼働サーバー上で実行したいので、"Production"のラベルがつけられた稼動サーバーを指定しています。

ビルド番号付のディレクトリを作成して旧ディレクトリのバックアップを取り、パッケージを解凍しています。

パッケージの展開 3

ここで指定したプロジェクトの正常終了後にこのプロジェクトを実行します。

Page 65: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実働環境へのデプロイ後のライセンス管理は大丈夫ですか?

Liberty for Developers(開発者版)を使用した環境のサーバーパッケージを作成した場合、開発環境用のライセンスを、実働環境のライセンスに置き換える必要があります。

置き換えるためのライセンスファイル(jar)が提供されています。

導入方法は、以下のとおり、実働環境に移行した後、ライセンスファイルを展開します。

この手順をデプロイの手順に組み込んでください!

現在どのライセンスで稼動しているかは、以下のコマンドで確認できます。

もしくは、起動時のcosole.logに以下のような出力がされます。

65

http://www-01.ibm.com/support/knowledgecenter/SSD28V_8.5.5/com.ibm.websphere.wlp.core.doc/ae/twlp_ins_upgrade_archive.html

C:¥Users¥IBM_ADMIN>java -jar C:¥Work¥wlp-nd-license-8.5.5.jarIBM WebSphere Application Server Network Deployment V8.5.5.6を使用、抽出、またはインストールする前に、プログラムのご使用条件の条項と追加のライセンス情報に同意する必要があります。以下の使用条件をよくお読みください。:以下で「同意する」を選択すると、使用許諾契約の契約条件 (該当する場合は、IBM 以外の契約条件を含む) を受諾することになります。同意しない場合は、「同意しない」を選択してください。

[1] 同意する、または [2] 同意しないを選択: 1

ライセンス・ファイルのディレクトリーを入力するか、ブランクのままにしてデフォルト値を受け入れます。デフォルトのターゲット・ディレクトリー: C:¥Users¥IBM_ADMIN

製品ファイルのターゲット・ディレクトリー? C:¥IBM¥WebSphere¥LibertyArchive8556ライセンス・ファイルが正常に適用されました。

C:¥IBM¥WebSphere¥LibertyArchive8556¥wlp¥bin>C:¥IBM¥WebSphere¥LibertyArchive8556¥wlp¥bin¥productInfo.bat version製品名: WebSphere Application Server製品バージョン: 8.5.5.6製品エディション: BASE_ILAN

ILAN(International License Agreement for Non-Warranted Programs)が付与されていると、保証対象外、すなわち開発用ライセンス と考えられます!

パッケージ展開での実働環境へのデプロイ時には、ライセンス管理に注意! 重要

[15/06/25 20:40:01:446 JST] 00000001 com.ibm.ws.kernel.launch.internal.FrameworkManager A CWWKE0100I: この製品は、開発使用向け、および限定的な実動使用向けにライセンスが交付されています。全ライセンス条項は以下で表示可能です: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/8.5.5.5/lafiles/ja.html

Page 66: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

使用方法 - まずは、ジョブ(プロジェクト)を定義(3/3)

66

以下は、ジョブ定義変更箇所の抜粋です。パッケージの展開 3

前ページの注意点に従って、ライセンスファイルのインストールを行います。

[wasadmin@prod wlp]$ ./bin/productInfo version

Product name: WebSphere Application Server

Product version: 8.5.5.7

Product edition: BASE_ILAN

Before・・・

[wasadmin@prod wlp]$ ./bin/productInfo version

Product name: WebSphere Application Server

Product version: 8.5.5.7

Product edition: ND

After・・・

Page 67: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

ジョブを実行します。

実行結果!

67

Page 68: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行結果!

68

次のジョブ(プロジェクト)を起動しています。

ファイルのコピー 2

ファイルがコピーされました。

Page 69: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行結果

69

前のジョブから起動された事がわかります。

既存のLiberty環境があればバックアップを取得します。

無事展開されました。

パッケージの展開 3

Page 70: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

まとめ

ここまででできた事 Jenkinsにてデプロイを行うためのジョブ(プロジェクト)の登録を行いました。

実際にデプロイジョブの起動によって、以下を実行しています。

• gitリポジトリ内のLibertyプロファイルサーバーパッケージを稼動サーバーにscpして

• 稼動サーバー上でパッケージを展開しています。

次は・・・・ 次は、Jenkinsからテストタスクを呼びだして、Libertyプロファイルサーバーの起動

と稼動確認を行います。

70

Page 71: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

3. Libertyプロファイルとツールの連携

71

1. はじめに2. 開発~ソース管理3. ビルド4. デプロイ5. テスト

Page 72: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

事前作業

サーバー構成ファイルを登録します。

作成したパッケージをターゲットの環境にコピーし、展開します。

Jenkins gitMaven

/Arquillian実行環境端末

サーバー構成ファイルの登録

前サーバー構成ファイルの登録

デプロイジョブの実行デプロイB

ファイルのコピー ファイルのコピー

テストジョブの実行 テストジョブの実行

テスト テスト

テストC

パッケージの展開

自動化されたテストを実行します。

ビルド対象となるファイル群をビルドサーバーにコピーして、ビルド(Libertyパッケージ作成)を行います。

作成したパッケージも、ソース管理の対象としてリポジトリに登録します。

ビルドAビルドジョブの起動

git pull で同期

ビルド/パッケージ

git pull で同期

git pushで同期git pushで同期

ビルドジョブの実行 1

2

3

4

データの流れ

処理の流れ

テスト作業の流れ

いまココ!

72

Page 73: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行すること

ここからは、以下の流れの操作を行うことを想定しています。前ページの作業の流れと合わせてご確認ください。

Jenkinsコンソールから、Arquillianのテストを起動するジョブを定義します。

ジョブは、Mavenが導入されているビルドサーバーで起動されて、実行環境上のLibertyプロファイルサーバーに対してテストを行います。

前述の処理の流れの各ステップと、Jenkinsのプロジェクトの対応は、以下のようになります。

73

1

2

テストジョブの実行

テスト

1

2

Page 74: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

使用方法 - まずは、ジョブ(プロジェクト)を定義(1/2)

74

以下は、ジョブ定義変更箇所の抜粋です。

Buildサーバー上で実行しています。

Arquillianの実体は、mavenのarchetypeです。Mavenのゴールとしてtestを指定しています。

テスト 2

Page 75: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

実行結果イメージ

75

Mavenのテストを起動しています。

テスト 2

正常に終了しました。

Page 76: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

まとめ

ここまででできた事 Jenkinsでテストを行うためのジョブ(プロジェクト)の登録を行いました。

あらかじめ定められた、コードとして記述されたテストを Mavenから呼び出すことで、デプロイ後のテストも自動化できました!

ここまでの定義で、基本的には 最初のジョブの1クリックでビルド、デプロイ、テストまでが自動で実行できたことになります。

76

Page 77: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

全体まとめ

Libertyプロファイル+OSS DevOpsツール群でインフラ構築の自動化を実践してみました。

77

server.xmlをベースとしたシンプルな構成

パッケージ&デプロイ機能による簡単デプロイ

ツール提供の豊富なプラグイン、連携機能

で構成を管理し、

でビルド(パッケージング)を行い

で全体の制御、およびデプロイを実施して

で自動テスト

Libertyプロファイルの特性 を生かして、

各種 DevOpsツールと連携することで、

「新しいスタイルのシステム構築・運用」 が可能です!

Page 78: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

参考資料一覧

78

Page 79: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

全般

Libertyプロファイルとアジャイル開発/運用関連 Liberty and DevOps, continuous delivery and deployment

environment

• https://www.redbooks.ibm.com/redbooks.nsf/RedpieceAbstracts/sg248286.html?Open

Liberty in a DevOps Continuous Delivery Environment

• http://www.redbooks.ibm.com/abstracts/redp5269.html?Open

Redbook "Configuring and Deploying Open Source with IBM WebSphere Application Server Liberty Profile"

• http://www.redbooks.ibm.com/abstracts/sg248194.html?Open

79

Page 80: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

ツール(Arquillian関連)

Arquillian関連 IBM developerWorks 「Tag Archives: Arquillian」

• https://developer.ibm.com/wasdev/blog/tag/arquillian/

Arquillian Guides 「Getting Started」

• http://arquillian.org/guides/getting_started_ja/

jboss.org 「Arquillian: An integration testing framework for Java EE」

• http://docs.jboss.org/arquillian/reference/1.0.0.Alpha1/en-US/html_single/

80

Page 81: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

ツール(Maven関連)

maven関連 MavenとLibertyプロファイルで実現するビルドプロセスの自動化

• http://www.ibm.com/developerworks/jp/websphere/library/was/liberty_maven/

Installing Liberty with the Liberty Maven plug-in

• https://developer.ibm.com/wasdev/docs/installing-liberty-liberty-maven-plug/

KnowledgeCenter: Using Maven to automate tasks for the Liberty profile

• http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.wlp.nd.doc/ae/twlp_dev_maven.html

81

Page 82: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

ツール(git関連)

git関連

Git のコマンドだけでなく、その仕組みを学ぶ

• https://www.ibm.com/developerworks/jp/devops/library/d-learn-workings-git/

GitHub wasdev

• https://github.com/wasdev

Subversion ユーザーのための Git:

• 第 1 回 Git 入門

• http://www.ibm.com/developerworks/jp/linux/library/l-git-subversion-1/index.html

• 第 2 回 細かく制御する

• http://www.ibm.com/developerworks/jp/linux/library/l-git-subversion-2/index.html

IBM Open Source at GitHub

• http://ibm.github.io/

サルでもわかるGit入門

• http://www.backlog.jp/git-guide/

Git の基礎勉強 ~ Git によるバージョン管理 ~

• http://tracpath.com/bootcamp/learning_git_firststep.html

82

Page 83: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

ツール(Jenkins関連)

Jenkins関連 IBM DevOps

• https://www.youtube.com/channel/UCZjEZfm-WCJlQvWQ5y3nGkQ

DevOps with Liberty, Maven, and Chef

• https://developer.ibm.com/wasdev/docs/devops-liberty-maven-chef-part-1/

Using Jenkins

• https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins

83

Page 84: WAS Liberty+DevOpsツールで実現する インフラ構築自動化 …public.dhe.ibm.com/software/dw/jp/websphere/was/liberty...自動化ツールを使用したLiberty運用における検討ポイント(1/4)

© 2015 IBM Corporation

84

END