環境プロパティの設定

作業している開発環境 (QA、本番前、本番など) に基づいてプロパティファイルを自動的に読み込むように Mule アプリケーションを設定できます。これにより、オンプレミスとクラウドの両方へのアプリケーションのデプロイが容易になります。この設定では、以下のタスクを完了する必要があります。

  1. アプリケーション内で各開発環境のプロパティファイルを作成します。

  2. 起動時に環境を探すようにアプリケーション内でプロパティプレースホルダを設定します。

  3. アプリケーションのデプロイ時に特定の開発環境を参照するように環境変数を設定します。

環境間で異なっていなくても、設定の他の側面 (タイムアウト値やポーリング頻度など) を外部化することを考慮してください。この設定により、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 設定ファイルを使用します。

プロパティファイル: qa.yaml
path: "test/products"
host: "localhost"
port: 8082
プロパティファイル: prod.yaml
path: "products"
host: "www.acme.com"
port: 8081

環境プロパティの作成と設定

アプリケーション内で変数プロパティファイルを作成し、起動時に環境を探すように設定します。また、環境プロパティは Studio でテストすることもできます。これらの作業を完了するには、以下の手順を参照してください。

Studio ビジュアルエディタの使用

  1. アプリケーション内でサポートする環境のリストを定義します。たとえば、一般的なユースケースとして、本番環境と QA 環境の両方をサポートするようにアプリケーションを設定します。
    変数 ​variable​ を環境 ​prod​ および ​qa​ 内で定義し、1 つのアプリケーションを使用してテストします。

  1. src/main/resources​ フォルダを右クリックし、​[New (新規)]​ > ​[File (ファイル)]​ を選択して、サポートする環境ごとにプロパティファイルを作成します。例:

    • qa.yaml

    • prod.yaml

      deploying to multiple environments 01
  2. この新しい各ファイルをダブルクリックすると、ファイルが Studio の新しいタブで開きます。これを編集することで、ファイル名に対応する環境のプロパティを設定できます。たとえば、以下の図のようにプロパティを追加することができます。このプロパティはアプリケーションの任意の場所で使用できます。

    deploying to multiple environments 02
    deploying to multiple environments 03
  3. プロパティファイルを閉じます。

  4. キャンバスの下にある Studio プロジェクトの [Global Elements (グローバル要素)] タブ内をクリックします。

  5. 新しいグルーバル要素を ​[Create (作成)]​ します。 要素種別を選択する場合は、​[Global Configurations (グローバル設定)]​ の下にある ​[Configuration properties (設定プロパティ)]​ を選択します。

    deploying to multiple environments 04
  6. [File (ファイル)]​ 項目の値を ​${env}.yaml​ に設定します。

  7. 新しいプロパティを ​[Create (作成)]​ し、デフォルトの環境を追加します。要素種別を選択する場合は、​[Global Configurations (グローバル設定)]​ の下にある ​[Global Property (グローバルプロパティ)]​ を選択します。

    deploying to multiple environments 05
  8. プロパティに値を設定します。

    deploying to multiple environments 06
  9. 設定済みの ​[Global Property (グローバルプロパティ)]​ 値を編集することで、環境を変更することができます。

XML エディタの使用

  1. アプリケーション内でサポートする環境のリストを定義します。たとえば、一般的なユースケースとして、本番環境と QA 環境の両方をサポートするようにアプリケーションを設定します。
    変数 ​variable​ を環境 ​prod​ および ​qa​ 内で定義し、1 つのアプリケーションを使用してテストします。

  1. src/main/resources​ フォルダを右クリックし、​[New (新規)]​ > ​[File (ファイル)]​ を選択して、サポートする環境ごとにプロパティファイルを作成します。例:

    • qa.yaml

    • prod.yaml

      deploying to multiple environments 01
  2. この新しい各ファイルをダブルクリックすると、ファイルが Studio の新しいタブで開きます。これを編集することで、ファイル名に対応する環境のプロパティを設定できます。たとえば、以下の図のようにプロパティを追加することができます。このプロパティはアプリケーションの任意の場所で使用できます。

    deploying to multiple environments 02
    deploying to multiple environments 03
  3. プロパティファイルを閉じます。

  4. キャンバスの下にある Studio アプリケーションの [Configuration XML (設定 XML)] タブ内をクリックします。

  5. configuration-properties​ 要素を XML ファイルに追加し、ファイル名を設定可能にします。

<configuration-properties doc:name="Configuration properties" file="${env}.yaml" />
  1. [Global Property (グローバルプロパティ)]​ 要素を追加して、デフォルトの環境名を設定します。

<global-property doc:name="Global Property" name="env" value="qa" />
  1. 設定済みの ​[Global Property (グローバルプロパティ)]​ 値を編集することで、環境を変更することができます。

Studio での構成済み環境プロパティのテスト

変数プロパティファイルで設定した特定の環境がアプリケーションで使用されることをテストするには、Studio に埋め込まれた Mule でアプリケーションを実行します。

  1. [Package Explorer] ビューで、デプロイするプロジェクトのファイル名を右クリックし、​[Run As (別のユーザとして実行)]​ > ​[Mule Application (Mule アプリケーション)]​ を選択します。

  2. Studio は、前の手順の ​[Global Property (グローバルプロパティ)]​ で指定された環境変数に従って、アプリケーションを自動的にデプロイします。

  3. 再度、[Package Explorer] ビューで、デプロイするプロジェクトのファイル名を右クリックし、​[Run As (別のユーザとして実行)]​ > ​[Run Configurations…​ (設定の実行…​)]​ を選択します。

    deploying to multiple environments 07
  4. Arguments​ タブでシステムプロパティを定義します。

    deploying to multiple environments 08
  5. 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 にデプロイできます。

  1. [Package Explorer] ビューで、デプロイするプロジェクトのファイル名を右クリックし、​[Anypoint Platform]​ > ​[Deploy to Cloud (クラウドにデプロイ)]​ を選択します。

    deploying to multiple environments 09
  2. 要求されたデータを入力し、​[Properties (プロパティ)]​ タブをクリックします。

  3. [Key (キー)]​ を​「env」​に設定し、その値を​「prod」​に設定して、新しい環境変数を追加します。

    deploying to multiple environments 10
  4. [Deploy Application (アプリケーションをデプロイ)]​ をクリックします。

Runtime Manager から CloudHub へのデプロイ

Anypoint Runtime Manager を介してアプリケーションを CloudHub にデプロイするには、Runtime Manager コンソールを使用して​プロパティ値を設定​できます。