Usare i profili di versione dell'API con Java nell'hub di Azure Stack

Importante

Java SDK è stato aggiornato dalla traccia 1 alla traccia 2. È consigliabile eseguire la migrazione al track 2 SDK il prima possibile. Per istruzioni, vedere questa guida alla migrazione.

Java SDK per l'hub di Azure Stack Resource Manager fornisce strumenti che consentono di creare e gestire l'infrastruttura. I provider di risorse nell'SDK includono calcolo, rete, archiviazione, servizi app e Key Vault di Azure. È possibile trovare il repository di esempi Java ibridi in GitHub. Questo articolo illustra come configurare l'ambiente, ottenere le credenziali corrette, acquisire il repository e creare un gruppo di risorse nell'hub di Azure Stack.

L'uso di Java SDK consente una vera esperienza di sviluppo cloud ibrido. Il passaggio delle dipendenze della versione in POM.xml in Java SDK consente lo sviluppo di cloud ibridi consentendo di passare tra le risorse globali di Azure alle risorse nell'hub di Azure Stack.

Per usare la versione più recente dei servizi, usare il profilo più recente come dipendenza.

È possibile impostare come destinazione l'app alla risorsa nell'hub tack di Azure prendendo la dipendenza com.azure.resourcemanager esistente e modificando la versione da x.y.z a x.y.z-hybrid. I pacchetti ibridi, che forniscono il supporto per l'hub di Azure Stack, usano un -hybrid suffisso alla fine della versione, 1.0.0-hybridad esempio . In questo modo verrà visualizzata una raccolta statica di endpoint associati alla versione.

Per ottenere il profilo più recente, prendere la dipendenza com.azure.resourcemanager esistente e modificare la versione in più recente. I pacchetti Java del profilo più recenti offrono un'esperienza coerente con Azure. I pacchetti condividono lo stesso ID gruppo di Azure com.azure.resourcemanager. Anche l'ID e gli spazi dei nomi degli artefatti sono uguali a quello di Azure globale. Ciò consente di convertire l'app di Azure nell'hub di Azure Stack. Per altre informazioni sugli endpoint usati nell'hub di Azure Stack come par del profilo ibrido, vedere Riepilogo dei profili API.

Il profilo viene specificato nel pom.xml file nel progetto Maven come dipendenza. Il profilo carica automaticamente i moduli se si sceglie la classe corretta dall'elenco a discesa (come si farebbe con .NET).

Configurazione dell'ambiente di sviluppo

Per preparare l'ambiente per l'esecuzione dell'SDK, è possibile usare un IDE, ad esempio Eclipse o Visual Studio Code, ma è necessario avere Git, Java SDK e Apache Maven installati. Per informazioni dettagliate sui prerequisiti per la configurazione dell'ambiente di sviluppo, vedere Usare Azure SDK per Java

  1. Installare Git. È possibile trovare le istruzioni ufficiali per installare Git in Introduzione - Installazione di Git.

  2. Installare Java SDK e impostare la JAVA_HOME variabile di ambiente sul percorso dei file binari per Java Development Kit. È possibile trovare le istruzioni per i supporti di installazione scaricabili per OpenJDK. Installare la versione 8 o successiva di Java Developer Kit.

  3. Installare Apache Maven. È possibile trovare istruzioni nel progetto Apache Maven. Installare Apache Maven è 3.0 o versione successiva.

Profili di versione java e API

Per usare le versioni più recenti di tutti i servizi, usare il profilo più recente come dipendenza.

  • Per usare il profilo più recente, la dipendenza è com.microsoft.azure.

  • Per usare i servizi supportati più recenti disponibili nell'hub di Azure Stack, usare il profilo com.microsoft.azure.profile_2019_03_01_hybrid .

    • Il profilo viene specificato nel file Pom.xml come dipendenza, che carica automaticamente i moduli se si sceglie la classe corretta dall'elenco a discesa (come si farebbe con .NET).
  • Le dipendenze vengono visualizzate come segue:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • Per usare versioni API specifiche per un tipo di risorsa in un provider di risorse specifico, usare le versioni API specifiche definite tramite IntelliSense.

