2016-02-11 21:43:45 -05:00
|
|
|
jclouds Labs - Azure Compute ARM Provider
|
|
|
|
============
|
|
|
|
|
|
|
|
Build status for azurecomputearm module:
|
2016-04-07 06:15:35 -04:00
|
|
|
[![Build Status](https://jclouds.ci.cloudbees.com/buildStatus/icon?job=jclouds-labs/org.apache.jclouds.labs$azurecompute-arm)](https://jclouds.ci.cloudbees.com/job/jclouds-labs/org.apache.jclouds.labs$azurecompute-arm/)
|
2016-04-06 17:16:46 -04:00
|
|
|
|
2016-02-11 21:43:45 -05:00
|
|
|
## Setting Up Test Credentials
|
|
|
|
|
|
|
|
### Create a Service Principal
|
|
|
|
|
|
|
|
Install and configure Azure CLI following these [steps](http://azure.microsoft.com/en-us/documentation/articles/xplat-cli/).
|
|
|
|
|
|
|
|
Using the Azure CLI, run the following commands to create a service principal
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# Set mode to ARM
|
|
|
|
azure config mode arm
|
|
|
|
|
|
|
|
# Enter your Microsoft account credentials when prompted
|
|
|
|
azure login
|
|
|
|
|
|
|
|
# Set current subscription to create a service principal
|
|
|
|
azure account set <Subscription-id>
|
|
|
|
|
|
|
|
# Create an AAD application with your information.
|
|
|
|
azure ad app create --name <name> --password <password> --home-page <home-page> --identifier-uris <identifier-uris>
|
|
|
|
|
|
|
|
# For example: azure ad app create --name "jcloudsarm" --password abcd --home-page "https://jcloudsarm" --identifier-uris "https://jcloudsarm"
|
|
|
|
|
|
|
|
# Output will include a value for `Application Id`, which will be used for the live tests
|
|
|
|
|
|
|
|
# Create a Service Principal
|
|
|
|
azure ad sp create <Application-id>
|
|
|
|
|
2016-09-28 12:20:26 -04:00
|
|
|
# Output will include a value for `Object Id`, to be used in the next step
|
2016-02-11 21:43:45 -05:00
|
|
|
```
|
|
|
|
|
|
|
|
Run the following commands to assign roles to the service principal
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# Assign roles for this service principal
|
|
|
|
azure role assignment create --objectId <Object-id> -o Contributor -c /subscriptions/<Subscription-id>/
|
|
|
|
```
|
|
|
|
|
2017-01-10 12:19:04 -05:00
|
|
|
Look up the the tenant Id
|
|
|
|
|
|
|
|
```bash
|
|
|
|
azure account show -s <Subscription-id> --json
|
|
|
|
|
|
|
|
# output will be a JSON which will include the `Tenant id`
|
|
|
|
```
|
|
|
|
|
2016-02-11 21:43:45 -05:00
|
|
|
Verify service principal
|
|
|
|
|
|
|
|
```bash
|
|
|
|
azure login -u <Application-id> -p <password> --service-principal --tenant <Tenant-id>
|
|
|
|
```
|
|
|
|
|
|
|
|
## Run Live Tests
|
|
|
|
|
2016-05-16 21:55:01 -04:00
|
|
|
Use the following to run one live test:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
mvn -Dtest=<name of the live test> \
|
|
|
|
-Dtest.azurecompute-arm.identity="<Application-id>" \
|
|
|
|
-Dtest.azurecompute-arm.credential="<password>" \
|
|
|
|
-Dtest.azurecompute-arm.endpoint="https://management.azure.com/subscriptions/<Subscription-id>" \
|
2016-09-28 12:20:26 -04:00
|
|
|
-Dtest.oauth.endpoint="https://login.microsoftonline.com/<Tenant-id>/oauth2/token"
|
|
|
|
integration-test -Plive
|
2016-05-16 21:55:01 -04:00
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
Use the following to run all the live tests:
|
2016-02-11 21:43:45 -05:00
|
|
|
|
|
|
|
```bash
|
|
|
|
|
2016-04-06 17:16:46 -04:00
|
|
|
mvn clean verify -Plive \
|
2016-05-16 21:55:01 -04:00
|
|
|
-Dtest.azurecompute-arm.identity="<Application-id>"" \
|
|
|
|
-Dtest.azurecompute-arm.credential="<password>"" \
|
|
|
|
-Dtest.azurecompute-arm.endpoint="https://management.azure.com/subscriptions/<Subscription-id>"" \
|
2016-04-06 17:16:46 -04:00
|
|
|
-Dtest.oauth.endpoint=https://login.microsoftonline.com/<Tenant-id>/oauth2/token
|
2016-05-16 21:55:01 -04:00
|
|
|
|
2016-04-07 06:15:35 -04:00
|
|
|
```
|
2016-08-11 04:52:27 -04:00
|
|
|
|
|
|
|
## How to use it
|
|
|
|
|
|
|
|
Azure Compute ARM provider works exactly as any other jclouds provider.
|
|
|
|
Notice that as Azure supports dozens of locations, operations like listImages can be really time-consuming.
|
|
|
|
To limit the scope of such operations there are some additional properties you may want to use:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
jclouds.azurecompute.arm.publishers
|
|
|
|
```
|
|
|
|
which is by default `Canonical,RedHat`
|
|
|
|
|
|
|
|
and
|
|
|
|
```bash
|
|
|
|
jclouds.regions
|
|
|
|
```
|
|
|
|
which is by default `null`. If you want to target only the `north europe` region, you can use
|
|
|
|
|
|
|
|
```bash
|
|
|
|
jclouds.regions="northeurope"
|
|
|
|
```
|