Exercício — Controlar a ordem de implantação dos recursos
Nesta parte, você começa executando algumas tarefas básicas de configuração. No Visual Studio Code, você conecta uma sessão de terminal à assinatura do Azure fornecida pelo ambiente de área restrita do Azure gratuito. Isso permite que você autentique comandos no Azure.
Em seguida, você executa um modelo do ARM básico que provisiona uma VM (máquina virtual) do Linux. Após a conclusão da implantação, você verifica se a VM está em execução e pode ser conectada.
Embora trabalhar com VMs seja uma tarefa comum, você descobre que um recurso de VM requer componentes de rede e armazenamento que devem existir antes que a VM possa ser criada. É possível observar como o constructo dependsOn
permite que você defina a ordem na qual os recursos são provisionados.
Instalação
Aqui, você abre o Visual Studio Code, cria uma sessão do PowerShell e se conecta à assinatura do Azure fornecida pelo ambiente de área restrita do Azure gratuito.
É preciso executar essas tarefas de instalação uma vez durante este módulo. Você poderá consultar essas etapas novamente se sair ou se desconectar em um exercício posterior.
Abrir o PowerShell no Visual Studio Code
Abra o Visual Studio Code.
Abra uma janela do terminal usando o menu Terminal.
Se o menu suspenso à direita da janela do terminal mostrar pwsh, você terá o shell correto para trabalhar e poderá ir para a próxima seção.
Caso contrário, selecione o menu suspenso e escolha Selecionar o Shell Padrão.
Selecione o pwsh.
Selecione o + no terminal para criar um terminal com pwsh como o shell.
Entrar no Azure
Execute
Connect-AzAccount
para entrar na sua conta.Connect-AzAccount
Uma janela do navegador é exibida.
Selecione a conta que você usou para ativar a área restrita e feche a janela do navegador quando solicitado.
Definir a assinatura ativa
Execute
Get-AzSubscription
para obter a ID da assinatura do ambiente de área restrita.Get-AzSubscription
Procure
Concierge Subscription
e copie a segunda coluna. Ela será parecida com cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.Execute
Set-AzContext
alterar sua assinatura ativa para a Assinatura do Concierge.Observação
Substitua {Sua ID da assinatura} pela ID da Assinatura do Concierge que você acabou de obter no último comando.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
Definir o grupo de recursos padrão
Normalmente, ao executar um comando da CLI do Azure, você precisa especificar um grupo de recursos.
A área restrita fornece um grupo de recursos padrão para você. Para tornar os comandos da CLI do Azure mais fáceis de executar, defina aqui o grupo de recursos padrão.
Execute o cmdlet Set-AzDefault
para definir o grupo de recursos padrão.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
Observação
Normalmente, ao usar o PowerShell para implantar recursos no Azure, é preciso especificar um grupo de recursos. Você está ignorando esse requisito definindo o contexto da sua implantação com Set-AzDefault
.
O que há em uma implantação típica de VM
Ao implantar uma VM, lembre-se de que há vários recursos que precisam ser implantados com ela para que a VM funcione.
Confira um breve resumo dos tipos de recursos que normalmente precisam ser implantados com uma VM:
- Microsoft.Storage/storageAccounts. Uma conta de armazenamento fornece espaço em disco para o sistema operacional e os arquivos.
- Microsoft.Network/publicIPAddresses. Um endereço IP público permite que você se conecte à VM pela Internet.
- Microsoft.Network/networkSecurityGroups. Um grupo de segurança de rede contém regras para lidar com o tráfego de entrada e de saída para sua rede virtual.
- Microsoft.Network/virtualNetworks. Sua VM precisa ser colocada em uma rede virtual. Este recurso requer que o grupo de segurança de rede seja implantado antes dele.
- Microsoft.Network/networkInterfaces. Este recurso depende de dois outros recursos: o endereço IP público e a rede virtual.
- Microsoft.Compute/virtualMachines. A máquina virtual é o recurso primário que você implantará. Ela depende de dois recursos diferentes: da conta de armazenamento e das interfaces de rede.
Implantar VM do Linux
Aqui, você faz o download de um modelo do ARM de um repositório GitHub que fornecemos. O modelo provisiona uma VM do Linux e todos os recursos necessários para executá-la.
Execute o seguinte comando
curl
para baixar 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 você tem uma versão criptografada de sua senha que pode passar o script de implantação a seguir.
Execute o comando
New-AzResourceGroupDeployment
para implantar o modelo:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
O comando pode levar alguns minutos para ser executado. Enquanto o comando é executado, se desejar, você poderá examinar o modelo do ARM em uma guia separada no navegador.
Observe as dependências de recurso pesquisando a chave
dependsOn
. Por exemplo, o recurso de máquina virtual depende da interface da rede:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Verificar a implantação
Verifique se a VM está provisionada e pode ser conectada via SSH. Para fazer isso:
Execute o comando
Invoke-Expression
para se conectar à VM via SSH:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
Quando solicitado, insira
yes
para continuar a se conectar. Em seguida, insira a senha do administrador,insecurepassword123!
.Importante
Na prática, mantenha as senhas seguras. Use também a autenticação de chave pública, que normalmente é mais segura do que usar senhas.
De sua conexão SSH com a VM, execute
hostname
para imprimir o nome do host da VM:hostname
Você vê o nome do host interno da VM,
vm1
:vm1
Execute
exit
para sair de sua sessão SSH.exit
Parabéns, você implantou com êxito uma VM do Linux usando um modelo do ARM. Uma VM é um tipo de recurso comum que inclui recursos dependentes.
Instalação
Aqui, você abre o Visual Studio Code, cria uma sessão de terminal e se conecta à assinatura do Azure fornecida pelo ambiente de área restrita do Azure gratuito.
É preciso executar essas tarefas de instalação uma vez durante este módulo. Você poderá consultar essas etapas novamente se sair ou se desconectar em um exercício posterior.
Abrir um shell no Visual Studio Code
Abra o Visual Studio Code.
Abra uma janela do terminal usando o menu Terminal.
Se o menu suspenso exibir seu shell preferencial (bash ou zsh, por exemplo), você poderá pular para a próxima seção.
Caso contrário, selecione o menu suspenso e escolha Selecionar o Shell Padrão.
Selecione o tipo de shell desejado.
Selecione o + no terminal para criar um terminal com seu tipo de shell selecionado.
Entrar no Azure
No terminal, execute
az login
:az login
Uma janela do navegador é exibida.
Selecione a conta que você usou para ativar a área restrita e feche a janela do navegador quando solicitado.
Definir a assinatura ativa
Execute o seguinte comando az account set
para definir o ambiente de área restrita do Azure como sua assinatura ativa:
az account set -s "Concierge Subscription"
Observação
Se o comando falhar, execute az account list --refresh --all
e execute o comando az account set
novamente.
Definir o grupo de recursos padrão
Normalmente, ao executar um comando da CLI do Azure, você precisa especificar um grupo de recursos.
A área restrita fornece um grupo de recursos padrão para você. Para tornar os comandos da CLI do Azure mais fáceis de executar, defina aqui o grupo de recursos padrão.
Execute o seguinte comando az configure
para definir o grupo de recursos padrão:
az configure --defaults group=<rgn>resource group name</rgn>
O que há em uma implantação típica de VM
Ao implantar uma VM, lembre-se de que há vários recursos que precisam ser implantados com ela para que a VM funcione.
Confira um breve resumo dos tipos de recursos que normalmente precisam ser implantados com uma VM:
- Microsoft.Storage/storageAccounts. Uma conta de armazenamento fornece espaço em disco para o sistema operacional e os arquivos.
- Microsoft.Network/publicIPAddresses. Um endereço IP público permite que você se conecte à VM pela Internet.
- Microsoft.Network/networkSecurityGroups. Um grupo de segurança de rede contém regras para lidar com o tráfego de entrada e de saída para sua rede virtual.
- Microsoft.Network/virtualNetworks. Sua VM precisa ser colocada em uma rede virtual. Este recurso requer que o grupo de segurança de rede seja implantado antes dele.
- Microsoft.Network/networkInterfaces. Este recurso depende de dois outros recursos: o endereço IP público e a rede virtual.
- Microsoft.Compute/virtualMachines. A máquina virtual é o recurso primário que você implantará. Ela depende de dois recursos diferentes: da conta de armazenamento e das interfaces de rede.
Implantar VM do Linux
Aqui, você baixará um modelo do ARM (Azure Resource Manager) de um repositório GitHub que fornecemos. O modelo provisiona uma VM do Linux e todos os recursos necessários para executá-la.
Execute o seguinte comando
wget
para baixar o modelo do ARM:wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
Se você não tiver o
wget
instalado, poderá executar o 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 implantar o modelo:az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
O comando pode levar alguns minutos para ser executado. Enquanto o comando é executado, se desejar, você poderá examinar o modelo do ARM em uma guia separada no navegador.
Observe as dependências de recurso pesquisando a chave
dependsOn
. Por exemplo, o recurso de máquina virtual depende da interface da rede:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Verificar a implantação
Verifique se a VM está provisionada e pode ser conectada via SSH. Para fazer isso:
Execute o seguinte comando
az deployment group list
para listar os grupos de implantação em sua assinatura:az deployment group list --output table
Você verá um grupo de implantaçã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 você pode usar para se conectar à VM:az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
O modelo do ARM define essa propriedade na seção
output
. Veja um exemplo:ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
Execute o comando novamente, desta vez usando a sintaxe
$()
para executar o comando SSH:$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
Quando solicitado, insira
yes
para continuar a se conectar. Em seguida, insira a senha do administrador,insecurepassword123!
.Importante
Na prática, mantenha as senhas seguras. Use também a autenticação de chave pública, que normalmente é mais segura do que usar senhas.
De sua conexão SSH com a VM, execute
hostname
para imprimir o nome do host da VM:hostname
Você vê o nome do host interno da VM,
vm1
:vm1
Execute
exit
para sair de sua sessão SSH.exit
Parabéns, você implantou com êxito uma VM do Linux usando um modelo do ARM. Uma VM é um tipo de recurso comum que inclui recursos dependentes.