Usare i profili di versione api con Ruby nell'hub di Azure Stack
Profili di versione di Ruby e API
Ruby SDK per l'hub di Azure Stack Resource Manager offre strumenti per creare e gestire l'infrastruttura. I provider di risorse nell'SDK includono calcolo, reti virtuali e archiviazione con il linguaggio Ruby. I profili API in Ruby SDK consentono lo sviluppo cloud ibrido consentendo di passare tra risorse di Azure globali e risorse nell'hub di Azure Stack.
Un profilo API è una combinazione di provider di risorse e versioni del servizio. È possibile usare un profilo API per combinare diversi tipi di risorse.
- Per usare le versioni più recenti di tutti i servizi, usare il profilo più recente della gemma di rollup di Azure SDK.
- I profili vengono denominati in base alla data in formato,
V2020_09_01_Hybrid
ad esempio oV2019_03_01_Hybrid
. - Per usare la versione api più recente di un servizio, usare il profilo più recente della gemma specifica. Ad esempio, per usare la versione api più recente del servizio di calcolo, usare il profilo più recente della gemma di calcolo .
- Per usare una versione api specifica per un servizio, usare le versioni API specifiche definite all'interno della gem.
Installare Azure Ruby SDK
Installare Git.
Installare Ruby.
Quando si installa, scegliere Aggiungi Ruby alla variabile PATH.
Quando richiesto durante l'installazione di Ruby, installare il kit di sviluppo.
Installare quindi il bundler usando il comando seguente:
Gem install bundler
Se non disponibile, creare una sottoscrizione e salvare l'ID sottoscrizione da usare in un secondo momento. Le istruzioni per creare una sottoscrizione sono disponibili nell'articolo Creare sottoscrizioni per le offerte nell'hub di Azure Stack .
Creare un'entità servizio e salvare l'ID e il segreto. Le istruzioni per creare un'entità servizio per l'hub di Azure Stack sono disponibili nell'articolo Usare un'identità dell'app per accedere alle risorse .
Assicurarsi che l'entità servizio disponga del ruolo collaboratore/proprietario assegnato nella sottoscrizione. Le istruzioni su come assegnare un ruolo a un'entità servizio sono disponibili nell'articolo Usare un'identità dell'app per accedere alle risorse .
Installare i pacchetti RubyGem
È possibile installare direttamente i pacchetti Azure RubyGem.
gem install azure_mgmt_compute
gem install azure_mgmt_storage
gem install azure_mgmt_resources
gem install azure_mgmt_network
In alternativa, usarli nel gemfile.
gem 'azure_mgmt_storage'
gem 'azure_mgmt_compute'
gem 'azure_mgmt_resources'
gem 'azure_mgmt_network'
Azure Resource Manager Ruby SDK è in anteprima e probabilmente avrà modifiche di interfaccia di rilievo nelle versioni future. Un numero maggiore nella versione secondaria può indicare modifiche di rilievo.
Usare il gioiello azure_sdk
Il gioiello azure_sdk è un rollup di tutte le gemme supportate in Ruby SDK.
È possibile installare la gem azure_sdk rollup con il comando seguente:
gem install 'azure_sdk'
Profiles
Per i profili contenenti date, per usare un profilo o una versione SDK diversi, sostituire la data in V<date>_Hybrid
. Ad esempio, per la versione 2008, il profilo è 2019_03_01
e la stringa diventa V2019_03_01_Hybrid
. Si noti che a volte il team SDK modifica il nome dei pacchetti, quindi è sufficiente sostituire la data di una stringa con una data diversa potrebbe non funzionare. Vedere la tabella seguente per l'associazione di profili e versioni di Azure Stack.
È anche possibile usare latest
anziché la data.
Versione di Azure Stack | Profilo |
---|---|
2311 | 2020_09_01 |
2301 | 2020_09_01 |
2206 | 2020_09_01 |
2108 | 2020_09_01 |
2102 | 2020_09_01 |
2008 | 2019_03_01 |
Per altre informazioni sui profili dell'hub e delle API di Azure Stack, vedere Riepilogo dei profili API.
Vedere Profili di Ruby SDK.
Subscription
Se non si ha già una sottoscrizione, creare una sottoscrizione e salvare l'ID sottoscrizione da usare in un secondo momento. Per informazioni su come creare una sottoscrizione, vedere questo documento.
Entità servizio
È necessario creare e salvare un'entità servizio e le relative informazioni sull'ambiente associate. L'entità servizio con owner
ruolo è consigliata, ma a seconda dell'esempio, un contributor
ruolo può essere sufficiente. Per i valori necessari, vedere la tabella seguente.
valore | Variabili di ambiente | Descrizione |
---|---|---|
tenant_id | AZURE_TENANT_ID |
ID tenant dell'hub di Azure Stack. |
ID client | AZURE_CLIENT_ID |
ID app dell'entità servizio salvato quando l'entità servizio è stata creata nella sezione precedente di questo articolo. |
ID sottoscrizione | AZURE_SUBSCRIPTION_ID |
Usare l'ID sottoscrizione per accedere alle offerte nell'hub di Azure Stack. |
Client Secret | AZURE_CLIENT_SECRET |
Segreto dell'app dell'entità servizio salvato quando è stata creata l'entità servizio. |
Endpoint Resource Manager | ARM_ENDPOINT |
Vedere l'endpoint dell'hub di Azure Stack Resource Manager. |
ID tenant
Per trovare la directory o l'ID tenant per l'hub di Azure Stack, seguire le istruzioni riportate in questo articolo.
Registrare i provider di risorse
Registrare i provider di risorse necessari seguendo questo documento. Questi provider di risorse saranno necessari a seconda degli esempi da eseguire. Ad esempio, se si vuole eseguire un esempio di macchina virtuale, è necessaria la registrazione del Microsoft.Compute
provider di risorse.
Endpoint di Azure Stack resource manager
Azure Resource Manager (ARM) è un framework di gestione che consente agli amministratori di distribuire, gestire e monitorare le risorse di Azure. Azure Resource Manager può gestire queste attività come gruppo, anziché singolarmente, in una singola operazione. È possibile ottenere le informazioni sui metadati dall'endpoint di Resource Manager. L'endpoint restituisce un file JSON con le informazioni necessarie per eseguire il codice.
-
ResourceManagerEndpointUrl in Azure Stack Development Kit (ASDK) è:
https://management.local.azurestack.external/
. -
ResourceManagerEndpointUrl nei sistemi integrati è:
https://management.region.<fqdn>/
, dove<fqdn>
è il nome di dominio completo. - Per recuperare i metadati necessari:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0
. Per le versioni api disponibili, vedere Specifiche dell'API rest di Azure. Ad esempio, nella versione del2020-09-01
profilo è possibile modificare in per ilapi-version
2019-10-01
providermicrosoft.resources
di risorse .
JSON di esempio:
{
"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"]
}
}
Impostare le variabili di ambiente
Microsoft Windows
Per impostare le variabili di ambiente, usare il formato seguente in un prompt dei comandi di Windows:
set AZURE_TENANT_ID=<YOUR_TENANT_ID>
sistemi macOS, Linux e Unix
Nei sistemi basati su Unix usare il comando seguente:
export AZURE_TENANT_ID=<YOUR_TENANT_ID>
Per altre informazioni sui profili hub e API di Azure Stack, vedere Riepilogo dei profili API.
Utilizzo del profilo API di Azure Ruby SDK
Usare il codice seguente per creare un'istanza di un client del profilo. Questo parametro è obbligatorio solo per l'hub di Azure Stack o per altri cloud privati. Azure globale ha già queste impostazioni per impostazione predefinita.
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)
Il client del profilo può essere usato per accedere ai singoli provider di risorse, ad esempio Calcolo, Archiviazione e Rete:
# 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
Definire le funzioni di impostazione dell'ambiente dell'hub di Azure Stack
Per autenticare l'entità servizio nell'ambiente dell'hub di Azure Stack, definire gli endpoint usando get_active_directory_settings()
. Questo metodo usa la variabile di ambiente ARM_Endpoint impostata in precedenza:
# 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
Esempi
Usare gli esempi seguenti in GitHub come riferimenti per la creazione di soluzioni con i profili API ruby e dell'hub di Azure Stack:
- Gestire risorse e gruppi di risorse di Azure con Ruby.
- Gestire le macchine virtuali con Ruby
- Distribuire una macchina virtuale abilitata per SSH con un modello in Ruby.
Resource Manager e gruppi di esempio
Per eseguire l'esempio, assicurarsi di aver installato Ruby. Se si usa Visual Studio Code, scaricare anche l'estensione Ruby SDK.
Nota
Il repository per l'esempio è Hybrid-Resource-Manager-Ruby-Resources-And-Groups.
Clonare il repository:
git clone https://github.com/Azure-Samples/Hybrid-Resource-Manager-Ruby-Resources-And-Groups.git
Installare le dipendenze usando il bundle:
cd Hybrid-Resource-Manager-Ruby-Resources-And-Groups bundle install
Creare un'entità servizio di Azure usando PowerShell e recuperare i valori necessari.
Per istruzioni sulla creazione di un'entità servizio, vedere Usare Azure PowerShell per creare un'entità servizio con un certificato.
I valori necessari sono:
- ID tenant
- ID client
- Segreto client
- ID sottoscrizione
- L'endpoint di Resource Manager
Impostare le variabili di ambiente seguenti usando le informazioni recuperate dall'entità servizio creata:
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
In Windows usare
set
invece diexport
.Verificare che la variabile di posizione sia impostata sulla posizione dell'hub di Azure Stack; ad esempio .
LOCAL="local"
Per specificare come destinazione gli endpoint di Active Directory corretti, aggiungere la riga di codice seguente se si usa l'hub di Azure Stack o altri cloud privati:
active_directory_settings = get_active_directory_settings(ENV['ARM_ENDPOINT'])
options
Nella variabile aggiungere le impostazioni di Active Directory e l'URL di base per usare l'hub di Azure Stack:options = { credentials: credentials, subscription_id: subscription_id, active_directory_settings: active_directory_settings, base_url: ENV['ARM_ENDPOINT'] }
Creare un client del profilo destinato al profilo dell'hub di Azure Stack:
client = Azure::Resources::Profiles::V2019_03_01_Hybrid::Mgmt::Client.new(options)
Per autenticare l'entità servizio con l'hub di Azure Stack, è necessario definire gli endpoint usando get_active_directory_settings(). Questo metodo usa la variabile di ambiente ARM_Endpoint impostata in precedenza:
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
Eseguire l'esempio.
bundle exec ruby example.rb
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per