Terraform

Terraform gebruiken met Google Cloud Platform?

Terraform gebruiken met Google Cloud Platform?
Terraform is een tool die wordt gebruikt om infrastructuur gemakkelijk als codes te beheren. Het is ontwikkeld door HashiCorp als een opensourceproject voor cloudontwikkelaars om hun infrastructuur te beheren in taal op zeer hoog niveau (HCL). Het grootste voordeel van deze tool is dat het de belangrijkste infrastructuurdiensten zoals AWS, OpenStack, Vultr, Digital Ocean, Google Cloud abstraheert en ontwikkelaars in staat stelt hun configuratie te verenigen in één standaardformaat. Daarnaast zijn automatisering en detailuitvoering ook mogelijk met Terraform. Het is beschikbaar in Windows-, Linux-, MacOS-platforms en kan worden gebruikt met elk groot cloudplatform met een gemiddeld niveau van technische kennis.

Deze handleiding laat zien hoe u Terraform kunt gebruiken met het Google Cloud-platform. In deze handleiding wordt ervan uitgegaan dat de gebruiker een account heeft in het Google Cloud-platform en klaar is voor gebruik, zo niet, dan is het mogelijk om gemakkelijk een jaar lang een gratis proefaccount aan te maken. Google Cloud vereist echter dat een geldig creditcardnummer wordt ingediend om toegang te krijgen tot de console; zorg er daarom voor dat het is afgehandeld voordat u verder gaat.

Vereisten en voorwaarden

Google Cloud platform bestaat uit een groot aantal diensten; daarom is het moeilijk om ze allemaal in één handleiding te behandelen, en daarom behandelt deze handleiding alleen het gedeelte Google VM-instanties. Het laat zien hoe u een Nginx-webserver installeert in een Ubuntu VM-instantie in de Google Cloud-infrastructuur.

Aangezien de gids over terraform gaat, moet deze uiteraard in het systeem worden geïnstalleerd. Bovendien moet er een SSH-sleutel worden gegenereerd om toegang te krijgen tot de VM-instantie.

Hoe Terraform op Ubuntu te installeren

Terraform kan op twee verschillende manieren worden geïnstalleerd. De eerste methode is een handmatige manier, waarbij de gebruiker het moet downloaden en in het systeem moet installeren, de alternatieve en de meest aanbevolen manier is een geautomatiseerde manier, die het terraform in het systeem downloadt en installeert met een paar coderegels. Volg de volgende opdrachten om het te laten gebeuren:.

  1. Installeer het unzip-pakket in het systeem om het terraform-pakket uit te pakken zodra het is gedownload.
sudo apt-get install unzip
  1. Download en installeer terraform via de gegeven link. Merk op dat op het moment dat het artikel wordt geschreven, de nieuwste versie van terraform 0 . is.11.10. In de toekomst kan de versie een andere zijn. Let dus altijd op hun officiële website voor informatie over het nieuwste terraform-pakket.
wget https://releases.hashicorp.com/terraform/0.11.10/terraform_0.11.10_linux_amd64.zip
  1. Pak het terraform uit naar de huidige actieve map. Standaard is dit de Home-map in Ubuntu.
unzip terraform_0.11.10_linux_amd64.zip
  1. Verplaats het terraform naar de binaire map. Terraform heeft geen installatiebestand; daarom moet het binaire bestand handmatig in het bin-bestand worden geplaatst.
sudo mv terraform /usr/local/bin/
  1. Gebruik de volgende opdracht om toegang te krijgen tot terraform vanaf de opdrachtregel zonder de directory op te geven:.
terraform --versie

Hoe u uw eigen SSH-sleutel kunt genereren

Na het installeren van terraform is de volgende belangrijke stap het genereren van uw eigen openbare/private SSH-sleutelpaar om te communiceren met de VM-instantie die op het punt staat te worden gemaakt. SSH-sleutelpaar biedt een sterke beveiliging ten opzichte van de traditionele wachtwoord-/gebruikersnaamverificatie; daarom wordt het ten zeerste aanbevolen om deze optie te volgen, ook al is het niet verplicht.

