Header Ads

Implantando VMs do Azure com Terraform para economizar dinheiro

A maioria de nós já implantou VMs temporárias no Azure. Algo que muitos de nós também fizemos é esquecer de remover os recursos anexados a essas VMs ao excluí-las. Isso pode levar a custos indesejados de até milhares de dólares, se você não tomar cuidado.

Neste artigo, aprenderemos como implantar VMs no Azure e remover todos os rastreios deles quando terminarmos usando o Terraform.

Pré-requisitos

Você precisa cumprir alguns pré-requisitos para poder seguir neste artigo:

  • Tenha a CLI do Azure instalada.
  • Seja um administrador de uma assinatura do Azure (ou similar), que permite usá-la para criar grupos e recursos de recursos.

Com isso fora do caminho, vamos começar baixando e instalando o Terraform.

Instalando o Terraform

O Terraform pode ser instalado de algumas maneiras diferentes. No Windows, a maneira mais fácil é usar o choco:

 choco install terraform 

No Macintosh, ele está disponível usando o Brew:

 cervejeiro instala terraform 

Mais informações sobre a instalação do Terraform estão disponíveis na documentação do Terraform.

Assumindo que tudo correu bem com a instalação, você pode confirmar que funciona executando a versão do terraform do comando.

Agora que você confirmou que o terraform funciona na sua máquina, é hora de se autenticar na assinatura do Azure por meio da CLI do Azure.

Autenticando

Para autenticar e definir a assinatura na CLI do Azure, você precisa fazer login. Abra um terminal e digite:

 az login 

E depois da autenticação, liste todas as suas assinaturas digitando:

 uma lista de contas 

Se você tiver várias assinaturas disponíveis, copie o ID da assinatura correta e digite:

 um conjunto de contas az --subscription = "COPIED_SUBSCRIPTION_ID" 

Agora você definiu a CLI do Azure para usar sua assinatura. (Esta é a assinatura que o terraform usará mais tarde também.) Agora é hora de criar o modelo de terraform que usaremos para implantar nossa VM.

Criando o modelo Terraform

O modelo Terraform é um arquivo de texto simples com o arquivo finalizando . tf. Ele possui uma sintaxe semelhante a JSON e pode ser lido e gerado facilmente. O modelo consiste principalmente em duas partes: os provedores (que lidam com a comunicação com o serviço no qual você deseja implantar) e os recursos que o provedor cria.

Começamos criando um arquivo chamado vm. tf em um diretório vazio. O Terraform precisará de um diretório vazio para que possa escrever o estado da configuração posteriormente.

Agora, abra esse arquivo com seu editor de texto favorito e adicione o provedor:

recursos do provedor "PRE" azurerm "{version =" = 2.11.0 "recursos {}}

Isso informará à Terraform que você deseja usar o provedor AzureRM (para criar recursos azuis) e que deve ser da versão 2.11. É importante especificar o número da versão, porque a funcionalidade entre versões diferentes pode variar bastante.

Depois de escrever isso no arquivo de texto, é hora de adicionar nosso grupo de recursos do Azure. Isso também é visto pelo Terraform como um recurso:

 recurso "azurerm_resource_group" "resourcegroup" {name = "test-vm" location = "westus" tags = {project = "some_test_project"}} 

O código acima cria um grupo de recursos denominado "test-vm" ” que está localizado na região oeste dos EUA. Ele também adiciona uma tag com o nome do projeto.

Para executar uma VM com sucesso, também precisamos de uma rede. E como o Terraform é feito para Infraestrutura como Código (IaC), ele também está disponível como recurso:

 recurso "azurerm_virtual_network" "network" {name = "$ -network" address_space = ["10.0.0.0/16"] local = azurerm_resource_group. resourcegroup. location resource_group_name = azurerm_resource_group. resourcegroup. name tags = azurerm_resource_group. resourcegroup. tags} 

Isso cria uma rede virtual. Ele também usa uma variável no parâmetro name. Se você observar com atenção, verá que se refere ao grupo de recursos que definimos acima:

 "$ - rede" 