Puoi combinare tutte le opzioni nella stessa app.

Installare Azure Java SDK

Seguire questa procedura per installare Java SDK:

  1. Seguire le istruzioni ufficiali per installare Git. Vedere Introduzione - Installazione di Git.

  2. Seguire le istruzioni per installare Java SDK e Maven. La versione corretta è la versione 8 di Java Developer Kit. La versione corretta di Apache Maven è 3.0 o successiva. Per completare la guida introduttiva, la JAVA_HOME variabile di ambiente deve essere impostata sul percorso di installazione di Java Development Kit. Per altre informazioni, vedere Creare la prima funzione con Java e Maven.

  3. Per installare i pacchetti di dipendenza corretti, aprire il file Pom.xml nell'app Java. Aggiungere una dipendenza, come illustrato nel codice seguente:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. Il set di pacchetti che devono essere installati dipende dalla versione del profilo che si vuole usare. I nomi dei pacchetti per le versioni del profilo sono:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • più recenti

Profiles

Per i profili contenenti date, per usare un profilo SDK o una versione diversa, sostituire la data in com.microsoft.azure.profile<date>_hybrid. Ad esempio, per la versione 2008, il profilo è 2019_03_01e la stringa diventa com.microsoft.azure.profile_2019_03_01_hybrid. Si noti che a volte il team SDK modifica il nome dei pacchetti, quindi la semplice sostituzione della data di una stringa con una data diversa potrebbe non funzionare. Vedere la tabella seguente per l'associazione di profili e versioni di Azure Stack.

Versione di Azure Stack Profilo
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Per altre informazioni sull'hub di Azure Stack e sui profili API, vedere Riepilogo dei profili API.

Subscription

Se non si ha già una sottoscrizione, creare una sottoscrizione e salvare l'ID sottoscrizione da usare in un secondo momento. Per informazioni su come creare una sottoscrizione, vedere questo documento.

Entità servizio

È necessario creare e salvare un'entità servizio e le informazioni sull'ambiente associate. È consigliabile usare un'entità servizio con owner ruolo, ma a seconda dell'esempio può essere sufficiente un contributor ruolo. Per i valori necessari, fare riferimento al file README nel repository di esempio . È possibile leggere questi valori in qualsiasi formato supportato dal linguaggio SDK, ad esempio da un file JSON (usato dagli esempi). A seconda dell'esempio in esecuzione, non tutti questi valori possono essere usati. Per altre informazioni, vedere il repository di esempio per il codice di esempio aggiornato.

ID tenant

Per trovare la directory o l'ID tenant per l'hub di Azure Stack, seguire le istruzioni riportate in questo articolo.

Registrare i provider di risorse

Registrare i provider di risorse necessari seguendo questo documento. Questi provider di risorse saranno necessari a seconda degli esempi da eseguire. Ad esempio, se si vuole eseguire un esempio di macchina virtuale, è necessaria la registrazione del Microsoft.Compute provider di risorse.

Endpoint di Azure Stack Resource Manager

Azure Resource Manager (ARM) è un framework di gestione che consente agli amministratori di distribuire, gestire e monitorare le risorse di Azure. Azure Resource Manager può gestire queste attività come gruppo, anziché singolarmente, in una singola operazione. È possibile ottenere le informazioni sui metadati dall'endpoint Resource Manager. L'endpoint restituisce un file JSON con le informazioni necessarie per eseguire il codice.

  • ResourceManagerEndpointUrl in Azure Stack Development Kit (ASDK) è: https://management.local.azurestack.external/.
  • ResourceManagerEndpointUrl nei sistemi integrati è: https://management.region.<fqdn>/, dove <fqdn> è il nome di dominio completo.
  • Per recuperare i metadati necessari: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Per le versioni api disponibili, vedere Specifiche dell'API rest di Azure. Ad esempio, nella versione del 2020-09-01 profilo è possibile modificare in per il api-version2019-10-01 provider microsoft.resourcesdi risorse .

