Provisionando recursos de banco de dados MySQL consumindo a API do Azure.

E ae, beleza pessoal? falando mais uma vez de como criar um recurso no Azure através do PowerShell, em outro artigo provisionei um recurso utilizando o provider listado do PostgreSQL que no final das contas bate na API REST do Azure e cria o(s) recurso(s). Neste artigo vamos provisionar o Azure Database for MySQL enviando uma requisição web. Veremos como recuperar as informações de assinatura, em qual contexto estamos, etc. É uma ótima opção para escapar de ter que logar inúmeras vezes para provisionar o recurso na “mão” 🙌.
Obs: Para esta demo utilizo um grupo de recursos chamado testeGratuitoAzure se você não possui o mesmo grupo de recursos será necessário alterar alguns trechos do script ou criar o ResourceGroup. Outro ponto importante é o custo, acesse o link e verifique https://azure.microsoft.com/en-us/pricing/calculator/?service=mysql .
Feita as considerações vamos a 😈 DEMO😈 ✊ ✌️.
function Get-AzToken { | |
$az = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile | |
if (-not $az.Accounts.count ) { | |
Write-Host "Voce deve logar primeiro no Azure atravez do Cmdlet Connect-AzAccount" | |
} | |
$contextoAzure = Get-AzContext | |
$perfilCliente = New-Object Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient($az) | |
$token = $perfilCliente.AcquireAccessToken($contextoAzure.Tenant.TenantId) | |
$token.AccessToken | |
} | |
function Get-TokenBearer { | |
$token = Get-AzToken | |
("Bearer {0}" -f $token) | |
} | |
$assinaturaAz = (Get-AzContext).Subscription.Id | |
$parametrosHeader = @{ | |
Authorization = Get-TokenBearer | |
} | |
$bodyRequestAv = @{ | |
name = "mysqldbonazure" | |
type = "Microsoft.DBforMySQL" | |
} | ConvertTo-Json | |
$urlbase = "https://management.azure.com/subscriptions/{0}/providers/Microsoft.DBforMySQL/checkNameAvailability?api-version=2017-12-01" -f $assinaturaAz | |
$nameAvailable = Invoke-RestMethod -Method Post -Uri $urlbase -Headers $parametrosHeader -Body $bodyRequestAv -ContentType application/json | |
if ($nameAvailable.nameAvailable -eq "True") { | |
Write-Host "nome diponivel criando recurso no Azure" -ForegroundColor Green | |
$convertFromJson = $bodyRequestAv | ConvertFrom-Json -AsHashtable | |
$grupoDeRecurso = (Get-AzResourceGroup | select -Property ResourceGroupName | ? { $_.ResourceGroupName -like "testeGratuito*" }).ResourceGroupName | |
$urlbaseDB = "https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.DBforMySQL/servers/{2}?api-version=2017-12-01" -f $assinaturaAz, $grupoDeRecurso, $convertFromJson.name | |
$id = $urlbaseDB.Substring(28,127) | |
$bodyRequestDB = @{ | |
id = $id | |
name =$convertFromJson.name | |
type ="Microsoft.DBforMySQL/servers" | |
location = "westus" | |
properties = @{ | |
administratorLogin = "rootcloudney" | |
administratorLoginPassword = "teste@123456" | |
storageProfile = @{ | |
storageMB = 128000 | |
backupRetentionDays = 7 | |
# geoRedundantBackup = "Enabled" | |
} | |
version = "5.7" | |
sslEnforcement = "Enabled" | |
userVisibleState = "Ready" | |
fullyQualifiedDomainName = $convertFromJson.name+".mysql.database.azure.com" | |
# earliestRestoreDate = "2018-03-14T18:02:41.577+00:00" | |
} | |
sku = @{ | |
name = "B_Gen5_2" | |
tier = "Basic" | |
capacity = 2 | |
family = "Gen5" | |
} | |
} | ConvertTo-Json | |
Invoke-WebRequest -Method Put -Uri $urlbaseDB -Headers $parametrosHeader -Body $bodyRequestDB -ContentType application/json | |
} | |
else { | |
Write-Host "nome escolhido não esta disponivel" -ForegroundColor DarkRed | |
} | |
#Verificar o log do azure | |
# Get-AzLog -ResourceProvider "Microsoft.DBforMySQL" -StartTime 2019-05-17T23:59 #alterar o parametro StartTime | |
#Remove recurso criado | |
#Get-AzResource | ? {$_.ResourceName -eq $convertFromJson.name}| Select-Object -Property ResourceId | Remove-AzResource |


Se tudo estiver ok, após as validações da API a criação dos recursos será concluída com sucesso ou falha 😅, com o cmdlet Get-AzLog você pode consultar o log de execução da criação dos recursos no Azure, para saber se obteve sucesso na criação do recurso ou se deve corrigir algum parâmetro na requisição. Informando o parâmetro ResourceProvider você filtra o resultado da consulta do log.

Utilizando o Get-AzResource ele vai retornar todos os recursos provisionados no Azure.


É isso pessoal, demonstrei como o PowerShell facilita o provisionamento de recursos consumindo a API REST do Azure ☁️ .
Não se esqueça, PS é vida 😍.
Top comments (0)