ブログ

Delphixの技術情報などを更新します。

JenkinsとDelphixでデータギャップを解消

2017年07月04日

以前のブログの投稿では、「データギャップ」について書きました。データギャップとは、簡単に言えば、完全にマスク済…続きを読む

以前のブログの投稿では、「データギャップ」について書きました。データギャップとは、簡単に言えば、完全にマスク済みのデータセットを下位の環境に提供するために必要となる作業と時間の間に存在する大きな隔たりのことです。仮に自動化によって、VMを180秒でプロビジョニングできたとしても、”The Data Tax” から逃れることはできません。ギャップを埋め、税金を払わなくて済むようにするためには、一部のデータだけに依存するか、純粋に人工的なデータに頼るしかありません。これによって開発からテストサイクルが短くなる場合もありますが、品質を犠牲にする必要があります。実際、他には方法がなかったのです - Delphixが登場するまでは。

多くのお客様がJenkins(あるいは類似製品)を使用してシステム環境の連携や自動化のテストを行なってきました。これらのツールは、全ての部品を組み合わせて、ビルドとテストを実行するという優れものですが、逆にデータについては分断した状態で提供することしかできないのです。本ブログでは、DelphixとJenkinsを使って、皆様がすぐに仮想データを提供できる方法をお伝えします。

実際の動きを簡単に見てみましょう

Adam Bowenが実演する、JenkinsでDelphixジョブを動かす簡単なデモビデオ

Jenkinsの動作例

ここで「DelphixとPython」シリーズをちょっと脇に置き、実用性のある例に置き換えてみます。以下のラボでは、Jenkins DockerコンテナをLandshark linuxtarget にインストールし、幾つかのジョブと一緒にポピュレートの上、Delphix Expressエンジンに対してJenkinsジョブを実行します。このブログでは、有名なJenkinsを使用しますが、実際には、TFS、TeamCity、Travisなど、同様のツールを使うことも可能です。また同じ機能やルーチンを、Puppet、Ansible、ChefなどのCMツール、あるいは自前のサービスポータルでも実行することができます。

Jenkins Dokerコンテナについて

このラボのために、特別なdockerコンテナを作成しましたが、簡単に使用できるよう、若干の変更を加えてあります:

1.delphixpyモジュールをDockerコンテナに直接インストールします

2.可視化を向上させるため、いくつかのパイプラインビルドプラグインをインストールします

Dockerfileを事前に見たい場合には、cloudsurgeon/landshark-jenkins で確認できます。

前提

1.   Landshark Quick Start Guideを読み終えていること

2. 「Getting Started with delphixpy」の説明に従った手順を完了していること

3.  「Creating a Virtual Copy of the Application」の説明に従った手順を完了していること

4 .  「 Adding the Employee XE Application to Jetstream」の説明に従った手順を完了していること

セットアップ

1.   delphixユーザーで、Landshark LinuxTarget にssh

2.  assume root: su –

3.  yum install jq -y

4.  visudo

5.  delphix エントリーを以下で置き換えます

Defaults:delphix !requiretty

delphix ALL=NOPASSWD:ALL

6.  root を抜けます(delphix ユーザーに戻ります)

7.  sudo service docker start

8.  sudo chkconfig docker on

9.  cd ~/delphixpy-examples/

10.  git pull

11.  cp ~/dxtools.conf .

12.  cd landshark_jenkins

13.  ./jenkins-start

これによって、http://<linuxtarget IP>:5777 でJenkins にアクセスできるはずです。

Delphix Express + Jenkins:Adam Bowen によるセットアップ方法の説明ビデオ

演習1:簡単な作成と削除

この演習では、Jenkins を使って、Delphix VDB の作成と削除を行います。このサンプルは極めて簡単なのでジョブチェーニングなどは使用しません。

シナリオ

この演習では、以下の Delphix 顧客のシナリオを再現します:

1.Jenkins は、Delphix に業務データベース (4+) の最新の仮想コピーを作成するよう指示するジョブを実行します

2.Jenkinsは、データベースを使用するアプリケーションに対して、一連のテストを実行します

3.テストが終了すると、Jenkinsは、Delphixに仮想コピーを削除するよう指示するジョブを実行します

手順

1.DE:稼動中のすべての Oracle XE VDB を停止します

2.JP:”Create OracleXE VDB” ジョブを実行します

3.DE:”autod” という名前の新しい VDB が Analytics グループに作成されることを確認します

4.JP:”Delete VDB” ジョブを実行します

5.DE:”autod” VDB が削除されることを確認します

ビデオ

Delphix Express + Jenkins: Adam Bowen による演習1の説明ビデオ

演習2:Jetstreamコンテナのリフレッシュ、テスト実行、ブックマーク結果の確認

この演習では、Delphix Jetstream コンテナで Jenkins を使用します。Jetstream コンテナは、アプリケーションとデータベース層を持っています。

シナリオ

この演習では、以下の Delphix顧客のシナリオを再現します:

1.Jenkins は、一連のテスト実行の通知を受け取ります(GitフックやQAゲートなど)

2.Jenkinsは、Delphix にある Automated Testing Container (ATC) を最新のマスク済み業務データで更新するようDelphix に指示します

3.Jenkins は、最新の仮想コピーに対してビルドを実行します(アップグレードスクリプトの実行、Daticalの呼び出しなど)

4.Jenkins は、Delphix にATC をブックマークするよう指示するジョブを実行します。これで、テストのためのクラッシュコンシステントなアプリケーションのスナップショットが作成されます

5.Jenkins は最初の一連のテストを実行します

6.テストが上手くいった場合:

・ Jenkins は、Delphix に ATC を “testing ready” スナップショットにリセットするよう指示するジョブを実行します

・Jenkinsは、残りすべてのテストが終了するまで、これを繰り返します

7.いずれかの部分でエラーになった場合:

・Jenkins は、JIRA にチケットを作成します

・Jenkins は、ATCにブックマークし、アプリケーションの状態を保存するよう、Delphix に指示するジョブを実行します

・Jenkinsは、簡単に参照できるよう、JIRAチケット番号と一緒にブックマークをタグするよう、Delphix に指示します

8.  Jenkins は、DelphixにATCを停止するよう指示するジョブを実行します

9.   Delphix は ATC を停止し、仮想インフラストラクチャーから削除します。これによって、他の目的(例えば次のビルドテスト)のために、インフラストラクチャーが開放されます

10. QAやテストエンジニアは、修正やトリアージのために、いつでも仮想環境に ATC をリストできます

手順

この演習を実施するためには、2つのブラウザータブまたはウィンドウを開いておく必要があります:1つは XE Devコンテナを確認するための、 Delphix Engine (DE) Jetstream Portal  用、もう一方は Jenkins のポータル (JP) 用です。

1.DE:Employee XE Dev コンテナをスタートします

2.JP:”CI Pipeline” ビューをクリックします

3.JP:Run(実行)アイコンをクリックします

4.JP:すべてデフォルト値のままで、”Build”(ビルド)をクリックします

5.DE:コンテナがリフレッシュされ、ブックマークが作成されることを確認します

6.JP:パイプラインビューワーは、実行されているジョブをハイライトします

7.JP:コンソールログにリフレッシュジョブが表示され、”hello world” を実行し、さらにブックマークジョブを実行します

8.DE:Employee XE Dev コンテナを停止します

ビデオ