Stellen Sie Azure-VMs mit Terraform bereit, um Geld zu sparen

Inhalt

blaues Logo

Die meisten von uns haben: wir stellen temporäre virtuelle Maschinen in Azure bereit. Viele von uns haben auch vergessen, die an diese virtuellen Maschinen angehängten Ressourcen beim Löschen zu löschen. Dies kann zu unerwünschten Kosten in Höhe von Hunderten von Dollar führen, wenn Sie nicht aufpassen..

In diesem Beitrag, Wir werden lernen, wie man virtuelle Maschinen in Azure implementiert und alle Spuren davon löscht, wenn wir Terraform verwenden.

Voraussetzungen

Sie müssen einige vorherige Anforderungen erfüllen, um diesem Beitrag folgen zu können:

  • Habe den Azure-CLI Eingerichtet.
  • Seien Sie ein Azure-Abonnementadministrator (oder ähnliches), damit Sie es verwenden können, um Ressourcen und Ressourcengruppen zu erstellen.

Damit aus dem Weg, Beginnen wir mit dem Herunterladen und Installieren von Terraform.

Terraform-Installation

Terraform kann auf verschiedene Arten installiert werden. Unter Windows, der einfachste Weg ist, Schokolade zu verwenden:

choco install terraform

Terraform-Installation mit Tintenfischen.

Auf dem Macintosh, wird durch Brew aktiviert:

brew install terraform

Weitere Informationen zur Installation von Terraform finden Sie im Terraform-Dokumentation.

Vorausgesetzt, die Installation hat alles gut geklappt, Sie können bestätigen, dass es funktioniert, indem Sie den Befehl ausführen terraform version.

Bestätigen Sie, dass Terraform funktioniert, indem Sie den Befehl ausführen "Terraform-Version".

Nachdem Sie bestätigt haben, dass Terraform auf Ihrem Computer funktioniert, Zeit für die Authentifizierung beim Azure-Abonnement über Azure CLI.

Durch Authentifizierung

So authentifizieren und bestimmen Sie das Abonnement in der Azure CLI, muss sich einloggen. Öffne ein Terminal und tippe ein:

az login

Und dann, nach der Authentifizierung, listen Sie alle Ihre Abonnements auf, indem Sie eingeben:

az account list

Wenn Sie mehrere Abonnements haben, kopiere die Abonnement-ID des richtigen und gib ein:

az account set --subscription="COPIED_SUBSCRIPTION_ID"

Sie haben jetzt die Azure CLI für die Verwendung Ihres Abonnements konfiguriert. (Dies ist das Abonnement, das terraform später zusätzlich nutzen wird). Jetzt ist es an der Zeit, die Terraform-Vorlage zu erstellen, die wir verwenden werden, um unsere VM zu implementieren.

Erstellen Sie die Terraform-Vorlage

Die Terraform-Vorlage ist eine einfache Textdatei mit dem Ende der Datei .tf. Es hat eine JSON-ähnliche Syntax und kann leicht gelesen und generiert werden. Die Vorlage besteht hauptsächlich aus zwei Teilen: Anbieter (die die Kommunikation mit dem Dienst übernehmen, in dem Sie implementieren möchten) und die Ressourcen, die der Anbieter schafft.

Wir beginnen mit der Erstellung einer Datei namens vm.tf in einem leeren Verzeichnis. Terraform benötigt ein leeres Verzeichnis, um den Konfigurationsstatus später schreiben zu können.

Jetzt, öffne diese Datei mit deinem bevorzugten Texteditor und füge den Anbieter hinzu:

provider "azurerm" {
  version   = "=2.11.0"
	features {}  
}

Dadurch wird Terraform mitgeteilt, dass Sie den AzureRM-Anbieter verwenden möchten (um azurblaue Ressourcen zu erstellen) und wie soll die version sein 2.11. Die Angabe der Versionsnummer ist unbedingt erforderlich, da die Funktionalität zwischen verschiedenen Versionen stark variieren kann..

Sobald Sie das in die Textdatei geschrieben haben, Es ist Zeit, unsere Azure-Ressourcengruppe hinzuzufügen. Terraform sieht dies auch als Ressource:

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

Der obige Code erstellt eine Ressourcengruppe namens “test-vm” gefunden in der westlichen Region der USA. UU. Fügen Sie auch ein Label mit dem Namen des Projekts hinzu.

So führen Sie eine virtuelle Maschine erfolgreich aus, wir brauchen auch ein netzwerk. Und weil Terraform für Infrastruktur als Code gemacht ist (IaC), es ist auch als Ressource aktiviert:

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

    tags = azurerm_resource_group.resourcegroup.tags
}

Dadurch entsteht ein virtuelles Netzwerk. Es verwendet auch eine Variable in der Name Parameter. Wenn man genau hinschaut, Sie werden sehen, dass es sich auf die Ressourcengruppe bezieht, die wir zuvor definiert haben:

"${azurerm_resource_group.resourcegroup.name}-network"

Das heißt, das virtuelle Netzwerk erhält den Namen Test-VM-Netzwerk. Dasselbe machen wir auch mit der Location, den Namen und die Tags der Ressourcengruppe.

Nächste, Es ist an der Zeit, das Subnetz einzurichten, in dem wir die VM platzieren, mit den gleichen Methoden mit Variablen wie zuvor:

resource "azurerm_subnet" "subnet" {
    name                 = "${azurerm_resource_group.resourcegroup.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"
}

Dadurch wird ein Subnetz namens . erstellt test-vm-subnetz.

Jetzt, Lassen Sie uns die NIC definieren, die die VM auch verwenden wird:

resource "azurerm_network_interface" "vm1-nic" {
    name                        = "vm1-NIC"
    location                    = azurerm_resource_group.resourcegroup.location
    resource_group_name         = azurerm_resource_group.resourcegroup.name

    ip_configuration {
        name                          = "vm1-NicConfiguration"
        subnet_id                     = "${azurerm_subnet.subnet.id}"
        private_ip_address_allocation = "static"
        private_ip_address            = "10.0.2.4"
    }

    tags = azurerm_resource_group.resourcegroup.tags
}

Für diesen Fall, Wir werden eine statische IP-Adresse verwenden, Bezug auf das Subnetz mit einer Variablen.

UND, Endlich, aber nicht weniger wichtig, die Definition der virtuellen Maschine selbst:

resource "azurerm_virtual_machine" "vm-1" {
  name                  = "vm1"
  location              = "${azurerm_resource_group.resourcegroup.location}"
  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"
    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 {
    computer_name  = "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
}

Der obige Code stellt einen virtuellen Azure-Computer bereit, auf dem Windows Server ausgeführt wird 2019, unter Verwendung der Ressourcen, die wir zuvor definiert haben. Sie haben einen Administrator mit dem Benutzernamen “Demoadministrator” wer hat das passwort „$ Om3s3cretPassWord“. Der Rest der Parameter ist selbsterklärend, und viele mehr findest du in der Terraform AzureRM-Dokumentation.

Jetzt, alles was übrig bleibt ist zu retten .tf-Datei Implementieren dieser Vorlage in Azure mit TerraForm!

Starten und implementieren mit TerraForm

Jetzt haben wir die Vorlage in Ordnung, öffne ein Terminal und gehe in das Verzeichnis, in dem du die gespeichert hast .tf-Datei zu:

cd c:tempterraform

Jetzt müssen wir TerraForm starten. Dadurch wird das Ressourcenmodul für AzureRM heruntergeladen und nach Fehlern in der Datei gesucht .tf-Verfahren:

Terraform starten, das das Ressourcenmodul herunterlädt und die .tf-Datei auf Fehler überprüft.

Nach Abschluss der Initialisierung, Sie sind bereit, die Vorlage durch Ausführen anzuwenden terraform apply.

terraform apply

TerraForm erstellt jetzt eine neue Ressourcengruppe in Azure, Netzwerke, Subnetze und, Zusammenfassend, die virtuelle Maschine selbst. Der Status und alle von Ihnen erstellten Ressourcen werden im .Terraform Ordner aus Ihrem aktuellen Verzeichnis. Weil, Löschen Sie diesen Ordner nicht, wenn Sie die Ressourcen später sauber löschen möchten!!

Sobald Sie mit Ihrer virtuellen Testmaschine fertig sind und sie zerstören möchten, Renn einfach:

terraform destroy

Dadurch werden alle Festplatten gelöscht, nics, Subnetze, Ressourcengruppen usw., die Sie beim Ausführen erstellt haben terraform apply, und Sie müssen sich keine Sorgen machen, dass Sie vergessen, die Fragmente zu löschen, die in Bezug auf Azure-Ressourcen übrig sind.

Fazit

TerraForm nur für kleinere Aufgaben wie diese zu verwenden ist unglaublich nett. Es zeigt, dass es nicht notwendig ist, eine Infrastruktur als Code zu haben (IaC) vollständig für den produktiven Einsatz implementiert. Reduziert auch die Kosten durch das Löschen ungenutzter Ressourcen in Azure. Hoffentlich, das hat sich als hilfreich für dich erwiesen, Und er hat sogar seine Reise zu IaC begonnen!!

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.