Utbyggnaden av Azure VMs med Terraform att Spara Pengar

0
221

De flesta av oss har gjort det utnyttjas tillfälligt VMs till Azure. Något som många av oss också har gjort är att glömma att ta bort resurser knutna till dessa VMs när du tar bort dem. Detta kan leda till oönskade kostnader upp till tusentals dollar om du inte är försiktig.

I denna artikel kommer vi att lära dig att använda VMs till Azure och för att undanröja varje spår av dem när vi är färdiga med hjälp Terraform.

Förutsättningar

Du behöver för att uppfylla några krav för att kunna följa med i denna artikel:

  • Har Azure CLI installerat.
  • En administratör över ett Azurblått Prenumeration (eller liknande), vilket gör att du kan använda den för att skapa resursgrupper och resurser.

Med dessa ur vägen, låt oss börja med att ladda ner och installera Terraform.

Installera Terraform

Terraform kan installeras på ett par olika sätt. I Windows, det enklaste sättet är att använda choco:

choco installera terraform

På en Macintosh, den är tillgänglig genom hjälp av Brygga:

brew install terraform

Mer information om hur du installerar Terraform är tillgängliga i Terraform dokumentation.

Om man antar att allt har gått bra med installationen, kan du bekräfta att det fungerar genom att köra kommandot terraform version.

Nu när du har bekräftat att terraform fungerar på din dator, är det dags att autentisera till Azure teckning genom Azure-CLI.

Autentisering

För att autentisera och ange prenumeration på Azure-CLI, behöver du logga in. Öppna en terminal och skriv:

az logga in

Och sedan, efter verifiering, lista alla dina prenumerationer genom att skriva:

az-konto lista

Om du har flera abonnemang som finns, kopiera prenumeration id rätta och ange:

az-konto –prenumeration=”COPIED_SUBSCRIPTION_ID”

Du har nu lagt Azure-CLI för att använda ditt abonnemang. (Detta är den teckning som terraform kommer att använda senare också.) Det är nu dags att skapa terraform mall som vi kommer att använda för att distribuera våra VM.

Skapa Terraform Mall

Den Terraform mall är en enkel textfil med den fil som slutar .tf. Det har en JSON-liknande syntax, och kan läsas och genereras enkelt. Mallen består av i huvudsak två delar: leverantörer (som hanterar kommunikationen till tjänsten som du vill använda till), och de resurser som leverantör skapar.

Vi börjar med att skapa en fil som heter vm.tf i en tom dir. Terraform behöver en tom dir så att man kan skriva hur konfigurationen senare.

Nu, öppna filen med din favorit textredigerare och lägg till den leverantör:

leverantör “azurerm” {
version = “=2.11.0”
funktioner {}
}

Detta kommer att berätta Terraform som du vill använda AzureRM leverantör (för att skapa azure resurser), och att den ska vara av version 2.11. Det är viktigt att ange versionsnumret eftersom funktionaliteten mellan olika versioner kan variera kraftigt.

När du har skrivit in detta i en textfil, är det dags att lägga till vår Azure resurs gruppen. Detta ses av Terraform som en resurs:

resurs “azurerm_resource_group” “resourcegroup” {
name = “test-vm”
läge = “westus”
taggar = {
projektet = “some_test_project”
}
}

Koden ovan skapar en resurs grupp som heter “test-vm”, som ligger i västra USA region. Det lägger också ett tag med projektet namn på det.

Att köra en VM-framgång, vi behöver också ett nätverk. Och eftersom Terraform är gjord för Infrastruktur som Kod (IaC), som den är tillgänglig som en resurs:

resurs “azurerm_virtual_network” “nätverket” {
namn = “${azurerm_resource_group.resourcegroup.name}-nätverk”
address_space = [“10.0.0.0/16”]
läge = azurerm_resource_group.resourcegroup.läge
resource_group_name = azurerm_resource_group.resourcegroup.namn

taggar = azurerm_resource_group.resourcegroup.taggar
}

Detta skapar ett virtuellt nätverk. Den använder också en variabel i name-parameter. Om du tittar noga, ser du att det avser de resurser grupp som vi definierat ovan:

“${azurerm_resource_group.resourcegroup.name}-nätverk”

Det betyder att det virtuella nätverket kommer att ges namnet test-vm-nätverk. Vi gör samma sak för plats -, resurs-gruppen namn och märken.

