Mule Maven プラグインを使用したオンプレミス Mule インスタンスへのアプリケーションのデプロイ

Mule Maven プラグインバージョン 3.0.0、3.1.0、3.1.1、3.1.2、3.1.3、3.1.4、3.1.5、3.1.6、3.1.7、3.8.3 は非推奨です。

可能な場合は、Equality の会社の値に一致するように、含めない用語を変更しました。顧客の実装に対する影響を回避するために、一部の用語は変更されていません。

Anypoint Studio、Anypoint Runtime Manager、または Anypoint Platform CLI を使用してアプリケーションをオンプレミスでデプロイすることに加えて、Mule Maven プラグインを使用して Mule アプリケーションをデプロイすることもできます。これを行うには、特定の前提条件を満たし、目的のデプロイメント戦略をプロジェクトの ​pom.xml​ ファイルで定義する必要があります。

別の方法を使用してオンプレミスにアプリケーションをデプロイする場合は、以下を参照してください。

オンプレミスデプロイメント戦略

Mule Maven プラグインを使用してアプリケーションをオンプレミスにデプロイする場合、3 つの異なるデプロイメント方法を選択できます。

  • スタンドアロンデプロイメント
    この方法を使用して、オンプレミス Mule インスタンスに Mule アプリケーションを手動でデプロイします。

  • Runtime Manager REST API デプロイメント
    この方法を使用すると、Runtime Manager REST API を使用してアプリケーションをデプロイできます。これにより、オンプレミス Mule インスタンスが Anypoint Runtime Manager アカウントにリンクされ、デプロイしたアプリケーションをさらに管理および監視できます。

  • Runtime Manager エージェントデプロイメント
    この方法を使用すると、Runtime Manager エージェントを使用してアプリケーションをデプロイできます。これにより、ローカル API が公開され、その API をコールして、デプロイしたアプリケーションを管理および監視できます。

スタンドアロンデプロイメント戦略または Runtime Manager エージェントデプロイメント戦略を使用する場合、Mule Maven プラグインはドメインのデプロイもサポートします。

追加の操作により、複数のアプリケーションを並列にデプロイしたり、実行時にアプリケーションを更新したりできます。

前提条件

スタンドアロン Mule Runtime Engine への Mule アプリケーションのデプロイ

plugin​ 要素内にスタンドアロンデプロイメント用の設定を追加し、プレースホルダーの値をローカルの Mule Runtime Engine 情報で置き換えます。

<plugin>
  <groupId>org.mule.tools.maven</groupId>
  <artifactId>mule-maven-plugin</artifactId>
  <version>3.7.1</version>
  <extensions>true</extensions>
  <configuration>
    <standaloneDeployment>
      <muleHome>${mule.home.test}</muleHome>
      <muleVersion>${app.runtime}</muleVersion>
    </standaloneDeployment>
  </configuration>
</plugin>

プロジェクトのフォルダーのコマンドラインから、アプリケーションをパッケージ化してデプロイゴールを実行します。

mvn clean deploy -DmuleDeploy

スタンドアロンデプロイメントのパラメーターリファレンス

パラメーター 説明 必須

standaloneDeployment

最上位要素。

はい

applicationName

デプロイ時に使用するアプリケーション名を指定します。

はい

muleVersion

ローカルマシンインスタンスで実行する Mule バージョン。
この値がデプロイメント対象で実行している Mule バージョンに一致しない場合、プラグインで例外が発生します。

この値が一致しない場合、Mule Maven プラグインは Mule Runtime Engine をダウンロードしません。

はい

muleHome

ローカルマシンにおける Mule インスタンスの場所。

はい

deploymentTimeout

デプロイメントプロセスの開始からアーティファクトがデプロイされたことの確認までの許容される経過時間 (ミリ秒)

デフォルト値は ​1000000​ です。

いいえ

skip

true​ に設定すると、プラグインデプロイメントゴールをスキップします。
デフォルト値は ​false​ です。

いいえ

Runtime Manager REST API を使用した Mule アプリケーションのデプロイ

Mule Maven プラグインを使用すると、Runtime Manager REST API を使用してローカルの Mule インスタンスに Mule アプリケーションをデプロイできます。

