複数の相互依存するJava Webアプリケーションのデプロイメントを管理できるソリューション(できればオープンソース)を探しています。
このソリューションには、リリース用の複数のアイテムを含むリリース仕様を作成および保存する機能が必要です-各アプリケーションの特定のバージョンおよび関連するその他のアーティファクト(データベース構成、Apache構成など)
次に、仕様を解析し、各アイテムをターゲット環境にデプロイ/実行する必要があります。ターゲット環境はLinuxベースです。 Webアプリは、j2ee標準アプリサーバーで実行されるバニラ戦争です。
質問がたくさんありますか?
現在、すべてのビットが適切に配置されていると思います-バイナリアーティファクトはmavenリリースプラグインでリリースされるため、mavenリポジトリからデプロイできますデータベースはdbdeployでバージョン管理され、Apache configはsvnでバージョン管理されます。ただし、これらすべての手順を複数のアプリケーションにまとめることができるツールはありません。
私の現在の好ましいアプローチは、hudsonのパラメーター化されたビルドの形式を使用して仕様を作成することです。次に、事前に作成された仕様を選択し、選択した環境にデプロイ/実行するための2番目のパラメーター化されたビルド。
ただし、これは多くの作業であり、最適なカスタムソリューションではないようです。
構築済みのより良いアイデアを知っている人はいますか?またはこれにアプローチする方法の提案-おそらくワークフローエンジンはハドソンよりも優れているでしょうか?多分カスタムWebアプリ?
ノート:
ターゲット環境は、すべての要件が整った状態で事前に構築されています。 Javaおよびアプリサーバーのインストール、データベースの実行など。これは、環境構成の質問ではなく、展開の質問です。
単一のアプリのデプロイを自動化することは、多くのソリューションで問題になります。貨物、Antデプロイメントスクリプトなど。ただし、複数のデプロイメントをラップできるものが必要です。例えば。複数のアプリの特定のバージョンとその要件で貨物を開始します。
構成をクックするには chef が必要なようです:)
gl は、展開を自動化するための非常に優れた選択肢のようです。そのウェブサイトからの説明:
Gluとは何ですか?
gluは、フリー/オープンソースのデプロイメントおよびモニタリング自動化プラットフォームです。
Gluはどのような問題を解決しますか?
gluは次の問題を解決しています:
- アプリケーションを任意の大きなノードセットにデプロイ(および監視)します:
- 効率的に
- 最小限の/人間の相互作用なし
- 安全に
- 再現可能な方法で
- 時間の経過とともに一貫性を確保します(ドリフトを防ぎます)
- 問題が発生したときに迅速に検出してトラブルシューティングする
それはどのように機能しますか?
gluは非常に宣言型のアプローチを採用しており、必要なものを記述/モデル化すると、gluは次のことができます。
- アプリケーションをデプロイ/アップグレードするための一連のアクションを計算します
- 時間の経過とともに一貫性を保つようにする
- 不一致がある場合に検出して警告します
Yan Pujanteによって管理されており、社内で使用したLinkedInで作成されました。
この古いスレッドはグーグル検索で最初に現れるので、私は新しい選択肢を追加したいと思います:
Ansible SSH経由でコマンドを実行し、セットアップと使用が非常に簡単です。概念を理解し、独自のタスクを書き始めるのに数時間しかかかりません。
サイトからの抜粋:
デーモンやブートストラップを必要としないことに加えて、AnsibleのPlaybook言語は、世の中で最も単純なシステム管理言語です。それは英語のように読めます。他にもやるべきことがあると思いますので、早くやり遂げて邪魔にならないようにしてください。
ControlTier をチェックしてください。これは、構成管理データベース(CMDB)リポジトリに基づくオープンソースの展開ツールであり、展開を自動化するための完全なエンタープライズ対応システムを目指しています。多層および分散アプリケーションサービスの管理。その ウェブサイト によると:
ControlTierは、コミュニティ主導のクロスプラットフォームソフトウェアシステムであり、複数のノードおよびアプリケーション層にわたるアプリケーションサービス管理アクティビティを調整するために使用されます。プロジェクトは完全にオープンソースであり、プロジェクトへの貢献の多くは、大規模なeコマース、サービスとしてのソフトウェア、および金融サービスの運用に関するDTOソリューションの継続的なコンサルティング作業からもたらされます。 インストール に移動して、ソフトウェアを入手してインストールします。
代替テキストhttp://controltier.org/mediawiki/images/d/d2/ControlTier_HighLevel.png
スマートフロッグ も一見の価値があります。
展開は複雑なビジネスです。 Mavenには、デプロイメントを管理するために必要なプラグインが多数ありますが、Mavenを正確に実行するには、いくつかの構成が必要です。以下に、各問題に対処する方法について説明します。環境にもよりますが、それ以上の手間がかかるかもしれません。
maven Cargoプラグイン を使用してアプリケーションをデプロイできます。明らかにこれはかなり複雑になる可能性がありますが、Cargoはデプロイメントを管理するための非常に優れたツールです。
Apache configは、ビルドプロセスによって個別のjarとしてパッケージ化され、リポジトリにデプロイされてから、デプロイメントjarで使用するためにダウンロード/公開されます( 依存関係プラグイン を使用して、からconfigjarをプルできます。リポジトリ)。あるいは、MavenにはSCMリポジトリに対して任意のコマンドを呼び出すために使用できるscm apiがあります(SCM APIを使用するプラグインの例については、 この回答 を参照してください)。
私の知る限り、dbdeploy用のMavenプラグインはありませんが、この ブログ投稿 は、 maven-antrun-plugin を使用してデプロイメントのスクリプトを作成する方法を示しています。
私は非常によく似た要件を持っています。環境デプロイメントではなくアプリケーションデプロイメントに焦点を当てると、 http://www.kwatee.net/product が完全に適合しているようです。
私の提案は、目的を達成するのに役立つツール(関心の分離、適切な問題に適切なツール)の組み合わせを使用することです。私が使用したもののいくつかに言及させてください。
上記のツールに加えて、役立つツールが他にもあり、プロジェクトのニーズに応じてそれらを使用できます。 http://www.Oracle.com/technetwork/articles/Java/deployment-tools- 2227133.html
今問題について話している。私が最初に気付いたのは、リポジトリマネージャー(Artifactoryなど)にリリースアーティファクトが既にあるとのことです。次のステップは、これらのアーティファクトのデプロイを同時に調整する方法です。 1つのオプションは、Paremeterized Build( https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build )を使用することだと思います。ここでは、異なるパラメーターを含む複数のパラメーターを定義する必要があります。デプロイするアーティファクトのバージョン。ユーザーがこれらの値を入力すると、それらを使用してrundeckジョブにパラメーターとして渡します(rundeckは、さまざまなノードでタスクをオーケストレーションするのに役立つツールです)。このrundeckデプロイメントマスタージョブはパラメータを受け取り、アーティファクトのデプロイを調整します。rundeckジョブに含まれる手順の例としては、コンテナの停止、現在のコンポーネントのバックアップ、コンテナの開始、リポジトリマネージャからのアーティファクトのダウンロード、リソースの作成があります。コンテナ内のces、コンテナ内のコンポーネントのデプロイ、DBデプロイの実行、プロセスが失敗した場合の電子メールの送信など。通常、これらの各ステップはサブジョブ(パラメータも受け取る)であり、最後に作成します。これらすべてのサブジョブを使用/オーケストレーションする1つのマスタージョブ。
このタイプのCDプロセスのいくつかの画像の例を追加しましょう。この例では、War/Earアーティファクトのみをデプロイしていますが、全体像を把握するのに役立ちます。
https://drive.google.com/folderview?id=0B-FVAopZZjDWdGl0WlNjX1RnRDQ&usp=sharing
これがお役に立てば幸いです。
Apache Aceは、Ariesのような他のツールで問題を解決するようです。 ACEは依存関係を追跡します。機能を照合してディストリビューションを形成できます。次に、ディストリビューションをデプロイする必要があるターゲットを選択できます。 RESTfulAPIも提供します。
Apache ACE
Apache ACEは、ソフトウェアコンポーネント、構成データ、およびその他の成果物を一元管理してターゲットシステムに配布できるようにするソフトウェア配布フレームワークです。 OSGiを使用して構築されており、さまざまなトポロジで展開できます。ターゲットシステムも通常OSGiベースですが、そうである必要はありません。