Compartir a través de


Uso de los perfiles de la versión de API con Ruby en Azure Stack Hub

Perfiles de la versión de API y Ruby

El SDK de Ruby para Resource Manager de Azure Stack Hub proporciona herramientas que facilitan la creación y administración de infraestructuras. Los proveedores de recursos del SDK incluyen los servicios Compute, Virtual Network y Storage con el lenguaje Ruby. Los perfiles de API del SDK de Ruby habilitan el desarrollo en la nube híbrida, ya que sirven de ayuda para cambiar entre los recursos de Azure globales y los de Azure Stack Hub.

Un perfil de API es una combinación de los proveedores de recursos y las versiones del servicio. Puede usar un perfil de API para combinar los diferentes tipos de recursos.

  • Para usar las últimas versiones de todos los servicios, use el perfil más reciente de la gema de acumulación del SDK de Azure.
  • Los perfiles se denominan por fecha con un formato como V2020_09_01_Hybrid o V2019_03_01_Hybrid.
  • Para usar la última versión de API de un servicio, utilice el perfil más reciente de la gema específica. Por ejemplo, para usar solo el último valor de api-version del servicio de proceso, utilice el perfil más reciente de la gema Compute.
  • Para usar la versión de API de un servicio, utilice las versiones de API específicas definidas dentro de la gema.

Instalación del SDK de Ruby de Azure

  • Instale Git.

  • Instale Ruby.

    • Durante la instalación, elija la opción para agregar Ruby a la variable PATH.

    • Instale el kit de desarrollo durante la instalación de Ruby cuando se le pida.

    • A continuación, instale el software que instala varios programas con el siguiente comando:

      Gem install bundler
      
  • Si no está disponible, cree una suscripción y guarde su identificador para usarlo más adelante. Las instrucciones para crear una suscripción se encuentran en el artículo Creación de suscripciones para ofertas en Azure Stack Hub.

  • Cree una entidad de servicio y guarde su identificador y su secreto. Las instrucciones para crear una entidad de servicio para Azure Stack Hub se encuentran en el artículo Uso de una identidad de aplicación para acceder a recursos.

  • Asegúrese de que la entidad de servicio tenga rol de colaborador o propietario asignado en la suscripción. Las instrucciones sobre cómo asignar un rol a una entidad de servicio se encuentran en el artículo Uso de una identidad de aplicación para acceder a recursos.

Instalación de los paquetes RubyGem

Puede instalar los paquetes RubyGem de Azure directamente.

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

O bien, úselas en el archivo Gemfile.

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

El SDK de Ruby para Azure Resource Manager está en versión preliminar y probablemente tendrá cambios de interfaz importantes en próximas versiones. Un número mayor en la versión secundaria puede indicar cambios importantes.

Uso de la gema azure_sdk

La gema azure_sdk es una acumulación de todas las gemas admitidas en el SDK de Ruby.

Puede instalar la gema de acumulación azure_sdk con el siguiente comando:

gem install 'azure_sdk'

Profiles

En el caso de los perfiles que contienen fechas, para usar otro perfil o versión del SDK, sustituya la fecha en V<date>_Hybrid. Por ejemplo, para la versión 2008, el perfil es 2019_03_01 y la cadena se convierte en V2019_03_01_Hybrid. Tenga en cuenta que a veces el equipo del SDK cambia el nombre de los paquetes, por lo que podría no funcionar simplemente reemplazar la fecha de una cadena por otra fecha. Consulte la tabla siguiente para ver la asociación de perfiles y versiones de Azure Stack.

También puede usar latest en lugar de la fecha.

Versión de Azure Stack Perfil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Para más información sobre los perfiles de API y Azure Stack Hub, consulte Resumen de perfiles de API.

Consulte Perfiles del SDK de Ruby.

Subscription

Si aún no tiene una suscripción, cree una y guarde el ID. de suscripción para usarlo más adelante. Para más información sobre cómo crear una suscripción, vea este documento.

Entidad de servicio

Una entidad de servicio y su información de entorno asociada deben crearse y guardarse en algún lugar. Se recomienda la entidad de servicio con rol owner, pero en función del ejemplo, un rol contributor puede ser suficiente. Consulte la tabla siguiente para obtener los valores necesarios.

Value Variables de entorno Descripción
Id. de inquilino AZURE_TENANT_ID Identificador de inquilinode su instancia de Azure Stack Hub.
Id. de cliente AZURE_CLIENT_ID Id. de la aplicación de la entidad de servicio que guardó al crear dicha entidad de servicio en la sección anterior de este artículo.
Id. de suscripción AZURE_SUBSCRIPTION_ID Use el identificador de suscripción para acceder a las ofertas de Azure Stack Hub.
Secreto del cliente AZURE_CLIENT_SECRET Secreto de aplicación de la entidad de servicio que guardó al crear dicha entidad de servicio.
Punto de conexión de Resource Manager ARM_ENDPOINT Consulte el artículo sobre el punto de conexión de Resource Manager de Azure Stack Hub.

