Utilizar perfis de versão da API com Ruby no Azure Stack Hub
Perfis de versão do Ruby e da API
O SDK Ruby para o Azure Stack Hub Resource Manager fornece ferramentas para o ajudar a criar e gerir a sua infraestrutura. Os fornecedores de recursos no SDK incluem Computação, Redes Virtuais e Armazenamento, com a linguagem Ruby. Os perfis de API no SDK Ruby permitem o desenvolvimento de cloud híbrida ao ajudá-lo a alternar entre recursos e recursos globais do Azure no Azure Stack Hub.
Um perfil de API é uma combinação de fornecedores de recursos e versões de serviço. Pode utilizar um perfil de API para combinar diferentes tipos de recursos.
- Para utilizar as versões mais recentes de todos os serviços, utilize o perfil mais recente da gem de rollup do SDK do Azure.
- Os perfis são nomeados por data em formato como
V2020_09_01_Hybrid
ouV2019_03_01_Hybrid
. - Para utilizar a versão de api mais recente de um serviço, utilize o perfil mais recente da jóia específica. Por exemplo, para utilizar apenas a versão de api mais recente do serviço de computação, utilize o perfil Mais Recente da gem de Computação .
- Para utilizar uma versão de api específica para um serviço, utilize as versões específicas da API definidas dentro do gem.
Instalar o SDK ruby do Azure
Instale o Git.
Instale o Ruby.
Ao instalar, selecione Adicionar Ruby à variável PATH.
Quando lhe for pedido durante a instalação do Ruby, instale o kit de desenvolvimento.
Em seguida, instale o bundler com o seguinte comando:
Gem install bundler
Se não estiver disponível, crie uma subscrição e guarde o ID da subscrição para ser utilizado mais tarde. As instruções para criar uma subscrição estão no artigo Criar subscrições a ofertas no Azure Stack Hub .
Crie um principal de serviço e guarde o respetivo ID e segredo. As instruções para criar um principal de serviço para o Azure Stack Hub estão no artigo Utilizar uma identidade de aplicação para aceder aos recursos .
Certifique-se de que o principal de serviço tem a função de contribuidor/proprietário atribuída na sua subscrição. As instruções sobre como atribuir uma função a um principal de serviço estão no artigo Utilizar uma identidade de aplicação para aceder aos recursos .
Instalar os pacotes RubyGem
Pode instalar diretamente os pacotes do Azure RubyGem.
gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network
Em alternativa, utilize-os no seu Gemfile.
gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'
O SDK Ruby Resource Manager do Azure está em pré-visualização e provavelmente terá alterações de interface interruptivas nas próximas versões. Um número aumentado na versão secundária pode indicar alterações interruptivas.
Utilizar a jóia azure_sdk
A jóia azure_sdk é um rollup de todas as jóias suportadas no SDK Ruby.
Pode instalar a azure_sdk gem rollup com o seguinte comando:
gem install 'azure_sdk'
Perfis
Para perfis que contenham datas, para utilizar um perfil ou versão do SDK diferente, substitua a data em V<date>_Hybrid
. Por exemplo, para a versão de 2008, o perfil é 2019_03_01
, e a cadeia torna-se V2019_03_01_Hybrid
. Tenha em atenção que, por vezes, a equipa do SDK altera o nome dos pacotes, pelo que substituir simplesmente a data de uma cadeia por uma data diferente pode não funcionar. Veja a tabela seguinte para associação de perfis e versões do Azure Stack.
Também pode utilizar latest
em vez da data.
Versão do 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 obter mais informações sobre o Azure Stack Hub e perfis de API, veja o Resumo dos perfis de API.
Veja Perfis do SDK Ruby.
Subscrição
Se ainda não tiver uma subscrição, crie uma subscrição e guarde o ID da subscrição para ser utilizado mais tarde. Para obter informações sobre como criar uma subscrição, veja este documento.
Principal de Serviço
Um principal de serviço e as respetivas informações de ambiente associadas devem ser criadas e guardadas algures. O principal de serviço com owner
função é recomendado, mas dependendo do exemplo, uma contributor
função pode ser suficiente. Veja a tabela abaixo para obter os valores necessários.
Valor | Variáveis de ambiente | Description |
---|---|---|
ID do inquilino | AZURE_TENANT_ID |
O ID de inquilino do Azure Stack Hub. |
ID de Cliente | AZURE_CLIENT_ID |
O ID da aplicação do principal de serviço foi guardado quando o principal de serviço foi criado na secção anterior deste artigo. |
ID da subscrição | AZURE_SUBSCRIPTION_ID |
Utilize o ID da subscrição para aceder a ofertas no Azure Stack Hub. |
Segredo do Cliente | AZURE_CLIENT_SECRET |
O segredo da aplicação do principal de serviço foi guardado quando o principal de serviço foi criado. |
Ponto Final do Resource Manager | ARM_ENDPOINT |
Veja O ponto final Resource Manager do Azure Stack Hub. |
ID do inquilino
Para localizar o diretório ou ID de inquilino do Azure Stack Hub, siga as instruções neste artigo.
Registar fornecedores de recursos
Registe os fornecedores de recursos necessários ao seguir este documento. Estes fornecedores de recursos serão necessários consoante os exemplos que pretende executar. Por exemplo, se quiser executar um exemplo de VM, é necessário o registo do Microsoft.Compute
fornecedor de recursos.
Ponto final do Azure Stack Resource Manager
O Azure Resource Manager (ARM) é uma arquitetura de gestão que permite aos administradores implementar, gerir e monitorizar recursos do Azure. O Azure Resource Manager pode processar estas tarefas como um grupo, em vez de individualmente, numa única operação. Pode obter as informações de metadados do ponto final Resource Manager. O ponto final devolve um ficheiro JSON com as informações necessárias para executar o código.
- O ResourceManagerEndpointUrl no Azure Stack Development Kit (ASDK) é:
https://management.local.azurestack.external/
. - O ResourceManagerEndpointUrl em sistemas integrados é:
https://management.region.<fqdn>/
, onde<fqdn>
é o seu nome de domínio completamente qualificado. - Para obter os metadados necessários:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0
. Para obter as versões de API disponíveis, veja Especificações da API rest do Azure. Por exemplo, na2020-09-01
versão do perfil, pode alterar oapi-version
para para2019-10-01
fornecedormicrosoft.resources
de recursos .
JSON de exemplo:
{
"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"]
}
}
Definir variáveis de ambiente
Microsoft Windows
Para definir as variáveis de ambiente, utilize o seguinte formato numa linha de comandos do Windows:
set AZURE_TENANT_ID=<YOUR_TENANT_ID>
sistemas baseados em macOS, Linux e Unix
Em sistemas baseados em Unix, utilize o seguinte comando:
export AZURE_TENANT_ID=<YOUR_TENANT_ID>
Para obter mais informações sobre o Azure Stack Hub e perfis de API, veja o Resumo dos perfis de API.
Utilização do perfil da API do SDK Ruby do Azure
Utilize o seguinte código para instanciar um cliente de perfil. Este parâmetro só é necessário para o Azure Stack Hub ou outras clouds privadas. O Azure Global já tem estas definições por predefinição.
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)
O cliente de perfil pode ser utilizado para aceder a fornecedores de recursos individuais, como Computação, Armazenamento e Rede:
# 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
Definir funções de definição de ambiente do Azure Stack Hub
Para autenticar o principal de serviço no ambiente do Azure Stack Hub, defina os pontos finais com get_active_directory_settings()
. Este método utiliza a variável de ambiente ARM_Endpoint que definiu 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
Amostras
Utilize os seguintes exemplos no GitHub como referências para criar soluções com perfis de API do Ruby e do Azure Stack Hub:
- Gerir recursos e grupos de recursos do Azure com Ruby.
- Gerir máquinas virtuais com Ruby
- Implementar uma VM Ativada por SSH com um Modelo no Ruby.
Exemplo de gestor de recursos e grupos
Para executar o exemplo, certifique-se de que instalou o Ruby. Se estiver a utilizar o Visual Studio Code, transfira também a extensão SDK Ruby.
Nota
O repositório do exemplo é Hybrid-Resource-Manager-Ruby-Resources-And-Groups.
Clone o repositório:
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Instale as dependências com o pacote:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
Crie um principal de serviço do Azure com o PowerShell e obtenha os valores necessários.
Para obter instruções sobre como criar um principal de serviço, veja Utilizar Azure PowerShell para criar um principal de serviço com um certificado.
Os valores necessários são:
- ID do inquilino
- ID de Cliente
- Segredo do cliente
- ID da subscrição
- ponto final Resource Manager
Defina as seguintes variáveis de ambiente com as informações obtidas do principal de serviço que criou:
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
No Windows, utilize
set
em vez deexport
.Certifique-se de que a variável de localização está definida para a localização do Azure Stack Hub; por exemplo,
LOCAL="local"
.Para direcionar os pontos finais do Active Directory corretos, adicione a seguinte linha de código se estiver a utilizar o Azure Stack Hub ou outras clouds privadas:
active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
Na variável , adicione as definições do Active Directory e o URL base para trabalhar com o
options
Azure Stack Hub:options = { credentials: credentials, subscription_id: subscription_id, active_directory_settings: active_directory_settings, base_url: ENV['ARM_ENDPOINT'] }
Crie um cliente de perfil que tenha como destino o perfil do Azure Stack Hub:
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
Para autenticar o principal de serviço com o Azure Stack Hub, os pontos finais devem ser definidos com get_active_directory_settings(). Este método utiliza a variável de ambiente ARM_Endpoint que definiu 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
Execute o exemplo.
bundle exec ruby example.rb
Passos seguintes
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários