Wie zur Bereitstellung einer Digitalocean Droplet Mithilfe von Powershell-7

0
181

PowerShell ist eine rasant steigende shell und Programmiersprache, ist nun plattformübergreifend und einfach zu bedienen. Durch die Kombination von PowerShell mit der DigitalOcean-API, können wir schnell die Bereitstellung von Ressourcen wie virtuelle Maschinen, bekannt als Tröpfchen, die von Skripts Funktionen.

In diesem Artikel untersuchen wir, wie nutzen Sie die DigitalOcean REST-API mit PowerShell zum bereitstellen eines Tropfens in die bestehende Umgebung.

Installation Von PowerShell-Core

Wenn Sie mit einem Windows-system, müssen Sie möglicherweise die frühere version von PowerShell bekannt als Windows PowerShell. Wenn Sie Linux, müssen Sie die PowerShell installieren, um sicherzustellen, dass wir die Befehle ausführen und Skripts benötigt. Folgen Sie diesem link für Anweisungen, wie dies zu tun.

https://github.com/PowerShell/PowerShell/tree/master/docs/learning-powershell

Einer der großen Dinge über PowerShell-7 ist, dass es installiert werden kann side-by-side auf Windows-Systemen und wird keine Auswirkungen auf die bestehenden Windows PowerShell-Umgebung. Auf diese Weise ist es einfach, begonnen zu erhalten, und nicht brechen Sie alle vorhandenen Skripts.

Erstellen API-Schlüssel von DigitalOcean

Für Terraform für die Kommunikation mit DigitalOcean, die wir generieren müssen API-Schlüssel für die Verwendung mit dem DigitalOcean-Anbieter. Die folgenden Schritte beschreiben, wie Sie erstellen Sie eine neue API-Schlüssel speziell für die Verwendung mit Terraform. Sie könnten mit anderen API-Keys, aber es ist am besten Praxis, um nicht wieder, keys, wo Sie können einfach deaktivieren Sie den Zugriff, wenn nötig.

  1. Login des DigitalOcean Systemsteuerung.
  1. Navigieren Sie zu der API-Abschnitt.
  1. Klicken Sie auf “Generate New Token.”
  1. Geben Sie eine token-Namen und erlauben die token-lese-und Schreibberechtigung.
  1. Kopieren Sie den API-Schlüssel, da Sie nicht angezeigt werden es wieder. Wir werden dann mit diesem für Terraform.

DigitalOcean REST-API

Viele Informationen finden Sie im DigitalOcean-REST-API-Dokumentation, aber wir konzentrieren uns auf die Authentifizierung und droplet-Erstellung fordert. Zu authentifizieren, benötigen wir die folgenden, als zog Sie aus der Dokumentation. Dies geschieht über OAuth, das ist ein Ersatz für einen Benutzernamen und ein Passwort. Dieses token muss daher gut geschützt werden, da es ermöglichen vollen Zugriff auf eine DigitalOcean account. Die folgenden Header sind notwendig für die ordnungsgemäße Authentifizierung:

  • Authorization: Bearer digitaloceanapitoken
  • Content-Type: application/json

Ohne diese Header, die API wird nicht in der Lage sein, sich zu authentifizieren, und es wird auch nicht verstehen, wie man die Daten analysieren kommen.

Erstellen der JSON-Konfiguration

In diesem Beispiel sind wir die Bereitstellung eines einfachen Tropfens Ressource. Wir wollen Ihre günstigsten verfügbaren plan in die NYC1 Daten-center, und fügen Sie ein paar Optionen, die machen das droplet flexibler in der Zukunft zu verwenden.

  • Droplet-Bild: ubuntu-18.04-x64
  • Region: NYC1
  • Größe: s1-vcpu1-1gb

Da müssen wir weitergeben in unserer Konfiguration per JSON, wir können das format mit dem folgenden:

$JSON = @{
“name” = “test-web-vm”
“region” = “nyc1”
“Größe” = “s-1vcpu-1 GB”
“Bild” = “ubuntu-18-04-x64”
“ipv6” = $true
“private_networking” = $true
“monitoring” = $true
} | ConvertTo-JSON -Komprimiert

