Partager via


Utiliser des profils de version d’API avec Ruby dans Azure Stack Hub

Ruby et les profils de version d’API

Le kit de développement logiciel (SDK) Ruby pour Azure Stack Hub Resource Manager fournit des outils pour vous aider à créer et à gérer votre infrastructure. Les fournisseurs de ressources du SDK incluent le calcul, les réseaux virtuels et le stockage avec le langage Ruby. Les profils d’API du kit de développement logiciel (SDK) Ruby permettent le développement du cloud hybride en vous offrant la possibilité de basculer entre les ressources Azure globales et les ressources sur Azure Stack Hub.

Un profil d’API est une combinaison de fournisseurs de ressources et de versions de service. Vous pouvez utiliser un profil d’API pour combiner différents types de ressources.

  • Pour utiliser les versions les plus récentes de tous les services, utilisez le profil Le plus récent de la gemme cumulative du Kit de développement logiciel (SDK) Azure.
  • Les profils sont nommés par date dans un format tel que V2020_09_01_Hybrid ou V2019_03_01_Hybrid.
  • Pour utiliser la dernière version d’API d’un service, utilisez le profil Le plus récent de la gemme spécifique. Par exemple, pour utiliser la dernière version d’API d’un service de calcul autonome, utilisez le profil Le plus récent de la gemme Calcul.
  • Pour utiliser une version d’API spécifique d’un service, utilisez les versions d’API spécifiques définies dans la gemme.

Installer le Kit de développement logiciel (SDK) Azure pour Ruby

  • Installez Git.

  • Installer Ruby

    • Lors de l’installation, choisissez Ajouter Ruby à la variable PATH.

    • Quand vous y êtes invité pendant l’installation de Ruby, installez le kit de développement.

    • Ensuite, installez le programme d’installation à l’aide de la commande suivante :

      Gem install bundler
      
  • Si vous n’en avez pas de disponible, créez un abonnement et enregistrez l’ID d’abonnement pour une utilisation ultérieure. Des instructions sur la création d’un abonnement sont fournies dans l’article Créer des abonnements pour des offres dans Azure Stack Hub.

  • Créez un principal de service et enregistrez son ID et son secret. Des instructions sur la création d’un principal de service pour Azure Stack Hub sont fournies dans l’article Utiliser une identité d’application pour accéder aux ressources.

  • Vérifiez que votre principal de service bénéficie du rôle contributeur/propriétaire attribué sur votre abonnement. Des instructions sur l'attribution d'un rôle à un principal de service sont fournies dans l'article Utiliser une identité d'application pour accéder aux ressources.

Installer les packages Rubygem

Vous pouvez installer les packages Rubygem Azure directement.

gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network

Sinon, utilisez-les dans votre fichier Gemfile.

gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'

Le Kit de développement logiciel (SDK) Azure Resource Manager pour Ruby est en version préliminaire et son interface sera donc probablement très différente dans les prochaines versions. Un nombre plus élevé dans la version mineure peut indiquer ces modifications importantes.

Utiliser la gemme azure_sdk

La gemme azure_sdk est un cumul de toutes les gemmes prises en charge dans le Kit de développement logiciel (SDK) Ruby.

Vous pouvez installer la gemme cumulative azure_sdk avec la commande suivante :

gem install 'azure_sdk'

Profils

Pour les profils qui contiennent des dates, pour utiliser un autre profil ou une autre version du SDK, remplacez la date dans V<date>_Hybrid. Par exemple, pour la version 2008, le profil est 2019_03_01 et la chaîne devient V2019_03_01_Hybrid. Notez que, parfois, l’équipe du kit de développement modifie le nom des packages. Il est donc possible que le remplacement de la date d’une chaîne par une autre date ne fonctionne pas. Consultez le tableau suivant pour l’association des profils et des versions de Azure Stack.

Vous pouvez également utiliser latest à la place de la date.

Version d’Azure Stack Profil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Pour plus d’informations sur Azure Stack Hub et les profils d’API, voir Résumé des profils d’API.

Consultez les profils du SDK Ruby.

Abonnement

Si vous n’avez pas encore d’abonnement, créez un abonnement et enregistrez l’ID d’abonnement à utiliser ultérieurement. Pour plus d’informations sur la manière de créer un abonnement, consultez ce document.

Principal de service