1. Typ in de Ubuntu-shell de volgende opdracht om het SSH-sleutelpaar te genereren:.

ssh-keygen

2. In het begin vraagt ​​het een naam voor het sleutelpaar en vervolgens het wachtwoord voor de ssh-sleutel. De openbare sleutel wordt gemaakt als .pub, terwijl de privésleutel is gemaakt als . Beide sleutels worden gemaakt in de huidige actieve directory. Bewaar de privésleutel op een veilige locatie, want het is belangrijk om toegang te krijgen tot de VM-instantie.

Configureer de Google Cloud met Terraform

Zodra de bovengenoemde twee segmenten zijn voltooid, kunt u doorgaan en een gratis proefaccount maken in Google Cloud. Aangezien het aanmaken van een account een eenvoudig proces is, wordt het hier niet beschreven. Nadat u toegang hebt gekregen tot de Google Cloud-console, volgt u de volgende stappen om Google Cloud te configureren met terraform.

  1. Navigeer naar de volgende URL.
    https://console.wolk.google.com
  1. Klik op de knop "Mijn projecten" in de linkerbovenhoek van de console.
  2. Maak een nieuw project of gebruik een bestaand project voor deze handleiding. Het doel van het “project” is het groeperen van verschillende diensten in de Google Cloud. Het project is het hoogste knooppunt van deze serviceshiërarchie en de rest van de services gaat eronder. Een service die onder een project is gemaakt, is niet toegankelijk vanuit een ander project. Nadat het project is gemaakt, kopieert u de ID en bewaart u deze op een veilige plaats. In de volgende schermafbeelding is de project-ID charismatische-som-202020, en het kan een andere zijn in uw cloudconsole. 
  3. Navigeer naar de volgende web-URL om het referentiebestand in JSON-indeling te downloaden om de gebruiker te verifiëren bij het verbinden met het Google-cloudplatform. Dit is het beheerdersaccount; zorg er daarom voor dat dit referentiebestand veilig op een veilige locatie staat. https://console.wolk.google.com/apis/referenties/serviceaccountkey 
  4. Maak een bestand en hernoem het als main.tf. Dit bestand is het configuratiebestand voor terraform, gebruik dan het volgende codeblok als de eerste regels code:. De naam van de provider is voor het aangeven van de provider waarmee verbinding moet worden gemaakt. Terraform ondersteunt een groot aantal cloudplatforms; daarom moet de naam van het cloudplatform expliciet worden vermeld. Hier is het Google, wat betekent dat het verbinding maakt met het Google-cloudplatform. Afgezien van de kop, zijn er 3 attributen in het blok, het attribuut "credentials" is voor het specificeren van de hierboven gedownloade naam van het referentiebestand, de projectnaam is de locatie in Google Cloud waar de VM-instantie is gemaakt. De id die in stap 3 is gemaakt, wordt hier gebruikt als de projectnaam. Regio is de geografische locatie waar de VM-instantie is gemaakt. Er zijn meerdere regio's. Gebruik deze link om naar alle beschikbare regio's te verwijzen. https://wolk.google.com/appengine/docs/locations-provider "google"
    referenties = "$file("CREDENTIALS_FILE.json")"
    project     = "PROJECT_NAME"
    regio      = "REGION_NAME"

  1. Gebruik de volgende opdracht om plug-ins voor terraform te installeren. De volgende opdracht scant automatisch het terraform-configuratiebestand en identificeert welke plug-ins moeten worden geïnstalleerd, daarnaast downloadt het ook de providerinformatie voor terraform. Deze handleiding maakt gebruik van het Google Cloud-platform; daarom downloadt het Google Cloud Terraform-providerinformatie. De opdracht identificeert de provider aan de hand van de naam die wordt vermeld bij het trefwoord "provider" in het terraform-configuratiebestand. terraform init
  1. Gebruik de volgende twee codeblokken om meer informatie voor VM-instantie te definiëren:. Vanaf het begin gebruikt het de willekeurige id-plug-in om een ​​willekeurig getal met 8 cijfers te genereren en wijst dat nummer vervolgens toe aan de variabele instantie_id om te gebruiken als een voorvoegsel voor de naam voor de VM-instantie. In het tweede codeblok wordt een VM-instantie gemaakt met de naam "nucuta-vm"-. Het machinetype is het serverpakket dat wordt gebruikt om de VM-instantie te hosten. Raadpleeg deze web-URL om de beschikbare machinetypes te vinden. https://wolk.google.com/compute/docs/machine-types. Zone is de exacte locatie van de regio. Er zijn hoofdzakelijk 3 zones beschikbaar in elke regio, a, b, c. Elke zone heeft zijn eigen hardware/software configuratie. Gebruik deze web-URL om naar alle beschikbare zones en hun hardwareconfiguratie te verwijzen. https://wolk.google.com/compute/docs/regions-zones/ resource "random_id" "instance_id"
    byte_lengte = 8

    bron "google_compute_instance" "nucuta"
    name = "nucuta-vm-$random_id.instantie_id.hex"
    machine_type = "f1-micro"
    zone = "azië-zuid1-a"
  1. Gebruik het volgende codeblok in het codeblok "google_compute_instance". Het specificeert het te gebruiken besturingssysteem. Gebruik deze web-URL om alle beschikbare besturingssystemen voor het Google Cloud-platform te vinden. https://wolk.google.com/compute/docs/images. Er staat afbeelding, omdat de besturingssystemen zijn opgeslagen als "afbeeldings" -bestanden. Wanneer het terraform-configuratiebestand wordt uitgevoerd, wordt het afbeeldingsbestand uitgepakt en wordt het besturingssysteem in de VM-instantie geïnstalleerd, net als op een gewone computer. Het afbeeldingskenmerk heeft deze indeling, afbeelding project/ afbeelding familie. opstartschijf
    initialize_params
    image = "ubuntu-os-cloud/ubuntu-1604-lts"

  1. Gebruik de volgende code in het codeblok "google_compute_instance". Het specificeert het opstartscript dat moet worden uitgevoerd op de nieuw gemaakte VM-instantie. Dit script wordt uitgevoerd zodra de VM-instantie is gemaakt. In het volgende voorbeeld werkt het de lokale pakketinformatie-repository bij met de laatste informatie, dan werkt het alle pakketten bij met dist-upgrade, dan installeert het nginx-pakket. Zorg ervoor dat u de vlag -y gebruikt om het proces niet-interactief te maken, wat betekent dat het het proces automatisch uitvoert en uitvoert zonder tussenkomst van de gebruiker. metadata_startup_script = "sudo apt-get -y update;
    sudo apt-get -y dist-upgrade ;
    sudo apt-get -y install nginx"
  1. Gebruik het volgende codeblok in het codeblok "google_compute_instance". Het volgende codeblok specificeert de netwerkinterface, die wordt gebruikt om de huidige VM-instantie te verbinden met andere VM-instanties, apparaten en netwerken. Access_config-blok wordt gebruikt om de VM-instantie een extern IP-adres toe te wijzen voor toegang vanaf internet. netwerkinterface
    netwerk = "standaard"
    access_config

  1. Gebruik ten slotte het volgende codeblok in het codeblok 'google_compute_instance':. Het specificeert de gebruikersnaam en openbare SSH-sleutel. Zorg ervoor dat de gegenereerde openbare SSH-sleutel zich in dezelfde map bevindt als het terraform-configuratiebestand. De gebruikersnaam moet de naam zijn van het account van waaruit de SSH-sleutel is gemaakt, bijvoorbeeld als de naam van het account root is, dan is de gebruikersnaam root. metagegevens
    sshKeys = "dilanga:$file("dilanga .).kroeg")"

  1. Het laatste codeblok zou er zo uit moeten zien 
  2. Gebruik het volgende codeblok: buiten van "google_compute_instance" codeblok. Standaard blokkeert VM-instantie al het inkomende en uitgaande verkeer. Aangezien deze handleiding een webserver maakt, moeten poort 80 en 443 worden geopend om gebruikers toegang te geven via internet. Vanaf het begin maakt naamkenmerk een profiel in google compute firewall voor deze regel, het netwerkkenmerk geeft aan op welke netwerkinterface de regel van toepassing is, allow block staat de protocollen en de poorten die eronder zijn gespecificeerd toe. Het Icmp-protocol wordt gebruikt om de webserver te pingen om er zeker van te zijn dat deze beschikbaar is voor het publiek. Pingen wordt vaak door veel diensten gebruikt om de beschikbaarheid van een website te achterhalen. resource "google_compute_firewall" "standaard"
    naam    = "nginx-firewall"
    netwerk = "standaard"
     
    toestaan ​​
    protocol = "tcp"
    poorten    = ["80","443"]

     
    toestaan ​​
    protocol = "icmp"

  3. Gebruik het volgende codeblok: buiten van "google_compute_instance" om het openbare IP-adres van de huidige VM-instantie af te drukken. uitvoer "ip"
    value = "$google_compute_instance.nucuta.netwerkinterface.0.access_config.0.nat_ip"
  4. Gebruik de volgende opdracht om het configuratiebestand en het referentiebestand te verifiëren:. Het geeft ook een voorbeeld van hoe het uiteindelijke resultaat eruit ziet nadat het configuratiebestand is uitgevoerd. terravormplan
  5. gebruik dan de volgende opdracht om het configuratiebestand uit te voeren:. terraform van toepassing
  6. Gebruik nu het openbare IP-adres in elke webbrowser om toegang te krijgen tot de webserver van de VM-instantie.
  7. Gebruik de volgende opdracht om via SSH toegang te krijgen tot de VM-instantie om de server te beheren:. Zorg ervoor dat de privésleutel zich in de huidige map bevindt of geef het pad naar de privésleutel op.
  8. ssh -i @

    Conclusie

    Dit zou genoeg moeten zijn om aan de slag te gaan.  Het volledige configuratiebestand, main.tf, wordt hieronder weergegeven:. Gemarkeerde teksten kunnen worden gewijzigd volgens de gebruikersvereisten.

    aanbieder "google"
    referenties = "$file("dilannga_credentials.json")"
    project     = "charismatische-som-202020"
    regio      = "asia-zuid1"

     
    bron "willekeurige_id" "instance_id"
    byte_lengte = 8

     
    bron "google_compute_instance" "nucuta"
    naam         = "nucuta-vm-$random_id.instantie_id.hex"
    machine_type = "f1-micro"
    zone         = "asia-south1-a"
     
    opstartschijf
    initialize_params
    image = "ubuntu-os-cloud/ubuntu-1604-lts"


     
    metadata_startup_script = "sudo apt-get -y update; sudo apt-get -y dist-upgrade ;
    sudo apt-get -y install nginx"
     
    netwerkinterface
    netwerk = "standaard"
     
    access_config
     


     
    metagegevens
    sshKeys = "dilanga:$file("dilanga .).kroeg")"


     
    resource "google_compute_firewall" "standaard"
    naam    = "nginx-firewall"
    netwerk = "standaard"
     
    toestaan ​​
    protocol = "tcp"
    poorten    = ["80","443"]

     
    toestaan ​​
    protocol = "icmp"


     
    uitvoer "ip"
    value = "$google_compute_instance.nucuta.netwerkinterface.0.access_config.0.nat_ip"
Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...
Beste opdrachtregelspellen voor Linux
De opdrachtregel is niet alleen je grootste bondgenoot bij het gebruik van Linux, hij kan ook de bron van entertainment zijn omdat je hem kunt gebruik...
Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...