API-versie profielen gebruiken met Go in Azure Stack hubUse API version profiles with Go in Azure Stack Hub

Go-en versie profielenGo and version profiles

Een profiel is een combi natie van verschillende resource typen met verschillende versies van verschillende services.A profile is a combination of different resource types with different versions from different services. Met behulp van een profiel kunt u verschillende resource typen combi neren en vergelijken.Using a profile helps you mix and match between different resource types. Profielen kunnen de volgende voor delen bieden:Profiles can provide the following benefits:

  • Stabiliteit voor uw app door het vergren delen van specifieke API-versies.Stability for your app by locking to specific API versions.
  • Compatibiliteit voor uw app met Azure Stack hub en regionale Azure-data centers.Compatibility for your app with Azure Stack Hub and regional Azure datacenters.

In de go-SDK zijn profielen beschikbaar onder het pad Profiles.In the Go SDK, profiles are available under the profiles path. Profiel versie nummers worden aangeduid met de notatie jjjj-mm-dd .Profile version numbers are labeled in the YYYY-MM-DD format. De nieuwste Azure Stack hub API-profiel versie is 2019-03-01 voor Azure stack hub-versie 1904 of hoger.The latest Azure Stack Hub API profile version is 2019-03-01 for Azure Stack Hub versions 1904 or later. Als u een bepaalde service uit een profiel wilt importeren, moet u de bijbehorende module uit het profiel importeren.To import a given service from a profile, import its corresponding module from the profile. Gebruik bijvoorbeeld de volgende code om de Compute -service te importeren uit 2019-03-01 -profiel:For example, to import Compute service from 2019-03-01 profile, use the following code:

import "github.com/Azure/azure-sdk-for-go/profiles/2019-03-01/compute/mgmt/compute"

De Azure SDK voor Go installerenInstall the Azure SDK for Go

  1. Installeer Git.Install Git. Zie Getting Started-install Git (Engelstalig) voor instructies.For instructions, see Getting Started - Installing Git.

  2. Installeer de programmeer taal go.Install the Go programming language. Voor API-profielen voor Azure is Go-versie 1,9 of nieuwer vereist.API profiles for Azure require Go version 1.9 or newer.

  3. Installeer de Azure go SDK en de bijbehorende afhankelijkheden door de volgende bash-opdracht uit te voeren:Install the Azure Go SDK and its dependencies by running the following bash command:

    go get -u -d github.com/Azure/azure-sdk-for-go/...
    

De go-SDKThe Go SDK

Meer informatie over de Azure go SDK vindt u op de volgende koppelingen:You can find more information about the Azure Go SDK at the following links:

Go-AutoRest afhankelijkhedenGo-AutoRest dependencies

De go SDK is afhankelijk van de Azure Go-auto rest- modules om rest-aanvragen naar Azure Resource Manager-eind punten te verzenden.The Go SDK depends on the Azure Go-AutoRest modules to send REST requests to Azure Resource Manager endpoints. U moet de module afhankelijkheden van Azure Go-rerest van Azure Go-AutoRest op githubimporteren.You must import the Azure Go-AutoRest module dependencies from Azure Go-AutoRest on GitHub. U kunt de opdrachten voor het installeren van bash vinden in de sectie installatie .You can find the install bash commands in the Install section.

Go SDK-profielen gebruiken op Azure Stack hubHow to use Go SDK profiles on Azure Stack Hub

