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
oV2019_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ón2020-09-01
del perfil, puede cambiarapi-version
por2019-10-01
para el proveedor de recursosmicrosoft.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:
- Administración de recursos y grupos de recursos de Azure con Ruby
- Administración de máquinas virtuales con Ruby
- Implementación de una máquina virtual habilitada para SSH con una plantilla en 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.
Clone el repositorio:
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Instale las dependencias con una agrupación de trabajos:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
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 deexport
.Asegúrese de que la variable de ubicación está establecida en su ubicación de Azure Stack Hub; por ejemplo,
LOCAL="local"
.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'])
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'] }
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)
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
Ejecute el ejemplo.
bundle exec ruby example.rb