Id. de inquilino

Para buscar el directorio o el ID. de inquilino de Azure Stack Hub, siga las instrucciones de este artículo.

Registro de proveedores de recursos

Registre los proveedores de recursos necesarios siguiendo este documento. Estos proveedores de recursos serán necesarios en función de los ejemplos que quiera ejecutar. Por ejemplo, si quiere ejecutar un ejemplo de máquina virtual, se requiere el registro del proveedor de recursos Microsoft.Compute.

Punto de conexión del administrador de recursos de Azure Stack

Azure Resource Manager (ARM) es un marco de administración que permite a los administradores implementar, administrar y supervisar recursos de Azure. Azure Resource Manager puede controlar estas tareas como grupo, en vez de individualmente, en una sola operación. Puede obtener la información de metadatos en el punto de conexión de Resource Manager. El punto de conexión devuelve un archivo JSON con la información necesaria para ejecutar el código.

  • El valor de ResourceManagerEndpointUrl del Kit de desarrollo de Azure Stack (ASDK) es: https://management.local.azurestack.external/.
  • ResourceManagerEndpointUrl en un sistema integrado es: https://management.region.<fqdn>/, donde <fqdn> es el nombre de dominio completo.
  • Para recuperar los metadatos necesarios: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Para las versiones de API disponibles, consulte Especificaciones de la API de REST de Azure. Por ejemplo, en la versión 2020-09-01 del perfil, puede cambiar api-version por 2019-10-01 para el proveedor de recursos microsoft.resources.

Ejemplo de 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"]
      }
}

Establecimiento de variables de entorno

Microsoft Windows

Para establecer las variables de entorno, en un símbolo del sistema de Windows, use el siguiente formato:

set AZURE_TENANT_ID=<YOUR_TENANT_ID>

Sistemas basados en MacOS, Linux y Unix

En los sistemas basados en Unix, use el comando siguiente:

export AZURE_TENANT_ID=<YOUR_TENANT_ID>

Para más información sobre los perfiles de API y de Azure Stack Hub, consulte Resumen de perfiles de API.

Uso de perfil de API del SDK de Ruby de Azure

Use el siguiente código para crear una instancia de un cliente del perfil. Este parámetro solo es necesario para Azure Stack Hub u otras nubes privadas. Azure global ya tiene esta configuración de forma predeterminada.

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)

El cliente del perfil se puede usar para acceder a proveedores de recursos individuales, como de proceso, almacenamiento y red:

# 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

Definición de las funciones de configuración del entorno de Azure Stack Hub

Para autenticar la entidad de servicio en el entorno de Azure Stack Hub, defina los puntos de conexión mediante get_active_directory_settings(). Este método usa la variable de entorno ARM_Endpoint que estableció anteriormente:

# 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

Ejemplos

Use los ejemplos siguientes de GitHub como referencia para crear soluciones con perfiles de API de Azure Stack Hub y Ruby:

Grupos y administrador de recursos de ejemplo

Para ejecutar el ejemplo, asegúrese de haber instalado Ruby. Si usa Visual Studio Code, descargue también la extensión SDK de Ruby.

Nota

El repositorio de ejemplo es Hybrid-Resource-Manager-Ruby-Resources-And-Groups.

  1. Clone el repositorio:

    git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
    
  2. Instale las dependencias con una agrupación de trabajos:

    cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups
    bundle install
    
  3. Cree una entidad de servicio de Azure con PowerShell y recupere los valores necesarios.

    Para obtener instrucciones sobre cómo crear una entidad de servicio, consulte Uso de Azure PowerShell para crear una entidad de servicio con un certificado.

    Los valores necesarios son:

    • Id. de inquilino
    • Id. de cliente
    • Secreto del cliente
    • Id. de suscripción
    • Punto de conexión de Resource Manager

    Establezca las siguientes variables de entorno con la información que recuperó de la entidad de servicio que creó:

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

    Nota

    En Windows, use set en lugar de export.

  4. Asegúrese de que la variable de ubicación está establecida en su ubicación de Azure Stack Hub; por ejemplo, LOCAL="local".

  5. Si usa Azure Stack Hub u otras nubes privadas, para que el destino sean los puntos de conexión de Active Directory agregue la siguiente línea de código:

    active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
    
  6. En la variable options, agregue la configuración de Active Directory y la URL base para trabajar con Azure Stack Hub:

    options = {
    credentials: credentials,
    subscription_id: subscription_id,
    active_directory_settings: active_directory_settings,
    base_url: ENV['ARM_ENDPOINT']
    }
    
  7. Cree un cliente del perfil cuyo destino sea el perfil de Azure Stack Hub:

    client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
    
  8. Para autenticar la entidad de servicio con Azure Stack Hub, los puntos de conexión deben definirse mediante get_active_directory_settings() . Este método usa la variable de entorno ARM_Endpoint que estableció anteriormente:

    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. Ejecute el ejemplo.

    bundle exec ruby example.rb
    

Pasos siguientes