| = TomEE deployment on Azure |
| :index-group: Unrevised |
| :jbake-type: page |
| :jbake-status: published |
| |
| This example uses a basic echo application, deployed with embedded TomEE on the Azure Cloud. |
| |
| We use the TomEE maven plugin to package the app with TomEE Embedded |
| in order to generate a fat jar. This jar is then picked up and deployed by the azure-webapp-maven-plugin. |
| |
| == Azure Setup |
| |
| In order for the Azure plugin to work, you will need to have an Azure account and add a subscription to it. |
| Then, on your development machine, install the Azure command-line interface (CLI) and authenticate with the command |
| line, before you can deploy your application. |
| |
| - Create an Azure Account, if you don't have one, at https://azure.microsoft.com/en-us |
| - Use the free option, if available or https://portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade[add a subscription]. |
| - https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest[Install] the Azure (CLI) according |
| to operating system of the computer you are using to develop. |
| |
| - Finally you can setup your development computer. |
| |
| === Login into Azure |
| |
| `az login` |
| |
| The result: |
| |
| ---- |
| [ |
| { |
| "cloudName": "AzureCloud", |
| "id": "aaaaaaaa-aaaa-aaaa-aaaaa-aaaaaaaaaa", |
| "isDefault": true, |
| "name": "Pay-As-You-Go", |
| "state": "Enabled", |
| "tenantId": "bbbbbbb-bbbbb-bbbb-bbbbb-bbbbbbbbbbb", |
| "user": { |
| "name": "<your azure account's email>", |
| "type": "user" |
| } |
| } |
| ] |
| ---- |
| The TenantId is someone that can register and manage apps, yourself. You will need that for later. |
| |
| |
| === Create a service principal |
| An Azure service principal is a security identity used by user-created apps, services, |
| and automation tools to access specific Azure resources: |
| |
| ---- |
| az ad sp create-for-rbac --name http://<your-sub-domain> --password <password for this app> |
| |
| { |
| "appId": "cccccccc-cccc-cccc-cccc-ccccccccccccccc", |
| "displayName": "cloud-tomee-azure", |
| "name": "http://cloud-tomee-azure", |
| "password": "<password for this app>", |
| "tenant": "bbbbbbb-bbbbb-bbbb-bbbbb-bbbbbbbbbbb" |
| } |
| ---- |
| The <your-sub-domain>, also called the service principal name in the Azure documentation. |
| In this example "http://cloud-tomee-azure". It has to be unique across Azure. |
| The appId is the identification of the app service. |
| |
| === Configure Maven |
| |
| You could continue just using the Azure CLI for authentication but we can also do it permanently with Maven. |
| |
| In that case we need to edit Maven's settings.xml so the azure-webapp-maven-plugin can authenticate against Azure: |
| |
| You can add a new server to `~/.m2/settings.xml` like this: |
| ---- |
| <server> |
| <id>azure-auth</id> |
| <configuration> |
| <client>cccccccc-cccc-cccc-cccc-ccccccccccccccc</client> |
| <tenant>bbbbbbb-bbbbb-bbbb-bbbbb-bbbbbbbbbbb</tenant> |
| <key><password for this app></key> |
| <environment>AZURE</environment> |
| </configuration> |
| </server> |
| ---- |
| That's it. You can now build the example and deploy it to Azure just using Maven: |
| |
| `mvn clean install -Pazure-single-jar azure-webapp:deploy` |
| |
| The azure-webapp is explicitly invoked because it relies on you Azure account. The standard TomEE build will not use an Azure account. |
| |
| The end URL will look like: |
| |
| `https://<your-sub-domain>.azurewebsites.net/cloud-tomee-azure-8.0.0-SNAPSHOT/echo/send-this-back` |
| |
| ==== Notes |
| |
| At the moment of creation of this example there is a bug on azure with the JAVA_HOME that prevents the deployment. |
| Check: https://github.com/Azure-App-Service/java/issues/11 |
| The workaround is to set the Env. variable on the Azure web console and restart the app. |
| |
| To deploy the echo app locally you can execute: |
| |
| `mvn tomee:run` |
| |
| You can test the app by calling `http://localhost/cloud-tomee-azure-8.0.0-SNAPSHOT/echo/send-this-back` |
| |
| It will return send-this-back. |
| |
| The echo app is also available with a simple war file that you can deploy on TomEE manually, for testing purposes. |