Exercício – Controlar a ordem de implementação dos recursos
Nesta parte, vai começar por desempenhar algumas tarefas de configuração básicas. No Visual Studio Code, vai ligar uma sessão de terminal à subscrição do Azure que é disponibilizada pelo ambiente do sandbox do Azure gratuito. Esta ação permite-lhe autenticar os comandos no Azure.
Em seguida, vai executar um modelo ARM básico que aprovisiona uma máquina virtual (VM) Linux. Após a implementação estar concluída, confirme que a VM está em execução e pode ser ligada.
Apesar de trabalhar com VMs ser uma tarefa comum, descobre que um recurso de VM exige componentes de rede e armazenamento, que devem existir antes de a VM poder ser criada. Você vê como a dependsOn
construção permite definir a ordem na qual os recursos são provisionados.
Configurar
Agora, vai abrir o Visual Studio Code, criar uma sessão do PowerShell e ligar-se à subscrição do Azure disponibilizada pelo ambiente do sandbox do Azure gratuito.
Terá de executar estas tarefas de configuração uma vez durante este módulo. Pode consultar estes passos se terminar sessão ou perder a ligação num exercício posterior.
Abrir o PowerShell no Visual Studio Code
Abra o Visual Studio Code.
Abra uma janela do terminal através do menu Terminal.
Se o menu pendente à direita da janela do terminal mostrar pwsh, terá a shell correta para trabalhar e poderá avançar para a próxima secção.
Caso contrário, selecione o menu pendente e escolha Selecionar Shell Predefinida.
Selecione pwsh.
Selecione + no terminal para criar um novo terminal com pwsh como shell.
Iniciar sessão no Azure
Execute
Connect-AzAccount
para iniciar sessão na sua conta.Connect-AzAccount
É apresentada uma janela do browser.
Selecione a conta que utilizou para ativar o sandbox e feche a janela do browser quando lhe for pedido.
Definir a subscrição ativa
Execute
Get-AzSubscription
para obter o ID da subscrição do ambiente do sandbox.Get-AzSubscription
Procure
Concierge Subscription
e copie a segunda coluna. Assemelha-se a cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.Execute
Set-AzContext
para alterar a sua subscrição ativa para a Subscrição de Assistente.Nota
Substitua {Your subscription ID} pelo ID da Subscrição de Assistente que recebeu no último comando.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
Predefinir o grupo de recursos
Normalmente, ao executar um comando da CLI do Azure, precisa de especificar um grupo de recursos.
O sandbox disponibiliza um grupo de recursos predefinido. Para tornar os comandos da CLI do Azure que se seguem mais fáceis de executar, deverá definir aqui o grupo de recursos predefinido.
Execute o cmdlet Set-AzDefault
para predefinir o grupo de recursos.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
Nota
Normalmente, ao utilizar o PowerShell para implementar o recurso no Azure, precisa de especificar um grupo de recursos. Está a ignorar este requisito ao definir o contexto da implementação, com Set-AzDefault
.
O que há numa implementação de VM típica?
Ao implementar uma VM, tenha em mente que há vários recursos que também precisam de ser implementados para que a VM funcione.
Veja a seguir um breve resumo dos tipos de recursos que normalmente precisam de ser implementados em conjunto com uma VM:
- Microsoft.Storage/storageAccounts. Uma conta de armazenamento proporciona espaço em disco para o sistema operativo e os ficheiros.
- Microsoft.Network/publicIPAddresses. Um IP público permite-lhe ligar-se a uma VM a partir da Internet.
- Microsoft.Network/networkSecurityGroups. Um grupo de segurança de rede contém as regras para lidar com o tráfego de entrada e de saída para rede virtual.
- Microsoft.Network/virtualNetworks. A VM deve ser colocada numa rede virtual. Este recurso requer que o grupo de segurança de rede seja implementado antes.
- Microsoft.Network/networkInterfaces. Este recurso depende de dois outros recursos: o IP público e a rede virtual.
- Microsoft.Compute/virtualMachines. A máquina virtual é o recurso primário que quer implementar. Está dependente de dois recursos diferentes: a conta de armazenamento e as interfaces de rede.
Implementar uma VM do Linux
Aqui, vai transferir um modelo do ARM de um repositório do GitHub que lhe disponibilizamos. O modelo vai aprovisionar uma VM do Linux e todos os recursos necessários para a executar.
Execute o seguinte comando
curl
para transferir o modelo do ARM:curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
Execute o cmdlet
ConvertTo-SecureString
e atribua os resultados a uma variável do PowerShell chamada$secure
:$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
Agora, tem uma versão encriptada da palavra-passe para transmitir o script de implementação.
Execute o comando
New-AzResourceGroupDeployment
para implementar o modelo:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
A execução do comando pode demorar alguns minutos. Enquanto o comando está em execução, pode examinar o modelo do ARM num separador diferente do browser, se assim o pretender.
Repare nas dependências do recurso ao procurar a chave
dependsOn
. Por exemplo, o recurso de máquina virtual depende da interface de rede:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Verificar a implementação
Verifique se a VM está aprovisionada e se pode ligar-se via SSH. Para tal:
Execute o comando
Invoke-Expression
para ligar à VM através de SSH:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
Quando solicitado, entre
yes
para continuar a se conectar. Em seguida, digite a senha de administrador,insecurepassword123!
.Importante
Na prática, mantenha as palavras-passe seguras. Também pode utilizar a autenticação de chave pública, que normalmente é mais segura do que utilizar palavras-passe.
Na ligação SSH com a VM, execute
hostname
para imprimir o nome do anfitrião da VM:hostname
Você vê o nome de host interno da VM,
vm1
:vm1
Execute
exit
para sair da sessão SSH.exit
Parabéns, implementou uma VM do Linux com um modelo do ARM com êxito. Uma VM é um tipo de recurso comum que inclui recursos dependentes.
Configurar
Agora, vai abrir o Visual Studio Code, criar uma sessão de terminal e ligar-se à subscrição do Azure disponibilizada pelo ambiente do sandbox do Azure gratuito.
Terá de executar estas tarefas de configuração uma vez durante este módulo. Pode consultar estes passos se terminar sessão ou perder a ligação num exercício posterior.
Abrir uma shell no Visual Studio Code
Abra o Visual Studio Code.
Abra uma janela do terminal através do menu Terminal.
Se o menu pendente lhe mostrar a shell preferencial (bash ou zsh, por exemplo), poderá passar para a próxima secção.
Caso contrário, selecione o menu pendente e escolha Selecionar Shell Predefinida.
Selecione o tipo de shell desejado.
Selecione + no terminal para criar um novo terminal com o tipo de shell selecionado.
Iniciar sessão no Azure
No terminal, execute
az login
:az login
É apresentada uma janela do browser.
Selecione a conta que utilizou para ativar o sandbox e feche a janela do browser quando lhe for pedido.
Definir a subscrição ativa
Execute o seguinte comando az account set
para definir o ambiente do sandbox do Azure como a subscrição ativa:
az account set -s "Concierge Subscription"
Nota
Se o comando falhar, execute az account list --refresh --all
e, em seguida, execute novamente o comando az account set
.
Definir o grupo de recursos predefinido
Normalmente, ao executar um comando da CLI do Azure, precisa de especificar um grupo de recursos.
O sandbox disponibiliza um grupo de recursos predefinido. Para tornar os comandos da CLI do Azure que se seguem mais fáceis de executar, deverá definir aqui o grupo de recursos predefinido.
Execute o seguinte comando az configure
para definir o grupo de recursos predefinido:
az configure --defaults group=<rgn>resource group name</rgn>
O que há numa implementação de VM típica?
Ao implementar uma VM, tenha em mente que há vários recursos que também precisam de ser implementados para que a VM funcione.
Veja a seguir um breve resumo dos tipos de recursos que normalmente precisam de ser implementados em conjunto com uma VM:
- Microsoft.Storage/storageAccounts. Uma conta de armazenamento proporciona espaço em disco para o sistema operativo e os ficheiros.
- Microsoft.Network/publicIPAddresses. Um IP público permite-lhe ligar-se a uma VM a partir da Internet.
- Microsoft.Network/networkSecurityGroups. Um grupo de segurança de rede contém as regras para lidar com o tráfego de entrada e de saída para rede virtual.
- Microsoft.Network/virtualNetworks. A VM deve ser colocada numa rede virtual. Este recurso requer que o grupo de segurança de rede seja implementado antes.
- Microsoft.Network/networkInterfaces. Este recurso depende de dois outros recursos: o IP público e a rede virtual.
- Microsoft.Compute/virtualMachines. A máquina virtual é o recurso primário que quer implementar. Está dependente de dois recursos diferentes: a conta de armazenamento e as interfaces de rede.
Implementar uma VM do Linux
Aqui, irá transferir um modelo do Azure Resource Manager (ARM) de um repositório do GitHub que lhe disponibilizamos. O modelo vai aprovisionar uma VM do Linux e todos os recursos necessários para a executar.
Execute o seguinte comando
wget
para transferir o modelo do ARM:wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
Se não tiver o
wget
instalado, poderá executar este comandocurl
:curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
Execute o comando
az deployment group create
para implementar o modelo:az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
A execução do comando pode demorar alguns minutos. Enquanto o comando está em execução, pode examinar o modelo do ARM num separador diferente do browser, se assim o pretender.
Repare nas dependências do recurso ao procurar a chave
dependsOn
. Por exemplo, o recurso de máquina virtual depende da interface de rede:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Verificar a implementação
Verifique se a VM está aprovisionada e se pode ligar-se via SSH. Para tal:
Execute o seguinte comando
az deployment group list
para listar os grupos de implementação na subscrição:az deployment group list --output table
Verá um grupo de implementação chamado azuredeploy:
Name ResourceGroup State Timestamp Mode ----------- ------------------------------------------ --------- -------------------------------- ----------- azuredeploy learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8 Succeeded 2020-11-24T17:55:39.762517+00:00 Incremental
Execute o seguinte comando
az deployment group show
para mostrar o comando SSH que pode utilizar para se ligar à VM:az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
O modelo do ARM define esta propriedade na secção
output
. Eis um exemplo:ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
Execute o comando novamente, desta vez com a sintaxe
$()
para executar o comando SSH:$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
Quando solicitado, entre
yes
para continuar a se conectar. Em seguida, digite a senha de administrador,insecurepassword123!
.Importante
Na prática, mantenha as palavras-passe seguras. Também pode utilizar a autenticação de chave pública, que normalmente é mais segura do que utilizar palavras-passe.
Na ligação SSH com a VM, execute
hostname
para imprimir o nome do anfitrião da VM:hostname
Você vê o nome de host interno da VM,
vm1
:vm1
Execute
exit
para sair da sessão SSH.exit
Parabéns, implementou uma VM do Linux com um modelo do ARM com êxito. Uma VM é um tipo de recurso comum que inclui recursos dependentes.