Hur vill Tillhandahålla en Digitalocean Droppe Med Powershell-7

0
47

PowerShell är ett snabbt ökande skal och programmeringsspråk som nu är plattformsoberoende och enkel att använda. Genom att kombinera PowerShell med DigitalOcean API, vi kan snabbt tillhandahålla resurser, såsom virtuella maskiner, känd som Droppar, från manus av funktioner.

I denna artikel kommer vi att utforska hur man ska utnyttja DigitalOcean REST API med PowerShell för att distribuera en droppe i den befintliga miljön.

Installera PowerShell-Core

Om du kör ett Windows-system, du kan ha den tidigare versionen av PowerShell känt som Windows PowerShell. Om du har Linux, du kommer att behöva installera PowerShell för att se till att vi kan köra kommandon och skript som krävs. Följ denna länk för instruktioner om hur man gör detta.

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

En av de bra sakerna med PowerShell 7 är att det kan installeras sida vid sida på Windows-system och kommer inte att påverka befintliga Windows PowerShell-miljö. På detta sätt, är det lätt att komma igång och inte bryter mot någon befintliga skript.

Skapa API-Nycklar från DigitalOcean

För Terraform att kommunicera med DigitalOcean, måste vi skapa API-Nycklar för användning med DigitalOcean leverantör. Följande steg beskriver hur du skapar ett nytt API-nyckel som är specifikt för användning med Terraform. Du kan använda andra API-Nycklar, men det är bäst att inte återanvända nycklar, där du kan lätt inaktivera tillgång till när det behövs.

  1. Logga in till DigitalOcean kontrollpanelen.
  1. Navigera till API.
  1. Klicka på “Generera Nya Tecken.”
  1. Ange ett symboliskt namn och låta token både läs-och skrivrättigheter.
  1. Kopiera en API-Nyckel, så du kommer inte att visas det igen. Vi kommer sedan använda denna för Terraform.

DigitalOcean REST API

En hel del information som finns i DigitalOcean REST API dokumentation, men vi är fokuserade på autentisering och droppar skapande samtal. För att verifiera, behöver vi följande, som dras från den dokumentation. Detta sker via OAuth, som är ett substitut för ett användarnamn och lösenord. Denna token måste därför vara väl skyddade, eftersom det kommer att ge full tillgång till en DigitalOcean konto. Följande rubriker är nödvändiga för en korrekt autentisering:

  • Tillstånd: Bärare digitaloceanapitoken
  • Content-Type: application/json

Utan dessa rubriker, API kommer inte att kunna verifiera, och den kommer inte heller att förstå hur man ska tolka den data som kommer in.

Skapa JSON konfiguration

I detta exempel, vi är provisioning ett enkelt droppen som resurs. Vi vill använda deras billigaste tillgängliga plan i NYC1 data center, och lägga på ett par av alternativ som kommer att göra droppen mer flexibla att använda i framtiden.

  • Droppen Bild: ubuntu-18.04-x64
  • Region: NYC1
  • Storlek: s1-vcpu1-1gb

Eftersom vi behöver för att passera på vår konfiguration via JSON, kan vi format med hjälp av följande:

$JSON = @{
“namn” = “test-web-vm”
“region”) = “nyc1”
“storlek” = “s-1vcpu-1 gb”
“bild” = “ubuntu-18-04-x64”
“ipv6” = $true
“private_networking” = $true
“övervakning” = $true
} | ConvertTo-JSON -Komprimera

Ytterligare kommandon som vi lägger här finns för övervakning, ipv6, och privata nätverk. Övervakning innebär att du kommer att ha mätetal, såsom CPU och minne, från och inom DigitalOcean cloud-konsolen. Du kan sedan ställa in varningar på dessa mått, så det är mycket användbart för framtiden. IPv6 innebär att din droppe kommer att vara tillgänglig från IPv6, som hjälper till att framtidssäkra din droppar. Slutligen, privata nätverk innebär att din droppe kommer att få en 10: a.x.x.x-adress som är tillgänglig via andra droppar men inte det publika internet.

Det finns en annan mycket användbar förmåga och att användarnas data. För Linux, detta gör att du kan köra vissa kommandon om proviantering av VM, till exempel uppdatering av paket. Vi kan ta med denna rätt i JSON-konfiguration, genom att lägga till attributet på:

$JSON = @{
“namn” = “test-web-vm”
“region”) = “nyc1”
“storlek” = “s-1vcpu-1 gb”
“bild” = “ubuntu-18-04-x64”
“ipv6” = $true
“private_networking” = $true
“övervakning” = $true
“user_data” = “#cloud-confignpackage_update: truenpackage_upgrade: sant”
} | ConvertTo-JSON -Komprimera

När fylla en user config, kanske du märker att det kan se lite konstigt. Du måste vara försiktig med radbrytningar och dubbla citationstecken för att undvika att bryta mot JSON-config.

Proviantering Droppen

Nu har vi skapat vår konfiguration, kommer vi att distribuera droppen. För att göra detta, behöver vi bara kör cmdlet Åberopa-RestMethod i PowerShell för att använda vår konfiguration:

$JSON = @{
“namn” = “test-web-vm”
“region”) = “nyc1”
“storlek” = “s-1vcpu-1 gb”
“bild” = “ubuntu-18-04-x64”
“ipv6” = sant
“private_networking” = sant
“övervakning” = sant
“user_data” = “#cloud-confignpackage_update: truenpackage_upgrade: sant”
} | ConvertTo-JSON -Komprimera

$Params = @{
“URI” = “https://api.digitalocean.com/v2/droplets”
“Method = “POST”
“Body” = $JSON
“Autentisering” = “OAuth”
“Token” = (‘digitaloceanapitoken’ | ConvertTo-SecureString -AsPlainText)
“ErrorAction” = ‘Stoppa’
“Rubriker” = @{
“Content-Type” = “application/json”
}
}

Invoke-RestMethod @Params

Efter detta, bör vi få en framgång meddelande från konsolen, med ett returnummer av 200 som visar att droppen skapelsen var framgångsrik.

Efter att ha gått in i konsolen, kommer du att finna att det droppen som nu visas som förväntat med alla inställningsalternativ som definieras. Det kan ta en stund att skapa, men ett av kännetecknen för DigitalOcean är hastigheten på Droppen skapande.

Ytterligare Alternativ

Det finns några ytterligare möjligheter som du kanske vill använda, beroende på omständigheterna. Nedan listas några parametrar som du kan göra för att sprida en droppe ännu enklare:

  • ssh_keys
  • säkerhetskopior
  • volymer
  • taggar

Det är bäst att inte tillåta direkt SSH-åtkomst med hjälp av ett root-lösenord. Därför tillhandahåller SSH-nycklar på provisioning är en betydligt säkrare metod. DigitalOcean erbjuder säkerhetskopior, för en kostnad, och du kan aktivera den här från ett API-anrop. Dessutom, DigitalOcean volymer kan kopplas till en droppe att möjliggöra för rörliga block storage. Slutligen, märkning gör att du kan kategorisera och tillämpa vissa politikområden, till exempel brandväggar för att en droppe.

Att Linda Upp

Som du kan berätta genom att kombinera PowerShell med DigitalOcean API, kan vi snabbt och enkelt tillhandahålla en droppe. När du läser vidare i dokumentationen, kan du finna att det är mycket mer som du kan göra för att få detta att fungera effektivt och gör att du kan integrera PowerShell i din konfigurationer.