JSON di esempio:

{
   "galleryEndpoint": "https://portal.local.azurestack.external:30015/",
   "graphEndpoint": "https://graph.windows.net/",
   "portal Endpoint": "https://portal.local.azurestack.external/",
   "authentication": 
      {
         "loginEndpoint": "https://login.windows.net/",
         "audiences": ["https://management.yourtenant.onmicrosoft.com/3cc5febd-e4b7-4a85-a2ed-1d730e2f5928"]
      }
}

Considerare attendibile il certificato radice della CA dell'hub di Azure Stack

Se si usa Azure Stack Development Kit (ASDK), è necessario considerare attendibile il certificato radice ca nel computer remoto. Non è necessario considerare attendibile il certificato radice della CA con i sistemi integrati dell'hub di Azure Stack.

Windows

  1. Esportare il certificato autofirmato dell'hub di Azure Stack nel desktop.

  2. In un prompt dei comandi modificare la directory in %JAVA_HOME%\bin.

  3. Eseguire il comando seguente:

    .\keytool.exe -importcert -noprompt -file <location of the exported certificate here> -alias root -keystore %JAVA_HOME%\lib\security\cacerts -trustcacerts -storepass changeit
    

Profili API esistenti

  • com.microsoft.azure.profile_2019_03_01_hybrid: profilo più recente compilato per l'hub di Azure Stack. Usare questo profilo per i servizi per essere più compatibili con l'hub di Azure Stack, purché si trovi nel 1904 o versioni successive.

  • com.microsoft.azure.profile_2018_03_01_hybrid: profilo compilato per l'hub di Azure Stack. Usare questo profilo per i servizi per essere compatibili con Azure Stack Hub versioni 1808 o successive.

  • com.microsoft.azure: profilo costituito dalle versioni più recenti di tutti i servizi. Usare le versioni più recenti di tutti i servizi.

Per altre informazioni sui profili dell'hub e delle API di Azure Stack, vedere Riepilogo dei profili API.

Utilizzo del profilo API di Azure Java SDK

Il codice seguente autentica l'entità servizio nell'hub di Azure Stack. Crea un token usando l'ID tenant e la base di autenticazione, specifica per l'hub di Azure Stack:

AzureTokenCredentials credentials = new ApplicationTokenCredentials(client, tenant, key, AZURE_STACK)
                    .withDefaultSubscriptionID(subscriptionID);
Azure azureStack = Azure.configure()
                    .withLogLevel(com.microsoft.rest.LogLevel.BASIC)
                    .authenticate(credentials, credentials.defaultSubscriptionID());

Questo codice consente di usare le dipendenze del profilo API per distribuire correttamente l'app nell'hub di Azure Stack.

Definire le funzioni di impostazione dell'ambiente dell'hub di Azure Stack

Per registrare il cloud dell'hub di Azure Stack con gli endpoint corretti, usare il codice seguente:

// Get Azure Stack Hub cloud endpoints
final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);

AzureEnvironment AZURE_STACK = new AzureEnvironment(new HashMap<String, String>() {
                {
                    put("managementEndpointUrl", settings.get("audience"));
                    put("resourceManagerEndpointUrl", armEndpoint);
                    put("galleryEndpointUrl", settings.get("galleryEndpoint"));
                    put("activeDirectoryEndpointUrl", settings.get("login_endpoint"));
                    put("activeDirectoryResourceID", settings.get("audience"));
                    put("activeDirectoryGraphResourceID", settings.get("graphEndpoint"));
                    put("storageEndpointSuffix", armEndpoint.substring(armEndpoint.indexOf('.')));
                    put("keyVaultDnsSuffix", ".vault" + armEndpoint.substring(armEndpoint.indexOf('.')));
                }
            });