前提条件

Runtime Manager REST API を使用したデプロイ

plugin​ 要素内に Runtime Manager デプロイメント用の設定を追加し、プレースホルダーの値を Runtime Manager 情報で置き換えます。

<plugin>
  <groupId>org.mule.tools.maven</groupId>
  <artifactId>mule-maven-plugin</artifactId>
  <version>3.7.1</version>
  <extensions>true</extensions>
  <configuration>
    <armDeployment>
      <muleVersion>${app.runtime}</muleVersion>
      <uri>https://anypoint.mulesoft.com</uri>
      <target>${target}</target>
      <targetType>${target.type}</targetType>
      <username>${username}</username>
      <password>${password}</password>
      <environment>${environment}</environment>
      <properties>
        <key>value</key>
      </properties>
    </armDeployment>
  </configuration>
</plugin>

プロジェクトのフォルダーのコマンドラインから、アプリケーションをパッケージ化してデプロイゴールを実行します。

mvn clean deploy -DmuleDeploy

Authentication のメソッド

Mule Maven プラグインを使用してアプリケーションをデプロイする場合には、デプロイメントプラットフォームに対して認証するためのログイン情報をいくつかの方法で提供できます。使用する認証方法に応じて、デプロイメント設定で指定するパラメーターが異なります。

認証方法 説明 設定パラメーター

ユーザー名とパスワード

Mule インスタンスがインストールされているサーバーのユーザー名とパスワードを使用して認証します。

  • username

  • password

サーバー

Maven サーバーに保存されているログイン情報を使用します。Maven の ​settings.xml​ ファイル内で設定します。

  • server

認証トークン

認証トークンを使用してプラットフォームにアクセスします。
サポートされているシングルサインオン (SSO) 種別は​「ID 管理」​を参照してください。

  • authToken

接続アプリケーション

接続アプリケーションを使用して Anypoint Platform と通信することで、プログラムによって認証を実行します。
接続アプリケーションのログイン情報に ​Design Center Developer​ アクセススコープが設定されている必要があります。
接続アプリケーションを作成する手順は、​「開発者向けの接続アプリケーション」​を参照してください。

  • connectedAppClientId

  • connectedAppClientSecret

  • connectedAppGrantType

設定パラメーターの詳細は、「​Runtime Manager REST API デプロイメントのパラメーターリファレンス​」を参照してください。

Runtime Manager REST API デプロイメントのパラメーターリファレンス

パラメーター 説明 必須

armDeployment

最上位要素。

はい

applicationName

デプロイ時に使用するアプリケーション名を指定します。

はい

muleVersion

アプリケーションをデプロイメント対象で実行するために必要な Mule バージョン。
この値がデプロイメント対象で実行している Mule バージョンに一致しない場合、プラグインで例外が発生します。

この値が一致しない場合、Mule Maven プラグインは Mule Runtime Engine をダウンロードしません。

はい

uri

Anypoint Platform URI。Anypoint Platform PCE を使用している場合、Anypoint Platform インストールの URI を使用してこのパラメーターを指定します。
設定しない場合、デフォルトでこの値は https://anypoint.mulesoft.com に設定されます。

いいえ

target

Mule インスタンスをインストールするサーバーのサーバー名。

はい

targetType

デプロイ先の対象の種別。

有効な値:

  • サーバー

  • serverGroup

  • クラスター

はい

username

Mule インスタンスをインストールするサーバーのユーザー名。

Anypoint Platform ログイン情報を使用してログインする場合のみ。

password

Mule インスタンスをインストールするサーバーのパスワード。

Anypoint Platform ログイン情報を使用してログインする場合のみ。

environment

Mule インスタンスをインストールするサーバーの環境名。この値は、Runtime Manager アカウントで設定されたいずれかの環境に一致する必要があります。
例:

<environment>Sandbox</environment>

はい

businessGroup

デプロイメントのビジネスグループパス
親組織から対象ビジネスグループへの完全な階層パスを指定します。次に例を示します。

<businessGroup>ParentOrg\SubOrg1\myBusinessGroup</businessGroup>

