Schöne Komponentenstruktur in der Microsoft Azure Cloud

Microsoft Azure ist eine der größten Cloud-Plattformen der Welt. Trotz meiner mangelnden Sympathie für das Unternehmen, das es geschaffen hat, muss ich zugeben, dass die Plattform im Vergleich zu ihren Konkurrenten eine Reihe von Annehmlichkeiten bietet. Aber es gibt kein Fass Honig ohne eine Fliege in der Salbe, und dieser Löffel in Microsoft Azure ist der Name der Systemkomponenten. Wenn das Umbenennen einer Komponente in AWS nur mit zwei Klicks erfolgt, sind Namen in Azure eng an Komponenten gebunden, und es ist manchmal unmöglich, sie zu ändern, ohne mit einem Tamburin zu tanzen. Daher ist es bei der Arbeit mit Azure sehr wichtig, zunächst die richtige Struktur zu erstellen.

Bild

Versuchen wir also in Microsoft Azure, eine virtuelle Maschine mit dem Nameserver-01 und den Standardeinstellungen zu erstellen. Die folgende Abbildung zeigt deutlich das Durcheinander, das wir am Ende haben.

Bild

Wenn Ihnen hier alles passt, können Sie nicht weiter lesen. Wenn Sie wie ich die Gesamtreihenfolge in der Verwaltung mögen, riskiere ich, ein schönes Namensschema für Microsoft Azure-Komponenten vorzuschlagen, das ich seit einigen Jahren verwende.

Mit diesem Schema können Sie das gesamte System in die folgende einheitliche Form bringen:
{Komponentengruppe} __ {Element}
{Komponente} - {Nummer} __ {Element} - {Nummer}

Also, fangen wir an ...

Fügen Sie eine Ressourcengruppe hinzu

Resource groups >> +Add Resource group name: servers 

Erstellen Sie ein virtuelles Netzwerk und ein Subnetz

Standardmäßig erweitert Microsoft Azure das Subnetz über das gesamte virtuelle Netzwerk. Dies ist nicht sehr praktisch, da es bei Bedarf sehr schwierig sein wird, neue Subnetze hinzuzufügen (z. B. ein VPN-Subnetz). Daher gebe ich normalerweise die letzten beiden Oktette (Maske 16) für das virtuelle Netzwerk und für das Subnetz - das letzte Oktett (Maske 24).

 Virtual networks >> +Add Name: servers__network Address space: 10.0.0.0/16 Subnet: Name: default Address range: 10.0.0.0/24 Network interfaces: +Add Name: server-01__ip-private-01 Virtual network: servers__network Subnet: default Private IP address: Static/10.0.0.101 

Die ersten Adressen des Subnetzes (10.0.0.01 ... 03) werden von Azure verwendet, um den Anforderungen zu entsprechen. Daher habe ich die Arbeitsadressen in einen Bereich über 100 verschoben. Daher entspricht die Servernummer der letzten Ziffer der IP-Adresse: server-01 = 10.0.0.101, Server-02 = 10.0.0.102, Server-43 = 10.0.0.143 usw.

Externe Adresse und Sicherheitsgruppe

Wenn geplant ist, dass die virtuelle Maschine nach außen schaut, erstellen Sie eine öffentliche Adresse und eine Sicherheitsgruppe.

 Public IP addresses: +Add Name: server-01__ip-public-01 IP address assignment: Static Public IP addresses >>  server-01__ip-public-01 >> Associate: Resource type >> Network interface: server-01__ip-private-01 

In Azure kann eine Sicherheitsgruppe sowohl für einen einzelnen Computer als auch für das gesamte Subnetz erstellt werden. Je nach Variante variieren die Namen.

 Network security groups >> +Add 

Sicherheitsgruppenoption für einen einzelnen Host:

  Name: server-01__security-group Network interfaces >> +Associate: server-01__ip-private-01 

Sicherheitsgruppe für Subnetz:

  Name: servers__network-security-group Subnets >> +Associate: Virtual network: servers__network Subnet: default 

Fahren

Leider können Sie in Azure keine Festplatten mit beliebigen Namen erstellen. Daher müssen Sie hier eine Problemumgehung durch die Erstellung einer fiktiven virtuellen Maschine durchführen und diese dann als Leerzeichen verwenden, um eine funktionierende Maschine zu erstellen.

Erstellen Sie eine virtuelle Dummy-Maschine

 Virtual machines >> +Add Basics: Name: server-01-raw VM disk type: Premium SSD Username: your-name SSH public key: your-public-key Settings: Availability set: None Network: servers__network Subnet: default Public IP address: None Select public inbound ports: No public inbound ports Monitoring: Disabled 

Nach dem Erstellen einer Dummy-Maschine können Sie alle Komponenten (einschließlich der Maschine selbst) entfernen, die mit dem Suffix raw gekennzeichnet sind, mit Ausnahme der Festplatte.

Wir entfernen einen Schnappschuss einer Festplatte

 Disks >>  disk server-01-raw_OsDisk_... >> +Create snapshot Name: server-01-raw-snapshot 

Erstellen Sie basierend auf dem Snapshot eine neue Arbeitsplatte:

 Disks >> +Add Name: server-01__disk-01 Source type: Snapshot Source snapshot: server-01-raw-snapshot 

