Šis vadovas parodo, kaip naudoti „Terraform“ su „Google Cloud“ platforma. Šiame vadove daroma prielaida, kad vartotojas turi „Google Cloud“ platformos paskyrą ir yra paruoštas naudoti, jei ne, tai galima lengvai sukurti nemokamą bandomąją paskyrą per metus. Tačiau norint pasiekti konsolę „Google Cloud“ reikia pateikti galiojantį kreditinės kortelės numerį; taigi, prieš tęsdami, įsitikinkite, kad jis yra išspręstas.
Reikalavimai ir sąlygos
„Google Cloud“ platformą sudaro daugybė paslaugų; todėl sunku juos visus apimti viename vadove, todėl šis vadovas apima tik „Google“ VM egzempliorių skyrių. Tai parodo, kaip įdiegti „Nginx“ žiniatinklio serverį „Ubuntu“ VM egzemplioriuje „Google Cloud“ infrastruktūroje.
Kadangi vadovas yra apie terraformą, akivaizdu, kad jis turi būti įdiegtas sistemoje. Be to, norint pasiekti VM egzempliorių, reikia sugeneruoti SSH raktą.
Kaip įdiegti „Terraform“ į „Ubuntu“
„Terraform“ galima montuoti dviem skirtingais būdais. Pirmasis metodas yra rankinis būdas, reikalaujantis, kad vartotojas jį atsisiųstų ir įdiegtų sistemoje, alternatyvus ir labiausiai rekomenduojamas būdas yra automatizuotas būdas, kuris atsisiunčia ir įdiegia sistemoje „terraform“ su pora kodo eilučių. Vykdykite šias komandas, kad tai įvyktų.
- Įdiekite išpakavimo paketą sistemoje, kad išgautumėte „terraform“ paketą, kai tik jis bus atsisiųstas.
- Atsisiųskite ir įdiekite „terraform“ iš nurodytos nuorodos. Atminkite, kad tuo metu, kai straipsnis rašomas, naujausia „terraform“ versija yra 0.11.10. Ateityje versija gali būti kitokia. Taigi visada atkreipkite dėmesį į jų oficialią svetainę, kad gautumėte informacijos apie naujausią „terraform“ paketą.
- Ištraukite teritorijos formą į šiuo metu aktyvų katalogą. Pagal numatytuosius nustatymus tai yra „Ubuntu“ pagrindinis puslapis.
- Perkelkite „terraform“ į dvejetainį aplanką. „Terraform“ neturi sąrankos failo; todėl jo dvejetainis failas turi būti dedamas į šiukšliadėžės failą rankiniu būdu.
- Norėdami pasiekti „terraform“ iš komandinės eilutės nenurodydami jos katalogo, naudokite šią komandą.
Kaip sukurti savo SSH raktą
Įdiegus „terraform“, kitas svarbus žingsnis yra sukurti savo SSH viešojo / privataus rakto porą, kad galėtumėte bendrauti su netrukus kuriama VM egzemplioriumi. SSH raktų pora suteikia tvirtą apsaugą tradiciniam slaptažodžio / vartotojo vardo autentifikavimui; todėl griežtai rekomenduojama laikytis šios parinkties, net jei tai nėra privaloma.
1. „Ubuntu“ apvalkale įveskite šią komandą, kad sugeneruotumėte SSH raktų porą.
ssh-keygen
2. Pradžioje ji klausia raktų poros pavadinimo, tada - ssh rakto slaptafrazės. Viešasis raktas sukurtas kaip
Konfigūruokite „Google Cloud“ naudodami „Terraform“
Užbaigus minėtus du segmentus, sukurkite nemokamą bandomąją paskyrą „Google Cloud“. Kadangi paskyros sukūrimas yra paprastas procesas, jis čia nėra aprašytas. Gavę prieigą prie „Google Cloud“ konsolės, atlikite šiuos veiksmus, kad sukonfigūruotumėte „Google Cloud“ su „terraform“.
- Eikite į šį URL.
https: // konsolė.debesis.google.com
- Viršutiniame kairiajame konsolės kampe spustelėkite mygtuką „Mano projektai“.
- Šiame vadove sukurkite naują projektą arba naudokite esamą. „Projekto“ tikslas yra grupuoti įvairias paslaugas „Google Cloud“. Projektas yra aukščiausias šios paslaugų hierarchijos mazgas, o po juo eina likusios paslaugos. Pagal vieną projektą sukurta paslauga negali būti pasiekiama iš kito projekto. Kai projektas bus sukurtas, nukopijuokite ir laikykite jo ID kur nors saugioje vietoje. Šioje ekrano kopijoje projekto ID yra charizmatiška-suma-202020, ir jūsų debesies konsolėje jis gali būti kitoks.
- Eikite į šį žiniatinklio URL, kad atsisiųstumėte JSON formato kredencialų failą, kad autentifikuotumėte vartotoją prisijungdami prie „Google“ debesies platformos. Tai yra administratoriaus paskyra; taigi įsitikinkite, kad šis kredencialų failas yra saugus saugioje vietoje. https: // konsolė.debesis.google.com / apis / credentials / serviceaccountkey
- Sukurkite failą ir pervadinkite jį kaip pagrindinį.tf. Šis failas yra „terraform“ konfigūracijos failas, tada kaip pirmąsias kodo eilutes naudokite šį kodo bloką. Teikėjo pavadinimas nurodo paslaugų teikėją, su kuriuo reikia susisiekti. „Terraform“ palaiko daugybę debesų platformų; todėl debesų platformos pavadinimas turi būti aiškiai nurodytas. Čia tai „Google“, o tai reiškia, kad jis jungiasi su „Google“ debesies platforma. Be antraštės, bloke yra 3 atributai, atributas „credentials“ skirtas nurodyti atsisiunčiamą kredencialų failo pavadinimą, projekto pavadinimas yra vieta „Google“ debesyje, kur sukurtas VM egzempliorius. 3 veiksme sukurtas ID čia naudojamas kaip projekto pavadinimas. Regionas yra geografinė vieta, kur sukurtas VM egzempliorius. Yra keli regionai. Naudokite šią nuorodą, jei norite nurodyti visus galimus regionus. https: // debesis.google.com / appengine / docs / buveinių teikėjas „google“
kredencialai = "$ failas (" CREDENTIALS_FILE.json ")"
project = "PROJECT_NAME"
regionas = "REGION_NAME"
- Norėdami įdiegti „terraform“ papildinius, naudokite šią komandą. Ši komanda automatiškai nuskaito „terraform“ konfigūracijos failą ir nustato, kuriuos papildinius reikia įdiegti, be to, ji taip pat atsisiunčia „terraform“ teikėjo informaciją. Šiame vadove naudojama „Google Cloud“ platforma; todėl atsisiųsta „Google“ debesies „terraform“ teikėjo informaciją. Komanda identifikuoja tiekėją iš pavadinimo, nurodyto „terraform“ konfigūracijos faile esančiame raktiniame žodyje. terraform init
- Norėdami apibrėžti daugiau informacijos apie VM egzempliorių, naudokite šiuos du kodų blokus. Nuo pat pradžių jis naudoja atsitiktinio ID įskiepį, kad sugeneruotų atsitiktinį skaičių su 8 skaitmenimis, tada priskiria tą skaičių kintamajam instancija, kad būtų naudojamas kaip VM egzemplioriaus vardo priešdėlis. Antrame kodo bloke sukuriamas VM egzempliorius pavadinimu „nucuta-vm-
. Mašinos tipas yra serverio paketas, naudojamas VM egzemplioriui priglobti. Norėdami rasti galimus mašinų tipus, žr. Šį žiniatinklio URL. https: // debesis.google.com / compute / docs / machine-types. Zona yra tiksli regiono vieta. Kiekviename regione daugiausia yra 3 zonos, a, b, c. Kiekviena zona turi savo aparatinės ir programinės įrangos konfigūraciją. Naudokite šį žiniatinklio URL, jei norite nurodyti visas galimas zonas ir jų aparatinės įrangos konfigūraciją. https: // debesis.google.com / compute / docs / regionai-zonos / šaltinis "random_id" "instance_id"
baitų ilgis = 8
šaltinis "google_compute_instance" "nucuta"
name = "nucuta-vm - $ random_id.instance_id.hex "
machine_type = "f1-mikro"
zona = "azija-pietai1-a"
- Kodo bloke „google_compute_instance“ naudokite šį kodo bloką. Jame nurodoma naudojama operacinė sistema. Naudokite šį žiniatinklio URL norėdami rasti visas galimas „Google“ debesies platformos operacines sistemas. https: // debesis.google.com / compute / docs / images. Jis sako „image“, nes operacinės sistemos saugomos kaip „image“ failai. Vykdant „terraform“ konfigūracijos failą, vaizdo failas išgaunamas ir jo operacinė sistema įdiegiama VM egzemplioriuje, kaip ir įprastame kompiuteryje. Vaizdo atributas yra šio formato, įvaizdžio projektas / įvaizdžio šeima. boot_disk
initize_params
image = "ubuntu-os-cloud / ubuntu-1604-lts"
- „Google_compute_instance“ kodų bloke naudokite šį kodą. Jis nurodo paleisties scenarijų, skirtą paleisti naujai sukurtoje VM instancijoje. Šis scenarijus vykdomas iškart, kai sukuriamas VM egzempliorius. Šiame pavyzdyje jis atnaujina vietinių paketų informacijos saugyklą naujausia informacija, tada atnaujina visus paketus su dist-upgrade, tada įdiegia „nginx“ paketą. Įsitikinkite, kad pažymėjote -y, kad procesas būtų neinteraktyvus, ty jis automatiškai vykdo ir vykdo procesą nereikalaudamas vartotojo įsikišimo. metadata_startup_script = "sudo apt-get -y atnaujinimas;
sudo apt-get -y dist-upgrade;
sudo apt-get -y įdiekite nginx "
- „Google_compute_instance“ kodų bloke naudokite šį kodo bloką. Šiame kodo bloke nurodoma tinklo sąsaja, naudojama dabartiniam VM egzemplioriui sujungti su kitomis VM egzemplioriais, įrenginiais ir tinklais. „Access_config“ blokas naudojamas VM egzemplioriui priskirti išorinį IP adresą, norint jį pasiekti iš interneto. tinklo_interface
tinklas = "numatytasis"
access_config
- Galiausiai naudokite šį kodo bloką „google_compute_instance“ kodo bloke. Jame nurodomas vartotojo vardas ir viešasis SSH raktas. Įsitikinkite, kad sugeneruotas viešasis SSH raktas yra tame pačiame aplanke kaip ir „terraform“ konfigūracijos failas. Vartotojo vardas turėtų būti paskyros, iš kurios buvo sukurtas SSH raktas, pavadinimas, pavyzdžiui, jei paskyros vardas yra root, tada jos vartotojo vardas yra root. metaduomenys
sshKeys = "dilanga: $ file (" dilanga.baras ")"
- Galutinis kodo blokas turėtų atrodyti taip
- Naudokite šį kodo bloką lauke „google_compute_instance“ kodo bloko. Pagal numatytuosius nustatymus VM egzempliorius blokuoja visą gaunamą ir išeinantį srautą. Kadangi šiame vadove sukuriamas žiniatinklio serveris, reikia atidaryti 80 ir 443 prievadus, kad vartotojai galėtų juo naudotis internetu. Nuo pat pradžių vardo atributas sukuria šios taisyklės profilį „Google“ skaičiavimo užkardoje, tinklo atributas nurodo, kuriai tinklo sąsajai taikoma taisyklė, leisti blokuoti leidžia protokolus ir jo prievadus, nurodytus joje. „Icmp“ protokolas naudojamas žiniatinklio serverio pingui patikrinti, ar jis prieinamas viešai. Daugelis tarnybų dažnai naudoja „Pinging“, norėdami sužinoti apie interneto svetainės prieinamumą. resursas "google_compute_firewall" "numatytasis"
name = "nginx-firewall"
tinklas = "numatytasis"
leisti
protokolas = "TCP"
prievadai = ["80", "443"]
leisti
protokolas = "icmp"
- Naudokite šį kodo bloką lauke „google_compute_instance“, kad atspausdintumėte dabartinį VM egzemplioriaus viešąjį IP adresą. išvestis „ip“
value = "$ google_compute_instance.nucuta.tinklo sąsaja.0.access_config.0.nat_ip "
- Norėdami patikrinti konfigūracijos failą ir kredencialų failą, naudokite šią komandą. Ji taip pat peržiūri, kaip atrodo galutinis rezultatas, kai bus įvykdytas konfigūracijos failas. „terraform“ planas
- tada naudokite šią komandą, kad įvykdytumėte konfigūracijos failą. taikoma terraform
- Dabar naudokite viešąjį IP adresą bet kurioje žiniatinklio naršyklėje, kad pasiektumėte VM egzemplioriaus žiniatinklio serverį.
- Naudokite šią komandą, kad pasiektumėte VM egzempliorių per SSH, kad galėtumėte tvarkyti serverį. Įsitikinkite, kad privatus raktas yra dabartiniame kataloge, arba nurodykite kelią į privatų raktą.
- ssh -i
@ Išvada
To turėtų pakakti, kad galėtumėte pradėti. Visas konfigūracijos failas, pagrindinis.tf, yra parodyta žemiau. Paryškintus tekstus galima keisti atsižvelgiant į vartotojo reikalavimus.
teikėjas „google“
įgaliojimai = "$ file (" dilannga_credentials.json ")"
project = "charizmatiška-suma-202020"
regionas = "azija-pietūs1"
šaltinis "random_id" "instance_id"
baitų ilgis = 8
šaltinis "google_compute_instance" "nucuta"
name = "nucuta-vm - $ random_id.instance_id.hex
machine_type = "f1-mikro"
zona = "azija-pietai1-a"
boot_disk
initize_params
image = "ubuntu-os-cloud / ubuntu-1604-lts"
metadata_startup_script = "sudo apt-get -y atnaujinimas; sudo apt-get -y dist-upgrade;
sudo apt-get -y įdiekite nginx "
tinklo_interface
tinklas = "numatytasis"
access_config
metaduomenys
sshKeys = "dilanga: $ file (" dilanga.baras ")"
resursas "google_compute_firewall" "numatytasis"
name = "nginx-firewall"
tinklas = "numatytasis"
leisti
protokolas = "TCP"
prievadai = ["80", "443"]
leisti
protokolas = "icmp"
išvestis „ip“
value = "$ google_compute_instance.nucuta.tinklo sąsaja.0.access_config.0.nat_ip "