この値は、​businessGroupId​ が設定されている場合は省略されます。​businessGroup​ と ​businessGroupId​ が設定されていない場合、値はデフォルトでユーザーのメインビジネスグループになります。

いいえ

businessGroupId

デプロイメントのビジネスグループ ID
ビジネスグループパスを指定する代わりにビジネスグループ ID を指定してアプリケーションをデプロイできます。​businessGroupId​ と ​businessGroup​ が設定されていない場合、値はデフォルトでユーザーのメインビジネスグループになります。
特定のビジネスグループへのアクセス権のみがあり、親組織へのアクセス権がない場合は、ビジネスグループ ID は必須パラメーターです。
このパラメーターは、プラグインバージョン 3.2.7 以降で使用できます。

いいえ

deploymentTimeout

デプロイメントプロセスの開始からアーティファクトがデプロイされたことの確認までの許容される経過時間 (ミリ秒)

デフォルト値は ​1000000​ です。

いいえ

server

Anypoint Platform ログイン情報を持つ Maven サーバー
これは、Maven ​settings.xml​ ファイルに保存されたログイン情報を使用する場合のみ必要です。これは Mule サーバー名ではありません。

いいえ

properties

最上位要素
デプロイする Mule アプリケーションのプロパティを設定する必要がある場合、最上位要素 ​<properties>​ を使用できます。

<properties>
  <key>value</key>
</properties>

次に例を示します。

<properties>
  <http.port>8081</http.port>
</properties>

いいえ

skip

true​ に設定すると、プラグインデプロイメントゴールをスキップします。
デフォルト値は ​false​ です。

いいえ

skipDeploymentVerification

true​ に設定すると、デプロイされるアプリケーションの検証をスキップします。
デフォルト値は ​false​ です。

いいえ

authToken

プラットフォームにアクセスするための認証トークンを指定します。ユーザー名とパスワードを設定する代わりに、この認証方式を使用できます。
サポートされているシングルサインオン (SSO) 種別は​「ID 管理」​を参照してください。

認証トークンを使用してログインする場合のみ。

connectedAppClientId

接続アプリケーションの ​clientID​ 値を指定します。

接続アプリケーションログイン情報を使用してログインする場合のみ。

connectedAppClientSecret

接続アプリケーションのシークレットキーを指定します。

接続アプリケーションログイン情報を使用してログインする場合のみ。

connectedAppGrantType

サポートされている唯一の接続種別、​client_credentials​ を指定します。

接続アプリケーションログイン情報を使用してログインする場合のみ。

ログイン情報の暗号化

デプロイするときに暗号化ログイン情報を使用するには、Maven マスター暗号化パスワードおよび ​settings-security.xml​ ファイルをセットアップする必要があります。

  1. Maven 設定のマスターパスワードを作成します。

    mvn --encrypt-master-password <yourMasterPassword>

    Maven はマスターパスワードを暗号化して返します。

    {l9vZ2uM5SdgHy+H12z4pX7LEOZn3Kbnqmt3kIquLjnQ=}
  2. ~/.m2 リポジトリで ​settings-security.xml​ ファイルを作成し、暗号化マスターパスワードを追加します。

    <settingsSecurity>
      <master>{l9vZ2uM5SdgHy+H12z4pX7LEOZn3Kbnqmt3kIquLjnQ=}</master>
    </settingsSecurity>
  3. Anypoint Platform パスワードを暗号化します。

    mvn --encrypt-password <yourAnypointPlatformPassword>

    Maven は Anypoint Platform パスワードを暗号化して返します。

    {HTWFGH5BG9QmvJ1B=}
  4. 暗号化 Anypoint Platform パスワードを ​settings.xml​ ファイルの <server> セクションに追加します。

    <settings>
     ...
      <servers>
       ...
        <server>
          <id>my.anypoint.credentials</id>
          <username>my.anypoint.username</username>
          <password>{HTWFGH5BG9QmvJ1B=}</password>
        </server>
       ...
      </servers>
     ...
    </settings>
  5. 設定デプロイメントで、​settings.xml​ ファイルで設定されたサーバー ID を挿入するログイン情報を参照します。

    <plugin>
      ...
      <configuration>
        ...
        <armDeployment>
          ...
          <server>my.anypoint.credentials</server>
          ...
        </armDeployment>
        ...
      </configuration>
      ...
    <plugin>
    ユーザー名とパスワードがデプロイメント設定で設定されていると、定義されたサーバー ID が上書きされるため、設定されていないことを確認してください。

