Exercício – Controlar a ordem de implementação dos recursos

Concluído

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

  1. Abra o Visual Studio Code.

  2. Abra uma janela do terminal através do menu Terminal.

  3. 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.

    Captura de ecrã a mostrar a janela do Terminal e o tipo de terminal.

  4. Caso contrário, selecione o menu pendente e escolha Selecionar Shell Predefinida.

  5. Selecione pwsh.

    Captura de ecrã a mostrar a seleção de uma shell no menu pendente.

  6. Selecione + no terminal para criar um novo terminal com pwsh como shell.

Iniciar sessão no Azure

  1. Execute Connect-AzAccount para iniciar sessão na sua conta.

    Connect-AzAccount
    

    É apresentada uma janela do browser.

  2. Selecione a conta que utilizou para ativar o sandbox e feche a janela do browser quando lhe for pedido.

Definir a subscrição ativa

  1. 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.

  2. 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.

  1. 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'
    
  2. 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.

  3. 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:

  1. 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.

  2. 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
    
  3. 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

  1. Abra o Visual Studio Code.

  2. Abra uma janela do terminal através do menu Terminal.

  3. Se o menu pendente lhe mostrar a shell preferencial (bash ou zsh, por exemplo), poderá passar para a próxima secção.

  4. Caso contrário, selecione o menu pendente e escolha Selecionar Shell Predefinida.

  5. Selecione o tipo de shell desejado.

    Captura de ecrã a mostrar a seleção de uma shell no menu pendente.

  6. Selecione + no terminal para criar um novo terminal com o tipo de shell selecionado.

Iniciar sessão no Azure

  1. No terminal, execute az login:

    az login
    

    É apresentada uma janela do browser.

  2. 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.

  1. 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 comando curl:

    curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
    
  2. 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:

  1. 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
    
  2. 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
    
  3. 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.

  4. 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
    
  5. 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.