このドキュメントで説明されているソフトウェアはサポートされなくなったか、または拡張サポートされています。
Oracleでは、現在サポートされているリリースにアップグレードすることをお薦めします。

第7章 開発、テスト、受け入れ、および生産ライフサイクルの管理

多くのOracle Linux環境は、開発、テスト、受入れ、および生産を表すDTAPとして知られているアプリケーションおよびシステム・ソフトウェアのライフサイクルを実装しています。 Spacewalkは、ソフトウェア・チャネルのクローニングをサポートしており、開発からテスト、テストから受諾、および受諾から生産までのソフトウェア構成を促進するプロセスを簡素化します。

既存のチャネルを複製すると、特定の時点での元のチャネル・パッケージとエラータの状態を反映する新しいチャネルが作成されます。 特定の日付に利用可能なエラータや、特別に選択したエラータを適用して、複製する前にチャネルを変更することができます。 クローニングされたチャネルは、プロダクションにリリースされる前に、開発とテストのための安定した基盤を提供します。

Spacewalkは、サブスクライブされているすべてのクライアント・システムと、サブスクライブされているソフトウェア・チャネルを追跡します。 サブスクライブされたチャネルが更新されるたびに、クライアント・システムが更新を利用できます。 または、テスト済みの新しいエラータを含むクローン・チャネルなど、別のチャネルにクライアントをサブスクライブすることもできます。 クローニングを使用すると、ソフトウェア構成をより正確に制御し、ミッション・クリティカルなアプリケーション環境での生産上の問題のリスクを低減するための体系的なワークフローを確立できます。

Spacewalk Webインタフェースまたはspacecmdのいずれかを使用してチャネルをクローンできます。 すべてのエラータを含む現在の状態でチャネルをクローンするか、選択したエラータ・セットのみを使用する元の状態で、またはエラータのない元の状態でチャネルをクローンするかを指定できます。

次の例は、spacecmdのサブコマンドsoftwarechannel_cloneを使用してチャネルをクローンする方法を示しています:

spacecmd {SSM:0}> softwarechannel_clone -s ol7u2-x86_64 -x "s/$/-clone/" -o

ベース・チャネルとそのすべての子をクローンするには:

spacecmd {SSM:0}> softwarechannel_clonetree -s ol7u2-x86_64 -p "clone-"

Spacewalkはデータベース内のメタデータ・エントリを複製するだけでよく、クローニングは通常非常に高速です。 パッケージ自体は複製されません。 チャネルのサイズを小さくすることは、チャネルのクローニングを高速化するのにも役立ちます。

Oracle Linuxリリースのベースおよびパッチ・チャネルのクローン作成は、Oracle LInuxリリースの最新のチャネルを複製するよりもはるかに高速です。最新のチャネルには、最初のリリース日から現在の日付までの各パッケージのすべてのバージョンが含まれているからです。 Oracle Linuxリリースのベース・チャネルにはリリースISOイメージに含まれていたもののみが含まれ、パッチ・チャネルにはISOイメージが作成されてから使用可能になった更新が含まれています。 このため、ベースとパッチのチャネルは、チャネルのクローニングに適したソースです。

DTAPワークフローを確立するときに、特定の日付に基づいてチャネルをクローンすることができます。 spacewalk-clone-by-dateユーティリティを使用して、新しいチャネルに指定された日付までのパッケージとエラータが含まれていることを確認できます。

たとえば、次のコマンドは2015年11月12日までのパッチ・チャネルをクローンします:

# spacewalk-clone-by-date --username=swadmin --password=password \
  --channels=ol7u1-x86_64-patch ol7u1-x86_64-patch-151112 --to_date=2015-11-12

特定のパッケージをブラックリストに載せたり削除したり、含めるか除外するエラータのタイプを選択することもできます。

また、spacewalk-clone-by-dateに構成ファイルに基づいてチャネル・クローニングを実行させることもできます。 --sample_configオプションを使用して構成ファイルを作成し、必要に応じてファイルを編集することができます。

たとえば、次の構成ファイルclone-151112.confは、2015年11月12日までのaddonsおよびpatchチャネルをクローンします。 removelist項では、sendmailを含むパッケージをクローンされたチャネルに含めないように指定しています。

