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