Die zusätzlichen Befehle, die wir hinzufügen, sind hier für monitoring, ipv6 und private Netzwerke. Monitoring bedeutet, dass Sie Metriken wie CPU und Speicher, innerhalb des DigitalOcean cloud-Konsole. Sie können dann festlegen, dass Benachrichtigungen, die auf diesen Metriken, so ist es sehr nützlich für die Zukunft. IPv6 bedeutet, dass Ihr droplet wird zugänglich von IPv6, die Ihnen hilft, die Zukunftssicherheit Ihres Tröpfchen. Schließlich, private networking bedeutet, dass Sie Ihre Tropfen bekommt eine 10.x.x.x-Adresse aus zugänglich ist, von anderen Tröpfchen, aber nicht das öffentliche internet.

Es gibt eine andere sehr nützliche Fähigkeit, und das ist user-Daten. Für Linux ermöglicht Ihnen das ausführen bestimmter Befehle auf die Bereitstellung der VM, wie das aktualisieren von Paketen. Wir können diese direkt in der JSON-Konfiguration, indem Sie dieses Attribut auf:

$JSON = @{
“name” = “test-web-vm”
“region” = “nyc1”
“Größe” = “s-1vcpu-1 GB”
“Bild” = “ubuntu-18-04-x64”
“ipv6” = $true
“private_networking” = $true
“monitoring” = $true
“user_data” = “#cloud-confignpackage_update: truenpackage_upgrade: true,”
} | ConvertTo-JSON -Komprimiert

Beim füllen einer user config, werden Sie feststellen, dass es Aussehen kann, ein wenig seltsam. Sie müssen vorsichtig sein, Zeilenumbrüche und Anführungszeichen, um zu vermeiden brechen die JSON-config.

Die Bereitstellung der Tröpfchen

Jetzt haben wir erstellt unsere Konfiguration, wir stellen die Tropfen. Um dies zu tun, müssen wir einfach führen Sie das cmdlet ” Invoke-RestMethod in der PowerShell mit unserer Konfiguration:

$JSON = @{
“name” = “test-web-vm”
“region” = “nyc1”
“Größe” = “s-1vcpu-1 GB”
“Bild” = “ubuntu-18-04-x64”
“ipv6” = true
“private_networking” = true
“monitoring” = true
“user_data” = “#cloud-confignpackage_update: truenpackage_upgrade: true,”
} | ConvertTo-JSON -Komprimiert

$Params = @{
“URI” = “https://api.digitalocean.com/v2/droplets”
“Method” = “POST”
“Körper” = $JSON
“Authentication” = “OAuth”
“Token” = (‘digitaloceanapitoken’ | ConvertTo-SecureString -AsPlainText)
“ErrorAction” = “Stop”
“Header” = @{
“Content-Type” = “application/json”
}
}

Invoke-RestMethod @Params

Nachdem Sie dies getan haben, wir sollten eine Erfolg-Meldung aus der Konsole, mit einem return-code 200, der angibt, dass das droplet-Erstellung erfolgreich war.

Nachdem er in der Konsole, werden Sie feststellen, dass die Tropfen jetzt wie erwartet angezeigt mit allen Optionen für die Konfiguration definiert ist. Es dauert ein paar Momente zu schaffen, sondern eines der Markenzeichen von DigitalOcean ist die Geschwindigkeit der Tröpfchen-Erzeugung.

Weitere Optionen

Es gibt ein paar zusätzliche Optionen, die Sie möglicherweise anwenden möchten, je nach den Umständen. Nachfolgend sind einige Parameter, kann die Bereitstellung eines Tropfens noch einfacher:

  • ssh_keys
  • sicherungen
  • Bände
  • tags

Am besten ist es Praxis, keine direkte SSH-Zugriff mit root-Passwort. Daher die SSH-keys bei der Bereitstellung ist eine weitaus sicherere Methode. DigitalOcean bietet sicherungen, für eine Gebühr, und Sie können diese innerhalb eines API-Aufrufs. Darüber hinaus DigitalOcean Datenträger können angeschlossen werden, um ein Tröpfchen zu ermöglichen beweglichen block storage. Schließlich tagging ermöglicht es Ihnen, zu kategorisieren und anwenden bestimmter Strategien, wie z.B. firewalls, um ein Tröpfchen.

Zusammenfassung

Wie können Sie sagen, durch die Kombination von PowerShell mit der DigitalOcean-API, können wir schnell und einfach die Bereitstellung ein Tröpfchen. Lesen Sie weiter in der Dokumentation, finden Sie vielleicht, dass es weit mehr, dass Sie tun können, um diese Arbeit effektiv und ermöglichen Ihnen die Integration von PowerShell in Ihre Konfigurationen.