Ola Pessoal,
Neste post vou mostrar uma alternativa para resolver um problema referente as cmdlets que não disponíveis no azure cli.
Tive a ideia de fazer esse post, depois de procurar por um cmdlet do azure cli ,para habilitar system identity em uma automation account no azure.
Na página oficial do az cli, a documentação até o presente momento que eu estou escrevendo esse post, ainda não tinha publicado uma solução para esse problema.
Antes que alguém venham comentar falando, “Leandro você poderia usar o cmdlet em powershell que já tem essa opção como você pode ver aqui.”
Porem, com a utilização do az cli, nos podemos fazer um script versátil que pode rodar em vários sistemas operacionais e em diferentes formatos ex: bash, powershell ,zsh and etc..
Como o az rest a autenticação é feita da mesma forma que um comando normal do az cli, nao é necessário nada a mais para fazer isso funcionar.
Qual método a ser utilizado:
DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Qual a URI para acesso e identificação do recurso no Azure: ( Ex: Automation Account )
https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Automation/automationAccounts/<automationAccountName>
Qual o body que vamos enviar:
–body ‘{“identity”:{“type”:”SystemAssigned”}}’
Informação importante, no campo body, você tem que gerar o valor em formato json e depois transformar isso para um única linha.
Qual versão do API:
api-version=2020-01-13-preview
Recomendo que você acesse a pagina do recurso automation account, conforme nosso exemplo
Essa opção, você pode copiar e colocar os comandos:
#! /bin/bash
# Antes de rodar o script, adicione as informacoes para cada variavel abaixo
subscriptionId=
resourceGroupName=
automationAccountName=
apiversion="2020-01-13-preview"
az rest --method patch --body '{"identity":{"type":"SystemAssigned"}}' --uri "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Automation/automationAccounts/$automationAccountName?api-version=$apiversion"
Veja o resultado apos rodar o script, porem antes de rodar o script, voce tem que criar a automation account ou usar um recurso que ja exista.
automation_account $bash configurando_system_identity.sh
{
“etag”: null,
“id”: “/subscriptions/<SubscriptionID>/resourceGroups/<resourceGroupsName>/providers/Microsoft.Automation/automationAccounts/<AutomationAccountName>”,
“identity”: {
“principalId”: “a1e6e8ab-d60f-47ba-8b8e-dd54df906e0c”,
“tenantId”: “095440d6-51cd-4c9d-9899-7f2e496baf25”,
“type”: “SystemAssigned”
},
“location”: “eastus”,
“name”: “<AutomationAccountName>”,
“properties”: {
“RegistrationUrl”: “https://<RegistrationUrl>.agentsvc.eus.azure-automation.net/accounts/<id_acocunt>”,
“RuntimeConfiguration”: {
“powershell”: {
“builtinModules”: {
“Az”: “11.2.0”
}
},
“powershell7”: {
“builtinModules”: {
“Az”: “8.0.0”
}
},
“powershell72”: {
“builtinModules”: {
“Az”: “11.2.0”
}
}
},
“creationTime”: “2024-02-02T13:07:57.7733333+00:00”,
“disableLocalAuth”: false,
“encryption”: {
“identity”: {
“userAssignedIdentity”: null
},
“keySource”: “Microsoft.Automation”
},
“lastModifiedBy”: null,
“lastModifiedTime”: “2024-02-02T13:10:37.84+00:00”,
“publicNetworkAccess”: true,
“sku”: {
“capacity”: null,
“family”: null,
“name”: “Basic”
},
“state”: “Ok”
},
“tags”: {},
“type”: “Microsoft.Automation/AutomationAccounts”
}
Note, que no exemplo acima, o system identity foi configurado com sucesso.
Espero que tenha ajudado 😀
Faixa que me acompanhou durante a criação deste post
– https://youtu.be/h4eqH-TL6S8 ( Rashid – Tão Real )
Fontes:
– https://learn.microsoft.com/pt-br/cli/azure/reference-index?view=azure-cli-latest#az-rest
– https://learn.microsoft.com/en-us/azure/automation/add-user-assigned-identity#add-using-a-rest-api