Isso significa que a rede virtual receberá o nome test-vm-network. Também fazemos o mesmo para o local, o nome do grupo de recursos e as tags.

Em seguida, é hora de definir a sub-rede na qual colocaremos a VM, usando os mesmos métodos usando variáveis ​​como antes:

 recurso "azurerm_subnet" "sub-rede" {name = "$ -subnet" resource_group_name = azurerm_resource_group. resourcegroup. name virtual_network_name = azurerm_virtual_network. network. name address_prefix = "10.0.2.0/24"} 

Isso cria uma sub-rede chamada test-vm-subnet.

Agora, vamos definir a NIC que a VM usará também:

 recurso "azurerm_network_interface" "vm1-nic" {name = "vm1-NIC" local = azurerm_resource_group. resourcegroup. location resource_group_name = azurerm_resource_group. resourcegroup. name ip_configuration {name = "vm1-NicConfiguration "private_ip_address_allocation =" estático "private_ip_address =" 10.0.2.4 "} tags = azurerm_resource_group. resourcegroup. tags} 

Nesse caso, usaremos um endereço IP estático, referindo-se à sub-rede usando uma variável.

E, finalmente, mas não menos importante, a definição da própria VM:

 resource "azurerm_virtual_machine" "vm-1" {name = "vm1" location = "$" resource_group_name = "$" network_interface_ids = ["$"] vm_size = "Standard_B1ms" delete_os_disk_on_termination = true storage_image_reference {publisher = true "MicrosoftWindowsServer" offer = "WindowsServer" sku = "2019-Datacenter" version = "latest"} storage_os_disk {name = "vm1-osdisk" caching = "ReadWrite" create_option = "FromImage" managed_disk_type = "Standard_LRS"} os_profile {nome_do_computador = "vm-1" admin_username = "demoadmin" admin_password = "$ om3s3cretPassWord"} os_profile_windows_config {enable_automatic_upgrades = "true" provision_vm_agent = "true"} tags = azurerm_resource_group. resourcegroup. tags} 

O código acima fornecerá uma VM do Azure executando o Windows Server 2019, usando os recursos que definimos anteriormente. Ele terá um administrador com o nome de usuário "demoadmin" ” que tenha a senha "$ om3s3cretPassWord". O restante dos parâmetros é bastante auto-explicativo e você pode encontrar muito mais na documentação do Terraform AzureRM.

Agora, tudo o que resta é salvar o arquivo . tf implantando esse modelo no Azure usando o TerraForm!

Iniciando e implantando com o TerraForm

Agora que temos o modelo em ordem, abra um terminal e vá para o diretório em que você salvou o arquivo . tf:

 cd c: \ temp \ terraform 

Agora devemos iniciar o TerraForm. Isso fará o download do módulo de recursos do AzureRM e cuidará dos erros no arquivo . tf:

Após o término da inicialização, você estará pronto para aplicar o modelo executando o aplique terraform.

 aplique terraform 

O TerraForm agora criará um novo grupo de recursos no Azure, redes, sub-redes e, eventualmente, na própria VM. O estado e todos os recursos que ele criou são armazenados na pasta . terraform do seu diretório atual. Portanto, não remova essa pasta se quiser remover os recursos de forma limpa mais tarde!

Depois de concluir seu teste vm e desejar destruí-lo, basta executar:

 terraform destruir 

Isso removerá todos os discos, placas de rede, sub-redes, grupos de recursos e os criados por ele ao executar o terraform, e você não precisará se preocupar em esquecer de remover os fragmentos deixados em termos dos Recursos do Azure.

Conclusão

Usar o TerraForm apenas para tarefas menores como esta é incrivelmente elegante. Isso prova que você não precisa ter uma infraestrutura totalmente implementada como código (IaC) para usá-la produtivamente. Ele também reduz o custo, removendo recursos não utilizados no Azure. Felizmente, isso provou ser útil para você e até começou sua jornada em direção ao IaC!

Via: How to Geek

Nenhum comentário