作業している開発環境 (QA、本番前、本番など) に基づいてプロパティファイルを自動的に読み込むように Mule アプリケーションを設定できます。これにより、オンプレミスとクラウドの両方へのアプリケーションのデプロイが容易になります。この設定では、以下のタスクを完了する必要があります。
-
アプリケーション内で各開発環境のプロパティファイルを作成します。
-
起動時に環境を探すようにアプリケーション内でプロパティプレースホルダーを設定します。
-
アプリケーションのデプロイ時に特定の開発環境を参照するように環境変数を設定します。
環境間で異なっていなくても、設定の他の側面 (タイムアウト値やポーリング頻度など) を外部化することを考慮してください。この設定により、Mule アプリケーションが 1 つのプロパティファイルで完全に設定可能になるため、調整や試験が容易になります。
環境プロパティを使用する場合の考慮事項
環境プロパティを設定する場合は次のガイドラインを考慮してください。
-
プロパティファイルの一貫した命名戦略を使用して、プロパティファイルがアプリケーション間で一意になるようにします。
この方法により、チーム間でファイルを容易に再利用できるようになります。適切な戦略として、アプリケーション名またはアプリケーション ID をプロパティファイル名に追加することをお勧めします。
-
共有リソース構造を介して複数のアプリケーションをデプロイする場合は、プロパティファイルに何も設定しないでください。
設定すると、ドメインを共有するさまざまなアプリケーション間で競合が起こる可能性があります。代わりに、デプロイしたアプリケーション、そのドメイン、およびそのドメイン下の他のアプリケーションのスコープにわたる環境変数を設定することができます。
Studio では、[Run Configurations (設定の実行)] メニューの [Environment (環境)] タブを使用して環境変数を作成できます。[Environment (環境)] タブには、[Play (再生)] ボタンの右にあるドロップダウンメニューからアクセスできます。
環境プロパティ設定の基本アーキテクチャ
次の Mule 設定フラグメントでは、env というグローバルプロパティ、動的設定プロパティファイル (env プロパティに基づく)、および変数設定を含む HTTP Connector を定義しています。
<global-property doc:name="Global Property" name="env" value="qa" />
<configuration-properties doc:name="Configuration properties" file="${env}.yaml" />
<http:listener-config name="HttpListenerConfiguration"
doc:name="HTTP Listener Configuration"
host="${host}"
port="${port}"
basePath="${path}" />
次の例では Spring のプロパティプレースホルダー解決メカニズムを使用しています。変数ビット (ベースパス、ホスト、ポート) が明確に示されています。これらは、このコネクタのデプロイ先の環境ごとに異なる可能性があります。
アプリケーションをデプロイするときに、env プロパティをデプロイ先の特定の環境 (qa や prod など) に動的に置き換えることができます。これにより、設定された環境に固有のプロパティを含む異なる .yaml ファイルを Mule アプリケーションで読み込むことができます。
これらの環境変数の値を提供するため、環境ごとに YAML 設定ファイルを使用します。
path: "test/products" host: "localhost" port: 8082
path: "products" host: "www.acme.com" port: 8081
環境プロパティの作成と設定
アプリケーション内で変数プロパティファイルを作成し、起動時に環境を探すように設定します。また、環境プロパティは Studio でテストすることもできます。これらの作業を完了するには、以下の手順を参照してください。
Studio ビジュアルエディターの使用
-
アプリケーション内でサポートする環境のリストを定義します。たとえば、一般的なユースケースとして、本番環境と QA 環境の両方をサポートするようにアプリケーションを設定します。
変数 variable を環境 prod および qa 内で定義し、1 つのアプリケーションを使用してテストします。
-
src/main/resources フォルダーを右クリックし、[New (新規)] > [File (ファイル)] を選択して、サポートする環境ごとにプロパティファイルを作成します。次に例を示します。-
qa.yaml -
prod.yaml
-
-
この新しい各ファイルをダブルクリックすると、ファイルが Studio の新しいタブで開きます。これを編集することで、ファイル名に対応する環境のプロパティを設定できます。たとえば、以下の図のようにプロパティを追加することができます。このプロパティはアプリケーションの任意の場所で使用できます。
-
プロパティファイルを閉じます。
-
キャンバスの下にある Studio プロジェクトの [Global Elements (グローバル要素)] タブ内をクリックします。
-
新しいグローバル要素を [Create (作成)] します。 要素種別を選択する場合は、[Global Configurations (グローバル設定)] の下にある [Configuration properties (設定プロパティ)] を選択します。
-
[File (ファイル)] 項目の値を
${env}.yaml に設定します。 -
新しいプロパティを [Create (作成)] し、デフォルトの環境を追加します。要素種別を選択する場合は、[Global Configurations (グローバル設定)] の下にある [Global Property (グローバルプロパティ)] を選択します。
-
プロパティに値を設定します。
-
設定済みの [Global Property (グローバルプロパティ)] 値を編集することで、環境を変更することができます。
XML エディターの使用
-
アプリケーション内でサポートする環境のリストを定義します。たとえば、一般的なユースケースとして、本番環境と QA 環境の両方をサポートするようにアプリケーションを設定します。
変数 variable を環境 prod および qa 内で定義し、1 つのアプリケーションを使用してテストします。
-
src/main/resources フォルダーを右クリックし、[New (新規)] > [File (ファイル)] を選択して、サポートする環境ごとにプロパティファイルを作成します。次に例を示します。-
qa.yaml -
prod.yaml
-
-
この新しい各ファイルをダブルクリックすると、ファイルが Studio の新しいタブで開きます。これを編集することで、ファイル名に対応する環境のプロパティを設定できます。たとえば、以下の図のようにプロパティを追加することができます。このプロパティはアプリケーションの任意の場所で使用できます。
-
プロパティファイルを閉じます。
-
キャンバスの下にある Studio アプリケーションの [Configuration XML (設定 XML)] タブ内をクリックします。
-
configuration-properties 要素を XML ファイルに追加し、ファイル名を設定可能にします。
<configuration-properties doc:name="Configuration properties" file="${env}.yaml" />
-
[Global Property (グローバルプロパティ)] 要素を追加して、デフォルトの環境名を設定します。
<global-property doc:name="Global Property" name="env" value="qa" />
-
設定済みの [Global Property (グローバルプロパティ)] 値を編集することで、環境を変更することができます。
Studio での構成済み環境プロパティのテスト
変数プロパティファイルで設定した特定の環境がアプリケーションで使用されることをテストするには、Studio に埋め込まれた Mule でアプリケーションを実行します。
-
[Package Explorer] ビューで、デプロイするプロジェクトのファイル名を右クリックし、[Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] を選択します。
-
Studio は、前の手順の [Global Property (グローバルプロパティ)] で指定された環境変数に従って、アプリケーションを自動的にデプロイします。
-
再度、[Package Explorer] ビューで、デプロイするプロジェクトのファイル名を右クリックし、[Run As (別のユーザーとして実行)] > [Run Configurations… (設定の実行…)] を選択します。
-
Arguments タブでシステムプロパティを定義します。
-
Run ボタンをクリックして手順を完了します。qa.yaml で定義されたプロパティではなく prod.yaml で設定されたプロパティが使用されます。
アプリケーションのデプロイのための環境変数の設定
Mule は開始時に環境変数を読み込みます。そのため、デプロイメント対象 (CloudHub またはオンプレミス) に応じて、アプリケーションのデプロイ時 (CloudHub) または Mule インスタンスの開始時 (オンプレミス) に環境を設定する必要があります。
オンプレミスでの Mule の開始時に特定の環境を設定
コマンドラインの使用
アプリケーションをデプロイする環境を、実行時に環境変数を使用して識別します。次の例に従って、使用する環境で Mule を実行するようにコマンドを実行します。
$ mule -M-Denv=prod
使用する設定済みの環境で Mule が開始されたら、目的のデプロイ方法を使用してアプリケーションをデプロイできます。
Anypoint Runtime Manager の使用
前提条件として、Anypoint Runtime Manager でサーバーを作成し、Mule にリンクする必要があります。次に、カスタムサーバープロパティを作成できます。
CloudHub へのデプロイ時に特定の環境を設定
Studio から CloudHub へのデプロイ
Studio から、プロパティの環境変数を設定するプロセスを開始し、アプリケーションを CloudHub にデプロイできます。
-
[Package Explorer] ビューで、デプロイするプロジェクトのファイル名を右クリックし、[Anypoint Platform] > [Deploy to Cloud (クラウドにデプロイ)] を選択します。
-
要求されたデータを入力し、[Properties (プロパティ)] タブをクリックします。
-
[Key (キー)] を「env」に設定し、その値を「prod」に設定して、新しい環境変数を追加します。
-
[Deploy Application (アプリケーションをデプロイ)] をクリックします。
Runtime Manager から CloudHub へのデプロイ
Anypoint Runtime Manager を介してアプリケーションを CloudHub にデプロイするには、Runtime Manager コンソールを使用してプロパティ値を設定できます。