{
  "username":"admin ",
  "passwd": "spacepw",
  "assumeyes":true,
  "skip_depsolve":false,
  "security_only":false,
  "blacklist": {
  },
  "removelist": {
    "ALL":["sendmail"]
  },
"channels":[
  {
    "ol7u1-x86_64-addons":"ol7u1-x86_64-addons-151112",
    "ol7u1-x86_64-patch":"ol7u1-x86_64-patch-151112",
  }
 ]
}

コマンドspacewalk-clone-by-date -d 2015-11-12 -c clone-151112.confは、この構成ファイルに基づいてクローンされたチャネルを作成します。

DTAP環境では、Oracle Linuxチャネルを定期的なスケジュール(毎月または毎週など)でクローンすることができます。 典型的なDTAPワークフローには、Spacewalkサーバーがパッケージと最新のエラータをULNリポジトリから開発チャネル用に引き出すことが含まれます。 このシナリオでは、統合テストに5日未満の時間がかかると仮定すると、Spacewalkを構成して、更新された開発チャネルのテスト・チャネル・クローンを毎週自動的に作成することができます。 テスト・チャネルがすべての品質保証テストに合格し、受け入れられた後、手動でプロダクション・チャネルにクローンを作成できます。

それはDTAPワークフローを設定するためにspacewalk-clone-by-date使用することは可能ですが、次の例に示すように、生産へのテストを通じて、開発からソフトウェア・チャネルのライフサイクルを管理するためにspacewalk-manage-channel-lifecycleコマンドを使用することがより便利かもしれません:

  • ol7-x86_64-appsvrの最新の利用可能なパッケージに基づいて開発チャネルdev-ol7-x86_64-appsvrを作成します。

    # spacewalk-manage-channel-lifecycle -c ol7-x86_64-appsvr --init
  • パッケージを開発チャネルからテスト・チャネルtest-ol7-x86_64-appsvrに昇格させます。

    # spacewalk-manage-channel-lifecycle -c dev-ol7-x86_64-appsvr --promote
  • パッケージをテスト・チャネルから本番チャネルprod-ol7-x86_64-appsvrに昇格させます。

    # spacewalk-manage-channel-lifecycle -c test-ol7-x86_64-appsvr --promote

アーカイブ・チャネルarchive-date-channelを作成して、チャネルの状態を保存することができます。

# spacewalk-manage-channel-lifecycle -c test-ol7-x86_64-appsvr --archive

チャネルの状態をリストアする必要がある場合は、--rollbackオプションを使用して、リストアするチャネルのアーカイブ・バージョンを指定します。たとえば、次のようになります:

# spacewalk-manage-channel-lifecycle -c archive-20110520-test-ol7-x86_64-appsvr --rollback

-lオプションを使用してチャネルを一覧表示します:

# spacewalk-manage-channel-lifecycle -l
Channel tree:

 1. archive-20160203-ol7-x86_64-appsvr
      \__ archive-20160203-prod-ol7-x86_64-appcmd
      \__ archive-20160203-prod-ol7-x86_64-applib

 2. dev-ol7-x86_64-appsvr
      \__ dev-ol7-x86_64-appcmd
      \__ dev-ol7-x86_64-applib
  
 3. ol7-x86_64-appsvr
      \__ ol7-x86_64-appcmd
      \__ ol6-x86_64-applib

 4. prod-ol7-x86_64-appsvr
      \__ prod-ol7-x86_64-appcmd
      \__ prod-ol7-x86_64-applib

 5. test-ol7-x86_64-appsvr
      \__ test-ol7-x86_64-appcmd
      \__ test-ol7-x86_64-applib

テスト・チャネルをプロダクション・チャネルに昇格させた後、Webインタフェースのソフトウェア・チャネルのサブスクリプションページでそのチャネルにプロダクション・システムをサブスクライブするか、spacecmd system_setbasechannelを使用して、受け入れたソフトウェア・コンフィギュレーションをプロダクションに組み込むことができます:

spacecmd {SSM:0}> system_setbasechannel svr5.mydom.com prod-ol7-x86_64-appsvr

複数の本番システムのベース・チャネルを変更するには、既存のベース・チャネルを新しいベース・チャネルにマッピングします。たとえば、次のようにします:

spacecmd {SSM:0}> system_setbasechannel channel:ol7-x86_64-QAr1-base \
  ol7-x86_64-QAr2-base