Wir stellen die Arbeitsmaschine auf der Basis einer neuen Festplatte bereit

 Disks >>  server-01__disk-01 >> + Create VM Basics: Name: server-01 Settings: Availability set: None Network: servers__network Subnet: default Public IP address: None Select public inbound ports: No public inbound ports Monitoring: Disabled 

Netzwerkschnittstellen

Eine weitere Auslassung von Microsoft: Wenn Sie eine virtuelle Maschine von einer Festplatte in der GUI erstellen, können Sie die zuvor erstellte Netzwerkschnittstelle nicht daran anhängen. Daher stoppen wir den Computer, löschen die Netzwerkschnittstelle und hängen die oben erstellte an.

 Virtual machines >>  VM server-01 >> Stop Virtual machines >>  VM server-01 >> Networking: Attach network interface >> server-01__ip-private-01 Detach network interface >> server-01982 

Müllentsorgung

Der letzte Schliff ist die Entfernung von Rückständen, die bei den von uns vorgenommenen Manipulationen zurückgeblieben sind.

Löschen:

Server-01982 Netzwerkschnittstelle,
Sicherheitsgruppe Server-01-nsg,
Laufwerk von einem Dummy-Computer: server-01-raw_OsDisk ...
Snapshot Server-01-Raw-Snapshot

Hier ist das Ergebnis:

Bild

CLI


Sie haben wahrscheinlich bereits bemerkt, dass es eine ziemlich mühsame Aufgabe ist, Azure Schönheit zu verleihen. Wenn Sie jedoch die Befehlszeile (CLI) verwenden, wird alles erheblich vereinfacht. Microsoft Azure stellt die CLI sowohl für die native PowerShell- als auch für die Linux-Konsole bereit. Die letztere Option wird unten beschrieben.

Login:

 az login -u AzureUserName 

Holen Sie sich eine Liste der verfügbaren Standorte

 az account list-locations 

Eine Liste der Größen virtueller Maschinen abrufen:

 az vm list-sizes --location locationName 

Wir legen die Liste der Netzwerk- und Parameter der virtuellen Maschine fest (in allen nachfolgenden Befehlen werden diese Daten über Variablen übertragen):

 location="westindia" resource_group="servers" virt_network="servers__network" virt_network_range="10.0.0.0/16" subnet="default" subnet_range="10.0.0.0/24" user="username" ssh_key="ssh-public-key" name="server-01" image="UbuntuLTS" ip="10.0.0.101" interface_suffix="__ip-private-01" disk_suffix="__disk-01" size="Standard_B1s" ### SSD = "Premium_LRS"; HDD = "Standard_LRS" storage_type="Premium_LRS" 

Erstellen Sie eine Ressourcengruppe:

 az group create --location ${location} --name ${resource_group} 

Erstellen Sie ein virtuelles Netzwerk und Subnetz:

 az network vnet create --location ${location} --resource-group ${resource_group} --name ${virt_network} --address-prefixes ${virt_network_range} 

 az network vnet subnet create --resource-group ${resource_group} --vnet-name ${virt_network} --name ${subnet} --address-prefix ${subnet_range} 

Erstellen Sie eine Netzwerkschnittstelle:

 az network nic create --resource-group ${resource_group} --location ${location} --name ${name}${interface_suffix} --subnet ${subnet} --vnet-name ${virt_network} --private-ip-address ${ip} 

Erstellen Sie eine virtuelle Dummy-Maschine:

 az vm create --name ${name} --admin-username ${user} --ssh-key-value "${ssh_key}" --resource-group ${resource_group} --location ${location} --image ${image} --size ${size} --nics ${name}${interface_suffix} --storage-sku ${storage_type} 

Normalisieren Sie die Festplatte:

 az vm stop --name ${name} --resource-group ${resource_group} disk_old=$(az vm get-instance-view --name ${name} --resource-group ${resource_group} | grep -o "${name}_OsDisk[0-9a-z\_]\{1,\}" | head -1) az disk create --location ${location} --resource-group ${resource_group} --name ${name}${disk_suffix} --source ${disk_old} --sku ${storage_type} 

Wir entfernen die Dummy-Maschine und stellen die funktionierende bereit:

 az vm delete --name ${name} --resource-group ${resource_group} --yes az vm create --name ${name} --resource-group ${resource_group} --location ${location} --size ${size} --nics ${name}${interface_suffix} --attach-os-disk ${name}${disk_suffix} --os-type Linux ${availability_set_as_option} 

Löschen Sie die Dummy-Festplatte:

 az disk delete --resource-group ${resource_group} --name ${disk_old} --yes 

Automatisierung


Um den Prozess der Bereitstellung virtueller Maschinen in der Microsoft Azure-Cloud zu automatisieren, habe ich alle oben genannten Befehle in einem Bash-Skript azure-create-vm.sh zusammengefasst, das Github entnommen werden kann. Öffnen Sie das Skript in einem beliebigen Texteditor, geben Sie Ihre Daten ein und stellen Sie virtuelle Maschinen mit schönen Namen bereit, indem Sie einige Tasten drücken.

Source: https://habr.com/ru/post/de422211/


All Articles