La getActiveDirectorySettings chiamata nel codice precedente recupera gli endpoint dagli endpoint dei metadati. Indica le variabili di ambiente della chiamata effettuata:

public static HashMap<String, String> getActiveDirectorySettings(String armEndpoint) {

    HashMap<String, String> adSettings = new HashMap<String, String>();
    try {

        // create HTTP Client
        HttpClient httpClient = HttpClientBuilder.create().build();

        // Create new getRequest with below mentioned URL
        HttpGet getRequest = new HttpGet(String.format("%s/metadata/endpoints?api-version=1.0",
                             armEndpoint));

        // Add additional header to getRequest which accepts application/xml data
        getRequest.addHeader("accept", "application/xml");

        // Execute request and catch response
        HttpResponse response = httpClient.execute(getRequest);

        // Check for HTTP response code: 200 = success
        if (response.getStatusLine().getStatusCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
        }

        String responseStr = EntityUtils.toString(response.getEntity());
        JSONObject responseJson = new JSONObject(responseStr);
        adSettings.put("galleryEndpoint", responseJson.getString("galleryEndpoint"));
        JSONObject authentication = (JSONObject) responseJson.get("authentication");
        String audience = authentication.get("audiences").toString().split("\"")[1];
        adSettings.put("login_endpoint", authentication.getString("loginEndpoint"));
        adSettings.put("audience", audience);
        adSettings.put("graphEndpoint", responseJson.getString("graphEndpoint"));

    } catch (ClientProtocolException cpe) {
        cpe.printStackTrace();
        throw new RuntimeException(cpe);
    } catch (IOException ioe) {
        ioe.printStackTrace();
        throw new RuntimeException(ioe);
    }
    return adSettings;
}

Progetto di unit test di esempio

  1. Clonare il repository usando il comando seguente:

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Creare un'entità servizio di Azure e assegnare un ruolo per accedere alla sottoscrizione. Per istruzioni sulla creazione di un'entità servizio, vedere Usare Azure PowerShell per creare un'entità servizio con un certificato.

  3. Recuperare le variabili di ambiente necessarie seguenti:

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. Impostare le variabili di ambiente seguenti usando le informazioni recuperate dall'entità servizio creata usando il prompt dei comandi:

    • export AZURE_TENANT_ID={your tenant ID}
    • export AZURE_CLIENT_ID={your client ID}
    • export AZURE_CLIENT_SECRET={your client secret}
    • export AZURE_SUBSCRIPTION_ID={your subscription ID}
    • export ARM_ENDPOINT={your Azure Stack Hub Resource Manager URL}
    • export RESOURCE_LOCATION={location of Azure Stack Hub}

    In Windows usare il set anziché l'esportazione.

  5. Usare la getActiveDirectorySettings funzione per recuperare gli endpoint dei metadati di Azure Resource Manager.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. Nel file Pom.xml aggiungere la dipendenza seguente per usare il profilo ibrido 2019-03-01-ibrido per l'hub di Azure Stack. Questa dipendenza installa i moduli associati a questo profilo per i provider di risorse Compute, Networking, Storage, Key Vault e Servizi app:

    <dependency>
      <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
      <artifactId>azure</artifactId>
      <version>1.0.0-beta-1</version>
    </dependency>
    
  7. Nel prompt dei comandi aperto per impostare le variabili di ambiente immettere il comando seguente:

    mvn clean compile exec:java
    

Esempi

Vedere questo repository di esempio per il codice di esempio update-to-date (track 2). Vedere questo repository di esempio per il codice di esempio traccia 1. La radice README.md descrive i requisiti generali e ogni sottocartella contiene un esempio specifico con il proprio README.md su come eseguire tale esempio.

Per l'esempio applicabile alla versione 2008 o al profilo 2019-03-01 di Azure Stack, vedere qui.

Passaggi successivi

Altre informazioni sui profili API: