Bereitstellen von Azure-VMs mit Terraform, um Geld zu Sparen

0
188

Die meisten von uns haben es getan—bereitgestellt temporäre VMs auf Azure. Etwas, das viele von uns auch getan haben, ist, zu vergessen, zu entfernen Ressourcen an diejenigen VMs, wenn Sie Sie löschen. Dies kann führen zu unerwünschten Kosten nach oben, um Tausende von Dollar, wenn Sie nicht vorsichtig sind.

In diesem Artikel werden wir lernen, wie man VMs bereitstellen von Azure und entfernen jede Spur von Ihnen, wenn wir fertig sind, durch die Verwendung von Terraform.

Voraussetzungen

Sie erfüllen müssen ein paar Voraussetzungen, um in der Lage sein, die Folgen in diesem Artikel:

  • Der Azure-CLI installiert.
  • Ein administrator über ein Azure-Abonnement (oder ähnlich), die können Sie es verwenden, um erstellen von Ressourcengruppen und Ressourcen.

Mit diesen aus dem Weg, lassen Sie uns starten Sie durch das herunterladen und installieren von Terraform.

Installation Terraform

Terraform installiert werden kann in ein paar verschiedene Möglichkeiten. In Windows, der einfachste Weg ist die Verwendung von choco:

choco installieren terraform

Auf einem Macintosh-Computer, es ist durch die Verwendung Brew:

brew installieren terraform

Weitere Informationen über die Installation Terraform steht in der Terraform-Dokumentation.

Vorausgesetzt, dass alles gut gegangen ist mit der installation, können Sie bestätigen, dass es funktioniert, indem Sie den Befehl terraform-version.

Jetzt, dass Sie bestätigt haben, dass terraform funktioniert auf Ihrem Computer, ist es Zeit, sich zu authentifizieren, um die Azure-Abonnement über das Azure-CLI.

Authentifizierung

Sich zu authentifizieren, und legen Sie das Abonnement in die Azure CLI, müssen Sie angemeldet sein. Öffnen Sie ein terminal und geben Sie:

az-login

Und dann, nach erfolgreicher Authentifizierung wird eine Liste aller Ihrer Abonnements durch die Eingabe von:

az-Konto-Liste

Wenn Sie mehrere Abonnements zur Verfügung, kopieren Sie die Abonnement-id die richtige ist, und geben Sie ein:

az-Konto eingestellt –Abonnement=”COPIED_SUBSCRIPTION_ID”

Sie haben jetzt die Azure-Befehlszeilenschnittstelle verwenden Sie Ihr Abonnement. (Dies ist das Abonnement, das terraform später verwenden, wie gut.) Es ist jetzt Zeit zu erstellen, die terraform-Vorlage, die wir verwenden, um die Bereitstellung unserer VM.

Erstellen der Terraform-Vorlage

Die Terraform-Vorlage ist eine einfache Textdatei mit der Datei-Endung .tf. Es hat eine JSON-ähnliche syntax, und gelesen werden können und leicht erzeugt. Die Vorlage besteht aus hauptsächlich zwei teilen: der Anbieter (das übernehmen die Kommunikation zu den Services, die Sie bereitstellen möchten), und die Ressourcen, die der Anbieter erstellt.

Wir beginnen, indem Sie eine Datei namens vm.tf in ein leeres dir. Terraform benötigen einen leeren dir so, dass es schreiben kann der Staat die Konfiguration später auf.

Öffnen Sie nun die Datei mit Ihrem bevorzugten text-editor, und fügen Sie die Anbieter:

der Anbieter “azurerm” {
version = “=2.11.0”
features {}
}

Dies wird Ihnen sagen, Terraform, die Sie verwenden möchten AzureRM Anbieter (für die Erstellung von azure-Ressourcen), und es sollte von version 2.11. Es ist wichtig, geben Sie die Versionsnummer, da die Funktionalität zwischen den verschiedenen Versionen variieren stark.

Nachdem Sie Sie geschrieben haben, dass in der text-Datei, es ist Zeit, um unsere Azure-Ressource-Gruppe. Dies wird von Terraform als Ressource als auch:

Ressource “azurerm_resource_group” “resourcegroup” {
name = “test-vm”
location = “westus”
tags = {
Projekt = “some_test_project”
}
}

Der obige code erzeugt ein Ressource-Gruppe mit dem Namen “test-vm”, die sich in den westlichen US-region. Es fügt auch einen tag mit dem Projekt-Namen.

Ausführen einer VM erfolgreich, wir brauchen auch ein Netzwerk. Und weil Terraform ist für Infrastructure as Code (IaC), es ist verfügbar als Ressource als auch:

Ressource “azurerm_virtual_network” “Netzwerk” {
name = “${azurerm_resource_group.resourcegroup.name}-Netzwerk”
address_space = [“10.0.0.0/16”]
location = azurerm_resource_group.resourcegroup.Lage
resource_group_name = azurerm_resource_group.resourcegroup.name

tags = azurerm_resource_group.resourcegroup.tags
}

Diese erstellt ein virtuelles Netzwerk. Es verwendet auch eine variable in der name-parameter. Wenn Sie genau hinsehen, werden Sie sehen, dass es sich um die Ressourcengruppe, die wir oben definiert:

“${azurerm_resource_group.resourcegroup.name}-Netzwerk”

Das bedeutet, dass das virtuelle Netzwerk wird der name test-vm-Netzwerk. Wir tun das gleiche für den Standort, resource group name, und tags ebenso.

Als Nächstes ist es Zeit zu definieren, das Subnetz, dass die VM, mit den gleichen Methoden wie die Verwendung von Variablen wie gehabt:

Ressource “azurerm_subnet” “subnet” {
name = “${azurerm_resource_group.resourcegroup.name}-Subnetz”
resource_group_name = azurerm_resource_group.resourcegroup.name
virtual_network_name = azurerm_virtual_network.Netzwerk.name
address_prefix = “10.0.2.0/24”
}

Dies erzeugt ein Subnetz mit dem Namen test-vm-Subnetz.

Nun, wir definieren die Netzwerkkarte der VM geht gut:

Ressource “azurerm_network_interface” “vm1-nic” {
name = “vm1-NIC”
location = azurerm_resource_group.resourcegroup.Lage
resource_group_name = azurerm_resource_group.resourcegroup.name

ip_configuration {
name = “vm1-NicConfiguration”
subnet_id = “${azurerm_subnet.Subnetz.id}”
private_ip_address_allocation = “static”
private_ip_address = “10.0.2.4”
}

tags = azurerm_resource_group.resourcegroup.tags
}

In diesem Fall verwenden wir eine statische IP-Adresse, bezieht sich auf das Subnetz, indem eine variable.

Und, nicht zuletzt, die definition der VM selbst:

Ressource “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”
Angebot = “WindowsServer”
sku = “2019-Datacenter”
version = “latest”
}
storage_os_disk {
name = “vm1-osdisk”
caching = “ReadWrite”
create_option = “FromImage”
managed_disk_type = “Standard_LRS”
}
os_profile {
Computername = “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 code oben wird die Bereitstellung einer Azure-VM mit Windows Server 2019, mit den Ressourcen, die wir zuvor definiert haben. Es wird ein admin mit dem Benutzernamen “demoadmin” hat das Passwort “$om3s3cretPassWord”. Der rest der Parameter sind selbsterklärend, und Sie können eine Menge mehr von themin die Terraform AzureRM Dokumentation.

Nun, alles, was übrig ist ist das speichern der .tf-Datei durch die Bereitstellung dieser Vorlage Azure mit TerraForm!

Initiieren und Implementieren mit TerraForm

Nun, wir haben die Vorlage in Ordnung ist, ein terminal zu öffnen, und gehen Sie zu dem Verzeichnis, das Sie gespeichert .tf-Datei:

cd c:tempterraform

Wir müssen jetzt einen TerraForm. Dies wird laden Sie das resource-Modul für AzureRM und suchen Sie nach Fehlern in der .tf-Datei:

Nachdem die Initialisierung abgeschlossen ist, Sie sind bereit, um die Vorlage durch ausführen von terraform gelten.

terraform gelten

TerraForm wird erstellen Sie nun eine neue Ressourcen-Gruppe in Azure, Netze, Subnetze, und schließlich die VM selbst. Der Staat und alle Ressourcen, die er geschaffen hat, in die gespeichert werden .terraform-Ordner von Ihrem aktuellen Verzeichnis. Also, nicht entfernen Sie diesen Ordner, wenn Sie möchten, entfernen Sie die Ressourcen sauber später auf!

Nachdem Sie fertig sind mit Ihrer test-vm und wollen es zerstören, nur das ausführen:

terraform zerstören

Dies wird entfernen Sie alle Festplatten, Netzwerkkarten, Subnetze, Ressourcen-Gruppen, und solche, die es erstellt beim ausführen terraform gelten, und Sie nicht haben, um sorgen vergessen zu entfernen die Fragmente Links in Bezug auf die Azure-Ressourcen.

Fazit

Mit TerraForm nur für kleinere Aufgaben wie dieser ist unglaublich sauber. Es beweist, dass Sie nicht haben, um eine vollständig umgesetzte Infrastruktur als Code (IaC), um produktiv einsetzen. Außerdem senkt die Kosten, indem Sie ungenutzte Ressourcen in Azure. Hoffentlich, dies wird nachweislich von nutzen für Sie, und sogar begann Ihre Reise in Richtung IaC!