Le principal de service et ses informations d’environnement associées doivent être créés et enregistrés quelque part. Le principal de service avec rôle owner est recommandé, mais en fonction de l’exemple, un rôle contributor peut suffire. Reportez-vous au tableau ci-dessous pour obtenir les valeurs requises.

Valeur Variables d'environnement Description
ID client AZURE_TENANT_ID Votre ID de locataire Azure Stack Hub.
ID client AZURE_CLIENT_ID L’ID d’application du principal de service enregistré lors de la création du principal de service dans la section précédente de cet article.
Identifiant d’abonnement AZURE_SUBSCRIPTION_ID Vous utilisez l’ID d’abonnement pour accéder à des offres dans Azure Stack Hub.
Clé secrète client AZURE_CLIENT_SECRET Le secret d’application du principal de service enregistré lors de la création du principal de service.
Point de terminaison Resource Manager ARM_ENDPOINT Voir Point de terminaison Azure Stack Hub Resource Manager.

ID client

Pour rechercher le répertoire ou l’ID de locataire de votre environnement Azure Stack Hub, suivez les instructions fournies dans cet article.

Inscrire des fournisseurs de ressources

Inscrivez les fournisseurs de ressources requis en suivant ce document. Ces fournisseurs de ressources seront nécessaires en fonction des exemples que vous souhaitez exécuter. Par exemple, si vous souhaitez exécuter un exemple de machine virtuelle, l’inscription du fournisseur de ressources Microsoft.Compute est requise.

Point de terminaison Azure Stack Resource Manager

Azure Resource Manager (ARM) est un framework de gestion qui permet aux administrateurs de déployer, gérer et superviser les ressources Azure. Azure Resource Manager peut gérer ces tâches en groupe, plutôt qu’individuellement, dans une seule opération. Vous pouvez obtenir les informations de métadonnées du point de terminaison du Gestionnaire des ressources. Le point de terminaison retourne un fichier JSON avec les informations requises pour exécuter votre code.

  • Le ResourceManagerEndpointUrl dans le kit de développement Azure Stack (ASDK) est : https://management.local.azurestack.external/.
  • Le ResourceManagerEndpointUrl dans les systèmes intégrés est : https://management.region.<fqdn>/, où <fqdn> est votre nom de domaine complet.
  • Pour récupérer les métadonnées requises : <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Pour obtenir les versions d’API disponibles, consultez les spécifications de l’API REST Azure. Par exemple, dans la version de profil 2020-09-01, vous pouvez modifier le api-version en 2019-10-01 pour le fournisseur de ressources microsoft.resources.

Exemple de code JSON :

{
   "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"]
      }
}

Définir des variables d’environnement

Microsoft Windows

Pour définir les variables d’environnement, utilisez le format suivant dans une invite de commandes Windows :

set AZURE_TENANT_ID=<YOUR_TENANT_ID>

Systèmes macOS, Linux et Unix

Dans les systèmes Unix, utilisez la commande suivante :

export AZURE_TENANT_ID=<YOUR_TENANT_ID>

Pour plus d’informations sur les profils d’API et Azure Stack Hub, consultez la section Résumé des profils d’API.

Utilisation du profil d’API du Kit de développement logiciel (SDK) Azure pour Ruby

Utilisez le code suivant pour instancier un client de profil. Ce paramètre est uniquement requis pour Azure Stack Hub ou d’autres clouds privés. Azure global a déjà ces paramètres par défaut.

active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])

provider = MsRestAzure::ApplicationTokenProvider.new(
  ENV['AZURE_TENANT_ID'],
  ENV['AZURE_CLIENT_ID'],
  ENV['AZURE_CLIENT_SECRET'],
  active_directory_settings
)
credentials = MsRest::TokenCredentials.new(provider)
options = {
  credentials: credentials,
  subscription_id: subscription_id,
  active_directory_settings: active_directory_settings,
  base_url: ENV['ARM_ENDPOINT']
}

# Target profile built for Azure Stack Hub
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)

Le client de profil peut être utilisé pour accéder aux fournisseurs de ressources individuels, tels que le calcul, le stockage et le réseau :

# To access the operations associated with Compute
profile_client.compute.virtual_machines.get 'RESOURCE_GROUP_NAME', 'VIRTUAL_MACHINE_NAME'

# Option 1: To access the models associated with Compute
purchase_plan_obj = profile_client.compute.model_classes.purchase_plan.new

# Option 2: To access the models associated with Compute
# Notice Namespace: Azure::Profiles::<Profile Name>::<Service Name>::Mgmt::Models::<Model Name>
purchase_plan_obj = Azure::Profiles::V2019_03_01_Hybrid::Compute::Mgmt::Models::PurchasePlan.new

Définir des fonctions de définition d’environnement Azure Stack Hub

Pour authentifier le principal de service à l’environnement Azure Stack Hub, définissez les points de terminaison à l’aide de get_active_directory_settings(). Cette méthode utilise la variable d’environnement ARM_Endpoint que vous avez définie précédemment :

# Get Authentication endpoints using Arm Metadata Endpoints
def get_active_directory_settings(armEndpoint)
  settings = MsRestAzure::ActiveDirectoryServiceSettings.new
  response = Net::HTTP.get_response(URI("#{armEndpoint}/metadata/endpoints?api-version=1.0"))
  status_code = response.code
  response_content = response.body
  unless status_code == "200"
    error_model = JSON.load(response_content)
    fail MsRestAzure::AzureOperationError.new("Getting Azure Stack Hub Metadata Endpoints", response, error_model)
  end
  result = JSON.load(response_content)
  settings.authentication_endpoint = result['authentication']['loginEndpoint'] unless result['authentication']['loginEndpoint'].nil?
  settings.token_audience = result['authentication']['audiences'][0] unless result['authentication']['audiences'][0].nil?
  settings
end

Exemples

Utilisez les exemples suivants sur GitHub en guise de références pour la création de solutions avec des profils d’API Ruby et Azure Stack Hub :

Exemple Resource Manager et groupes

Pour exécuter l’exemple, assurez-vous que vous avez installé Ruby. Si vous utilisez Visual Studio Code, téléchargez l'extention du Kit de développement logiciel (SDK) Ruby également.

Remarque

Le dépôt de l’exemple est Hybrid-Resource-Manager-Ruby-Resources-And-Groups.

  1. Clonez le référentiel :

    git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
    
  2. Installez les dépendances à l’aide de l'offre groupée :

    cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups
    bundle install
    
  3. Créez un principal de service Azure à l’aide de PowerShell et récupérez les valeurs requises.

    Pour obtenir des instructions sur la création d’un principal de service, consultez Fournir l’accès des applications à Azure Stack.

    Les valeurs requises sont :

    • ID client
    • ID client
    • Clé secrète client
    • Identifiant d’abonnement
    • Point de terminaison Resource Manager

    Définissez les variables d’environnement suivantes en utilisant les informations récupérées à partir du principal de service que vous avez créé :

    • 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}

    Remarque

    Sur Windows, utilisez set au lieu de export.

  4. Assurez-vous que la variable d’emplacement est définie sur votre emplacement Azure Stack Hub ; par exemple, LOCAL="local".

  5. Pour cibler les points de terminaison Active Directory appropriés, ajoutez la ligne de code suivante si vous utilisez Azure Stack Hub ou d’autres clouds privés :

    active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
    
  6. Dans la variable options, ajoutez les paramètres Active Directory et l’URL de base pour utiliser Azure Stack Hub :

    options = {
    credentials: credentials,
    subscription_id: subscription_id,
    active_directory_settings: active_directory_settings,
    base_url: ENV['ARM_ENDPOINT']
    }
    
  7. Créez un client de profil qui cible le profil Azure Stack Hub :

    client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
    
  8. Pour authentifier le principal de service avec Azure Stack Hub, les points de terminaison doivent être définis à l’aide de get_active_directory_settings() . Cette méthode utilise la variable d’environnement ARM_Endpoint que vous avez définie précédemment :

    def get_active_directory_settings(armEndpoint)
      settings = MsRestAzure::ActiveDirectoryServiceSettings.new
      response = Net::HTTP.get_response(URI("#{armEndpoint}/metadata/endpoints?api-version=1.0"))
      status_code = response.code
      response_content = response.body
      unless status_code == "200"
        error_model = JSON.load(response_content)
        fail MsRestAzure::AzureOperationError.new("Getting Azure Stack Hub Metadata Endpoints", response, error_model)
      end
      result = JSON.load(response_content)
      settings.authentication_endpoint = result['authentication']['loginEndpoint'] unless result['authentication']['loginEndpoint'].nil?
      settings.token_audience = result['authentication']['audiences'][0] unless result['authentication']['audiences'][0].nil?
      settings
    end
    
  9. Exécutez l’exemple.

    bundle exec ruby example.rb
    

Étapes suivantes