Voer de volgende stappen uit om een voor beeld van Go-code uit te voeren op Azure Stack hub:To run a sample of Go code on Azure Stack Hub, follow these steps:

  1. Installeer de Azure SDK voor Go en de bijbehorende afhankelijkheden.Install the Azure SDK for Go and its dependencies. Zie voor instructies de vorige sectie, installeer Azure SDK voor Go.For instructions, see the previous section, Install Azure SDK for Go.

  2. De meta gegevens ophalen van het Resource Manager-eind punt.Get the metadata info from the Resource Manager endpoint. Het eind punt retourneert een JSON-bestand met de informatie die nodig is om uw Go-code uit te voeren.The endpoint returns a JSON file with the info required to run your Go code.

    Notitie

    De ResourceManagerUrl in de Azure stack Development Kit (ASDK) is: https://management.local.azurestack.external/The ResourceManagerUrl in the Azure Stack Development Kit (ASDK) is: https://management.local.azurestack.external/
    De ResourceManagerUrl in geïntegreerde systemen is: https://management.<region>.<fqdn>/The ResourceManagerUrl in integrated systems is: https://management.<region>.<fqdn>/
    De vereiste meta gegevens ophalen: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0To retrieve the metadata required: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0

    Voor beeld van JSON-bestand:Sample JSON file:

    { "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"]
      }
    }
    
  3. Als dat niet het geval is, maakt u een abonnement en slaat u de abonnements-ID op die u later wilt gebruiken.If not available, create a subscription and save the subscription ID to be used later. Zie abonnementen voor aanbiedingen maken in azure stack hubvoor meer informatie over het maken van een abonnement.For info on creating a subscription, see Create subscriptions to offers in Azure Stack Hub.

  4. Maak een service-principal die gebruikmaakt van een client geheim, met het abonnements bereik en de rol van eigenaar .Create a service principal that uses a client secret, with Subscription scope and Owner role. Sla de ID en het geheim van de Service-Principal op.Save the service principal ID and secret. Zie voor meer informatie over het maken van een service-principal voor Azure Stack hub een app-identiteit gebruiken voor toegang tot resources.For information about creating a service principal for Azure Stack Hub, see Use an app identity to access resources. Uw Azure Stack hub-omgeving is nu ingesteld.Your Azure Stack Hub environment is now set up.

  5. Importeer een service module uit het Go-SDK-profiel in uw code.Import a service module from the Go SDK profile in your code. De huidige versie van Azure Stack hub-profiel is 2019-03-01.The current version of Azure Stack Hub profile is 2019-03-01. Als u bijvoorbeeld een netwerk module wilt importeren uit het profiel type 2019-03-01 , gebruikt u de volgende code:For example, to import a network module from the 2019-03-01 profile type, use the following code:

    package main
     import "github.com/Azure/azure-sdk-for-go/profiles/2019-03-01/network/mgmt/network"
    
  6. In uw functie maakt en verifieert u een client met een nieuwe client functie aanroep.In your function, create and authenticate a client with a New client function call. Gebruik de volgende code om een virtuele netwerk-client te maken:To create a virtual network client, use the following code:

    package main
    
    import "github.com/Azure/azure-sdk-for-go/profiles/2019-03-01/network/mgmt/network"
    
    func main() {
       vnetClient := network.NewVirtualNetworksClientWithBaseURI("<baseURI>", "(subscriptionID>")
       vnetClient.Authorizer = autorest.NewBearerAuthorizer(token)
    

    Stel <baseURI> in op de waarde ResourceManagerUrl die wordt gebruikt in stap 2.Set <baseURI> to the ResourceManagerUrl value used in step 2. Ingesteld <subscriptionID> op de abonnements -waarde die is opgeslagen uit stap 3.Set <subscriptionID> to the SubscriptionID value saved from step 3.

    Zie de volgende sectie voor het maken van het token.To create the token, see the next section.

  7. API-methoden aanroepen met behulp van de client die u in de vorige stap hebt gemaakt.Invoke API methods by using the client that you created in the previous step. Als u bijvoorbeeld een virtueel netwerk wilt maken met behulp van de-client uit de vorige stap, raadpleegt u het volgende voor beeld:For example, to create a virtual network by using the client from the previous step, see the following example:

    package main
    
    import "github.com/Azure/azure-sdk-for-go/profiles/2019-03-01/network/mgmt/network"
    func main() {
    vnetClient := network.NewVirtualNetworksClientWithBaseURI("<baseURI>", "(subscriptionID>")
    vnetClient .Authorizer = autorest.NewBearerAuthorizer(token)
    
    vnetClient .CreateOrUpdate( )
    

Zie het voor beeldvoor een volledig voor beeld van het maken van een virtueel netwerk op Azure stack hub met behulp van het profiel go SDK.For a complete example of creating a virtual network on Azure Stack Hub by using the Go SDK profile, see the example.

VerificatieAuthentication

Als u de eigenschap autoriseren van Azure Active Directory wilt ophalen met behulp van de go-SDK, installeert u de modules Go-auto rest .To get the Authorizer property from Azure Active Directory using the Go SDK, install the Go-AutoRest modules. Deze modules moeten al zijn geïnstalleerd met de installatie van ' go SDK '.These modules should have been already installed with the "Go SDK" installation. Als dat niet het geval is, installeert u het verificatie pakket vanuit github.If they aren't, install the authentication package from GitHub.

De autoriseer moet worden ingesteld als de machtiging voor de resource-client.The Authorizer must be set as the authorizer for the resource client. Er zijn verschillende manieren om geautoriseerde tokens op Azure Stack hub op te halen met behulp van client referenties:There are different ways to get authorizer tokens on Azure Stack Hub by using client credentials:

  1. Als er een service-principal met de rol eigenaar van het abonnement beschikbaar is, slaat u deze stap over.If a service principal with owner role on the subscription is available, skip this step. Zie anders een app-identiteit gebruiken om toegang te krijgen tot bronnen voor instructies over het maken van een service-principal die gebruikmaakt van een client geheim en voor hulp bij het toewijzen van een rol als eigenaar voor uw abonnement.Otherwise, see Use an app identity to access resources for instructions on creating a service principal that uses a client secret, and for help on how to assign it an "owner" role scoped to your subscription. Zorg ervoor dat u de toepassings-ID en het geheim van de Service-Principal vastlegt.Be sure to capture the service principal application ID and secret.

  2. Importeer het adal -pakket van Go-auto rest in uw code.Import the adal package from Go-AutoRest in your code.

    package main
    import "github.com/Azure/go-autorest/autorest/adal"
    
  3. Maak een oauthConfig met behulp van de methode NewOAuthConfig van de module adal .Create an oauthConfig by using NewOAuthConfig method from adal module.

    package main
    
    import "github.com/Azure/go-autorest/autorest/ada1"
    
    func CreateToken() (adal.OAuthTokenProvider, error) {
       var token adal.OAuthTokenProvider
       oauthConfig, err := adal.NewOAuthConfig(activeDirectoryEndpoint, tenantID)
    }
    

    Ingesteld <activeDirectoryEndpoint> op de waarde van de loginEndpoint eigenschap van de ResourceManagerUrl meta gegevens die zijn opgehaald in de vorige sectie van dit document.Set <activeDirectoryEndpoint> to the value of the loginEndpoint property from the ResourceManagerUrl metadata retrieved on the previous section of this document. Stel de <tenantID> waarde in op de Tenant-id van uw Azure stack hub.Set the <tenantID> value to your Azure Stack Hub tenant ID.

  4. Maak ten slotte een Service-Principal-token met behulp NewServicePrincipalToken van de methode vanuit de adal -module:Finally, create a service principal token by using the NewServicePrincipalToken method from the adal module:

    package main
    
    import "github.com/Azure/go-autorest/autorest/adal"
    
    func CreateToken() (adal.OAuthTokenProvider, error) {
        var token adal.OAuthTokenProvider
        oauthConfig, err := adal.NewOAuthConfig(activeDirectoryEndpoint, tenantID)
        token, err = adal.NewServicePrincipalToken(
            *oauthConfig,
            clientID,
            clientSecret,
            activeDirectoryResourceID)
        return token, err
    

    Ingesteld <activeDirectoryResourceID> op een van de waarden in de lijst ' doel groep ' van de ResourceManagerUrl -meta gegevens die zijn opgehaald in de vorige sectie van dit artikel.Set <activeDirectoryResourceID> to one of the values in the "audience" list from the ResourceManagerUrl metadata retrieved in the previous section of this article. Stel <clientID> in dat de Service-Principal-toepassings-id wordt opgeslagen wanneer de Service-Principal is gemaakt in de vorige sectie van dit artikel.Set <clientID> to the service principal application ID saved when the service principal was created in the previous section of this article. Ingesteld <clientSecret> op het Service-Principal-toepassings geheim dat is opgeslagen wanneer de Service-Principal is gemaakt in de vorige sectie van dit artikel.Set <clientSecret> to the service principal application secret saved when the service principal was created in the previous section of this article.

VoorbeeldExample

Dit voor beeld toont een voor beeld van Go-code waarmee een virtueel netwerk op Azure Stack hub wordt gemaakt.This example shows a sample of Go code that creates a virtual network on Azure Stack Hub. Zie de Azure go SDK samples-opslag plaatsvoor volledige voor beelden van de go-SDK.For complete examples of the Go SDK, see the Azure Go SDK samples repository. Azure Stack hub-voor beelden zijn beschikbaar onder het hybride pad binnen de service mappen van de opslag plaats.Azure Stack Hub samples are available under the hybrid path inside service folders of the repository.

Notitie

Als u de code in dit voor beeld wilt uitvoeren, controleert u of het gebruikte abonnement de netwerk resource provider bevat die is geregistreerd.To run the code in this example, verify that the subscription used has the Network resource provider listed as Registered. Als u wilt controleren, zoekt u het abonnement in de Azure Stack hub-Portal en selecteert u resource providers.To verify, look for the subscription in the Azure Stack Hub portal, and select Resource providers.

  1. Importeer de vereiste pakketten in de code.Import the required packages in your code. Gebruik het meest recente beschik bare profiel op Azure Stack hub om de netwerk module te importeren:Use the latest available profile on Azure Stack Hub to import the network module:

    package main
    
    import (
        "context"
        "fmt"
        "github.com/Azure/azure-sdk-for-go/profiles/2019-03-01/network/mgmt/network"
        "github.com/Azure/go-autorest/autorest"
        "github.com/Azure/go-autorest/autorest/adal"
        "github.com/Azure/go-autorest/autorest/to"
    )
    
  2. Definieer uw omgevings variabelen.Define your environment variables. Als u een virtueel netwerk wilt maken, moet u een resource groep hebben.To create a virtual network, you must have a resource group.

    var (
        activeDirectoryEndpoint = "yourLoginEndpointFromResourceManagerUrlMetadata"
        tenantID = "yourAzureStackTenantID"
        clientID = "yourServicePrincipalApplicationID"
        clientSecret = "yourServicePrincipalSecret"
        activeDirectoryResourceID = "yourAudienceFromResourceManagerUrlMetadata"
        subscriptionID = "yourSubscriptionID"
        baseURI = "yourResourceManagerURL"
        resourceGroupName = "existingResourceGroupName"
    )
    
  3. Nu u de omgevings variabelen hebt gedefinieerd, voegt u een methode toe voor het maken van een verificatie token met behulp van het adal -pakket.Now that you've defined your environment variables, add a method to create an authentication token by using the adal package. Zie de vorige sectie voor meer informatie over verificatie.For more info on authentication, see the previous section.

    //CreateToken creates a service principal token
    func CreateToken() (adal.OAuthTokenProvider, error) {
       var token adal.OAuthTokenProvider
       oauthConfig, err := adal.NewOAuthConfig(activeDirectoryEndpoint, tenantID)
       token, err = adal.NewServicePrincipalToken(
           *oauthConfig,
           clientID,
           clientSecret,
           activeDirectoryResourceID)
       return token, err
    }
    
  4. Voeg de- main methode toe.Add the main method. De main methode haalt eerst een token op met behulp van de methode die is gedefinieerd in de vorige stap.The main method first gets a token by using the method that is defined in the previous step. Vervolgens wordt een client gemaakt met behulp van een netwerk module uit het profiel.Then, it creates a client by using a network module from the profile. Ten slotte wordt er een virtueel netwerk gemaakt.Finally, it creates a virtual network.

    package main
    
    import (
       "context"
       "fmt"
       "github.com/Azure/azure-sdk-for-go/profiles/2019-03-01/network/mgmt/network"
       "github.com/Azure/go-autorest/autorest"
       "github.com/Azure/go-autorest/autorest/adal"
       "github.com/Azure/go-autorest/autorest/to"
    )
    
    var (
       activeDirectoryEndpoint = "yourLoginEndpointFromResourceManagerUrlMetadata"
       tenantID = "yourAzureStackTenantID"
       clientID = "yourServicePrincipalApplicationID"
       clientSecret = "yourServicePrincipalSecret"
       activeDirectoryResourceID = "yourAudienceFromResourceManagerUrlMetadata"
      subscriptionID = "yourSubscriptionID"
      baseURI = "yourResourceManagerURL"
      resourceGroupName = "existingResourceGroupName"
    )
    
    //CreateToken creates a service principal token
    func CreateToken() (adal.OAuthTokenProvider, error) {
       var token adal.OAuthTokenProvider
       oauthConfig, err := adal.NewOAuthConfig(activeDirectoryEndpoint, tenantID)
       token, err = adal.NewServicePrincipalToken(
           *oauthConfig,
           clientID,
           clientSecret,
           activeDirectoryResourceID)
       return token, err
    }
    
    func main() {
       token, _ := CreateToken()
       vnetClient := network.NewVirtualNetworksClientWithBaseURI(baseURI, subscriptionID)
       vnetClient.Authorizer = autorest.NewBearerAuthorizer(token)
       future, _ := vnetClient.CreateOrUpdate(
           context.Background(),
           resourceGroupName,
           "sampleVnetName",
           network.VirtualNetwork{
               Location: to.StringPtr("local"),
               VirtualNetworkPropertiesFormat: &network.VirtualNetworkPropertiesFormat{
                   AddressSpace: &network.AddressSpace{
                       AddressPrefixes: &[]string{"10.0.0.0/8"},
                   },
                   Subnets: &[]network.Subnet{
                       {
                           Name: to.StringPtr("subnetName"),
                           SubnetPropertiesFormat: &network.SubnetPropertiesFormat{
                               AddressPrefix: to.StringPtr("10.0.0.0/16"),
                           },
                       },
                   },
               },
           })
       err := future.WaitForCompletionRef(context.Background(), vnetClient.Client)
       if err != nil {
           fmt.Printf(err.Error())
           return
       }
    }
    

Enkele van de code voorbeelden die beschikbaar zijn voor Azure Stack hub met behulp van de go SDK zijn:Some of the code samples available for Azure Stack Hub using the Go SDK are:

Volgende stappenNext steps