Anypoint Private Cloud Edition での TLS エラーのトラブルシューティング

Anypoint Platform Private Cloud Edition​ インストールの Runtime Manager のインスタンスに接続しようとすると、プラグインはそのサーバーのログイン情報を検証します。トラストストアにサーバーログイン情報をインストールしていない場合、SSL エラーが発生します。この問題を回避するために、非セキュアモードでプラグインを実行できます。このモードでは、セキュリティ検証がスキップされます。​armInsecure​ タグまたは ​arm.insecure​ システムプロパティを使用できます。

非セキュア接続を有効にするのは危険です。実行内容を理解し、オンプレミスインストールがローカルネットワークに隔離されている場合を除き、使用しないでください。

下の設定例を参照してください。

<plugin>
  <groupId>org.mule.tools.maven</groupId>
  <artifactId>mule-maven-plugin</artifactId>
  <version>3.7.1</version>
  <extensions>true</extensions>
  <configuration>
    <armDeployment>
        <target>${target}</target>
        <targetType>${target.type}</targetType>
        <username>${username}</username>
        <password>${password}</password>
        <environment>${environment}</environment>
        <armInsecure>true</armInsecure>
    </armDeployment>
  </configuration>
</plugin>

Runtime Manager エージェントを使用した Mule アプリケーションのデプロイ

plugin​ 要素内に Runtime Manager エージェントデプロイメント用の設定を追加し、URI の値をリモートサーバー情報で置き換えます。

<plugin>
  <groupId>org.mule.tools.maven</groupId>
  <artifactId>mule-maven-plugin</artifactId>
  <version>3.7.1</version>
  <extensions>true</extensions>
  <configuration>
    <agentDeployment>
      <uri>http://localhost:9999/</uri>
    </agentDeployment>
  </configuration>
</plugin>

プロジェクトのフォルダーのコマンドラインから、アプリケーションをパッケージ化してデプロイゴールを実行します。

mvn clean deploy -DmuleDeploy

Runtime Manager エージェントデプロイメントのパラメーターリファレンス

パラメーター 説明 必須

agentDeployment

最上位要素。

はい

applicationName

デプロイ時に使用するアプリケーション名を指定します。

はい

muleVersion

アプリケーションをデプロイメント対象で実行するために必要な Mule バージョン。
この値がデプロイメント対象で実行している Mule バージョンに一致しない場合、プラグインで例外が発生します。

この値が一致しない場合、Mule Maven プラグインは Mule Runtime Engine をダウンロードしません。

はい

uri

Mule インスタンスをインストールするサーバーの URI。

はい

deploymentTimeout

デプロイメントプロセスの開始からアーティファクトがデプロイされたことの確認までの許容される経過時間 (ミリ秒)

デフォルト値は ​1000000​ です。

いいえ

skip

true​ に設定すると、プラグインデプロイメントゴールをスキップします。
デフォルト値は ​false​ です。

いいえ

ドメインのデプロイ

スタンドアロンデプロイメント戦略または Runtime Manager エージェントデプロイメント戦略を使用する場合のみ、Mule Maven プラグインはドメインのデプロイをサポートします。

ドメインをデプロイするには、アプリケーションのデプロイ時に使用するものと同じ設定とデプロイメント手順を使用します。たとえば、スタンドアロンインスタンスにドメインをデプロイするには、次の手順を実行します。

  1. plugin​ 要素内にスタンドアロンデプロイメント用の設定を追加し、プレースホルダーの値をローカルの Mule Runtime Engine 情報で置き換えます。

    <plugin>
      <groupId>org.mule.tools.maven</groupId>
      <artifactId>mule-maven-plugin</artifactId>
      <version>3.7.1</version>
      <extensions>true</extensions>
      <configuration>
        <standaloneDeployment>
          <muleHome>${mule.home.test}</muleHome>
          <muleVersion>${app.runtime}</muleVersion>
        </standaloneDeployment>
      </configuration>
    </plugin>
  2. プロジェクトのフォルダーのコマンドラインから、ドメインをパッケージ化してデプロイゴールを実行します。

    mvn clean deploy -DmuleDeploy

並列でのアプリケーションのデプロイ

オンプレミス Mule インスタンスに複数のアプリケーションを並列にデプロイできます。多数のアプリケーションをデプロイする場合は、並列にデプロイすると起動時間を短縮できます。起動順序は不特定であるため、デプロイメントが失敗しないように、アプリケーションが相互連動していないことを確認します。

並列処理は 20 で固定されています。

並列デプロイを有効にする手順は次のとおりです。

  1. Mule アプリケーションを Mule Runtime Engine インスタンスの ​/apps​ ディレクトリにパッケージ (エクスポート) します。

  2. -M-Dmule.deployment.parallel​ オプションを使用して Mule を起動します。

    mule -M-Dmule.deployment.parallel

これらの手順を実行すると、Mule は ​/apps​ ディレクトリにあるすべてのアプリケーションを並列にデプロイします。

アプリケーションのアンデプロイ

Mule アプリケーションは、アプリケーションフォルダーを直接削除するのではなく、アプリケーションのアンカーファイルを削除することでアンデプロイできます。

アプリケーションのアンカーファイルのみを削除することで、次のようになります。

  • ホットデプロイメントレイヤーからの干渉を防止し、同時の競合アクションの余地をなくします。

  • 一部のオペレーションシステムでアプリケーションの JAR ファイルがロックする問題を回避し、クリーンなシャットダウンとアンデプロイメントを可能にします。

たとえば、​stockTrader​ アプリケーションが実行されている (アプリケーションフォルダーと ​$MULE_HOME/apps/stockTrader-anchor.txt​ ファイルが存在) 場合、アンカーファイルを削除するだけで実行時にアプリケーション Mule インスタンスから削除されます。アプリケーションフォルダーはアプリケーションの終了後に削除されます。

Mule アプリケーションをアンデプロイした後で、​LoggerContext​ が停止するまで 15 秒のタイムアウトがあります。アプリケーションのログファイルはこのタイムアウトが経過した後にならないとリリースされません。この情報は、他のプロセスで使用されているファイルを削除できない Windows では重要です。 Mule アプリケーションをアンデプロイした後で、LoggerContext が停止するまで 15 秒のタイムアウトがあります。アプリケーションのログファイルはこのタイムアウトが経過した後にならないとリリースされません。この情報は、他のプロセスで使用されているファイルを削除できない Windows では重要です。

実行時のアプリケーションの更新

実行時の Mule アプリケーションの更新は、クラスの変更、エンドポイントの変更 (ポートの変更など)、フローの再設定を伴う複雑な変更になる場合があります。アプリケーションの更新では、最初にアプリケーションを適切にシャットダウンしてから、数秒以内にバックグラウンドでアプリケーションを再設定します。このプロセスは、ユーザーに対して透過的に行われます。

アプリケーションは、2 つの方法で更新できます。

  • 展開された既存のアプリケーションフォルダーに変更を追加して、メイン設定ファイル (デフォルトではアプリケーションルートディレクトリにある ​mule-config.xml​) を操作する。
    このオプションを有効にするには、システムプロパティ ​-M-Dmule.deployment.forceParseConfigXmls=true​ を使用して Runtime を起動します。

  • 更新されたバージョンのアプリケーションを含む新しい ​jar​ を ​$MULE_HOME/apps​ ディレクトリに追加する。Mule は、​jar​ を既存アプリケーションの更新バージョンとして検出し、アプリケーションのクリーンな再デプロイを実行します。
    Mule は、古いアプリケーションフォルダーへの変更を破棄します。新しいアプリケーションフォルダーは、​jar​ から展開されたクリーンなアプリケーションフォルダーです。

どちらの方法も、既存のビルドツールと適切に統合されます。