Nästa upp, det är dags att definiera subnätet som vi kommer att lägga VM i, med hjälp av samma metoder som med hjälp av variabler som innan:

resurs “azurerm_subnet” “undernät” {
namn = “${azurerm_resource_group.resourcegroup.name}-subnät”
resource_group_name = azurerm_resource_group.resourcegroup.namn
virtual_network_name = azurerm_virtual_network.nätverket.namn
address_prefix = “10.0.2.0/24”
}

Detta skapar ett subnät kallas test-vm-subnät.

Nu, låt oss definiera NIC att VM kommer att använda också:

resurs “azurerm_network_interface” “vm1-nic” {
namn = “vm1-NIC”
läge = azurerm_resource_group.resourcegroup.läge
resource_group_name = azurerm_resource_group.resourcegroup.namn

ip_configuration {
namn = “vm1-NicConfiguration”
subnet_id = “${azurerm_subnet.subnät.id}.”
private_ip_address_allocation = “statisk”
private_ip_address = “10.0.2.4”
}

taggar = azurerm_resource_group.resourcegroup.taggar
}

I detta fall kommer vi använda en statisk IP-adress som hänvisar till subnät genom att använda en variabel.

Och, sist men inte minst, definitionen av VM sig själv:

resurs “azurerm_virtual_machine” “vm-1” {
namn = “vm1”
läge = “${azurerm_resource_group.resourcegroup.läge}”
resource_group_name = “${azurerm_resource_group.resourcegroup.name}”
network_interface_ids = [“${azurerm_network_interface.vm1-nic.id}”]
vm_size = “Standard_B1ms”

delete_os_disk_on_termination = true

storage_image_reference {
publisher = “MicrosoftWindowsServer”
erbjudande = “WindowsServer”
sku = “2019-Datacenter”
version = “senaste”
}
storage_os_disk {
namn = “vm1-osdisk”
cachning = “ReadWrite”
create_option = “FromImage”
managed_disk_type = “Standard_LRS”
}
os_profile {
datornamn = “vm-1”
admin_username = “demoadmin”
admin_password = “$om3s3cretPassWord”
}

os_profile_windows_config {
enable_automatic_upgrades = “true”
provision_vm_agent = “true”
}

taggar = azurerm_resource_group.resourcegroup.taggar
}

Koden ovan kommer att tillhandahålla en Azure-VM som kör Windows Server 2019, med hjälp av de resurser som vi definierade tidigare. Det kommer att ha en admin med användarnamnet “demoadmin” som har lösenordet “$om3s3cretPassWord”. Övriga parametrar är ganska självförklarande, och du kan hitta mycket mer av themin Terraform AzureRM dokumentation.

Nu, allt som är kvar är att spara den .tf-fil genom att använda denna mall för att med hjälp av Azure TerraForm!

Initiera och Driftsätta med TerraForm

När vi nu har en mall för, öppna upp en terminal, och gå till den katalog som du sparade .tf-filen till:

cd c:tempterraform

Vi måste nu inleda TerraForm. Detta kommer att ladda ner den resurs modul för AzureRM och leta efter fel i den .tf-fil:

Efter initieringen är klar, du är redo att tillämpa mallen genom att köra terraform tillämpas.

terraform tillämpas

TerraForm kommer nu att skapa en ny resurs grupp i Azure, nätverk, subnät, och så småningom VM sig. Staten och alla resurser den har skapat lagras i den .terraform mapp i din nuvarande katalog. Så, ta inte bort mappen om du vill ta bort resurser rent senare!

Efter att du är klar med din test-vm och vill förstöra det, bara köra:

terraform förstöra

Detta kommer att ta bort alla disketter, nätverkskort, subnät, arbetsgrupper och så att det skapas när man kör terraform gäller och du behöver inte oroa dig för att glömma att ta bort fragment kvar i form av Azure-för synkronisering av Resurser.

Slutsats

Med hjälp av TerraForm endast för mindre uppgifter som det här är otroligt snygg. Det bevisar att du inte behöver ha ett fullt genomfört Infrastruktur som Kod (IaC) för att använda den på ett produktivt sätt. Det innebär också ner kostnaden genom att ta bort oanvända resurser i Azure. Förhoppningsvis, detta har visat sig vara till nytta för dig, och även börjat din resa mot IaC!