Uvedli smo uradnega ponudnika Terraform za sodelovanje s Selectelom. Ta izdelek omogoča uporabnikom, da v celoti implementirajo upravljanje virov prek metodologije Infrastructure-as-code.
Ponudnik trenutno podpira upravljanje virov storitve "Navidezni zasebni oblak" (v nadaljevanju VPC). V prihodnosti nameravamo dodati upravljanje virov za druge storitve, ki jih ponuja Selectel.
Kot že veste, je storitev VPC zgrajena na OpenStacku. Ker pa OpenStack ne ponuja izvornih orodij za strežbo javnega oblaka, smo manjkajočo funkcionalnost implementirali v nabor dodatnih API-jev, ki poenostavijo upravljanje kompleksnih sestavljenih objektov in naredijo delo bolj priročno. Nekatere funkcije, ki so na voljo v OpenStacku, so zaprte za neposredno uporabo, vendar so na voljo prek naš API.
Ponudnik Selectel Terraform zdaj vključuje možnost upravljanja naslednjih virov VPC:
projekti in njihove kvote;
uporabniki, njihove vloge in žetoni;
javna podomrežja, vključno z medregionalnimi in VRRP;
programske licence.
Ponudnik uporablja našo javno knjižnico Go za delo z API-jem VPC. Tako knjižnica kot sam ponudnik sta odprtokodna, njun razvoj poteka na Githubu:
Za upravljanje drugih virov v oblaku, kot so virtualni stroji, diski, gruče Kubernetes, lahko uporabite ponudnika OpenStack Terraform. Uradna dokumentacija za oba ponudnika je dostopna na povezavah:
Za začetek morate namestiti Terraform (navodila in povezave do namestitvenih paketov najdete na uradna spletna stran).
Ponudnik za delovanje potrebuje ključ API Selectel, ki je ustvarjen v nadzorne plošče računa.
Manifesti za delo s Selectelom so ustvarjeni s pomočjo Terraforma ali z uporabo nabora že pripravljenih primerov, ki so na voljo v našem repozitoriju Github: terraform-primeri.
Repozitorij s primeri je razdeljen na dva direktorija:
moduli, ki vsebuje majhne module za večkratno uporabo, ki sprejmejo nabor parametrov kot vhod in upravljajo majhen nabor virov;
Primeri, ki vsebuje primere celotnega sklopa med seboj povezanih modulov.
Po namestitvi Terraform, ustvarjanju ključa Selectel API in se seznanitvi s primeri, preidimo na praktične primere.
V datoteki vars.tf opisani so vsi parametri, ki bodo uporabljeni pri klicanju modulov. Nekateri od njih imajo privzete vrednosti, na primer strežnik bo ustvarjen v coni ru-3a z naslednjo konfiguracijo:
Prepir ignore_changes vam omogoča, da prezrete spremembe atributov id za sliko, uporabljeno za ustvarjanje virtualnega stroja. V storitvi VPC se večina javnih slik samodejno posodobi enkrat tedensko in hkrati njihova id tudi spremembe. To je posledica posebnosti komponente OpenStack - Glance, v kateri slike veljajo za nespremenljive entitete.
Če ustvarjate ali spreminjate obstoječi strežnik ali disk, ki ima kot argument image_id rabljeni id javna slika, potem ko je ta slika posodobljena, bo ponovni zagon manifesta Terraform znova ustvaril strežnik ali disk. Uporaba argumenta ignore_changes vam omogoča, da se izognete takšni situaciji.
Opomba: argument ignore_changes pojavil v Terraformu že dolgo nazaj: poteg #2525.
Prepir ignore_resize_confirmation potrebno za uspešno spreminjanje velikosti lokalnega diska, jeder ali pomnilnika strežnika. Takšne spremembe se izvedejo prek komponente OpenStack Nova z uporabo zahteve spremeniti velikost. Privzeto Nova po zahtevi spremeniti velikost postavi strežnik v stanje verify_resize in čaka na dodatno potrditev uporabnika. Vendar pa je to vedenje mogoče spremeniti, tako da Nova ne čaka na dodatna dejanja uporabnika.
Podani argument omogoča Terraformu, da ne čaka na stanje verify_resize za strežnik in bodite pripravljeni, da bo strežnik po spremembi parametrov v aktivnem stanju. Argument je na voljo v različici 1.10.0 ponudnika OpenStack Terraform: poteg #422.
Ustvarjanje virov
Preden zaženete manifeste, upoštevajte, da sta v našem primeru zagnana dva različna ponudnika in da je ponudnik OpenStack odvisen od virov ponudnika Selectel, saj je brez ustvarjanja uporabnika v projektu nemogoče upravljati objekte, ki mu pripadajo. . Na žalost iz istega razloga ne moremo kar zagnati ukaza uporabi terraform znotraj našega primera. Najprej moramo narediti veljajo za modul projekt_z_uporabnikom potem pa za vse ostalo.
Opomba: Ta težava še ni rešena v Terraformu, razpravi lahko sledite na Githubu na izdaja#2430 и izdaja#4149.
Po zagonu ukaza bo Terraform pokazal, katere vire želi ustvariti, in prosil za potrditev:
Plan: 3 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Ko so projekt, uporabnik in vloga ustvarjeni, lahko začnete ustvarjati preostale vire:
Z ustvarjenim virtualnim strojem lahko delate prek SSH z navedenim IP-jem.
Urejanje virov
Poleg ustvarjanja virov prek Terraforma jih je mogoče tudi spreminjati.
Na primer, povečajmo število jeder in pomnilnika za naš strežnik s spreminjanjem vrednosti parametrov server_vcpus и strežnik_ram_mb v datoteki examples/vpc/server_local_root_disk/main.tf:
V našem primeri repozitorijev Ogledate si lahko tudi manifeste za ustvarjanje virtualnih strojev z omrežnimi pogoni.
Primer ustvarjanja gruče Kubernetes
Preden preidemo na naslednji primer, bomo počistili vire, ki smo jih ustvarili prej. Če želite to narediti v korenu projekta terraform-examples/examples/vpc/server_local_root_disk Zaženimo ukaz za brisanje objektov OpenStack:
V obeh primerih boste morali potrditi izbris vseh predmetov:
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
Ta primer ustvari projekt, uporabnika z vlogo v projektu in dvigne eno gručo Kubernetes. V datoteki vars.tf lahko vidite privzete vrednosti, kot so število vozlišč, njihove značilnosti, različica Kubernetes itd.
Za ustvarjanje virov, podobnih prvemu primeru, bomo najprej začeli inicializirati module in ustvarjati vire modulov projekt_z_uporabnikomin nato ustvari vse ostalo:
Ustvarjanje in upravljanje gruč Kubernetes bomo prenesli preko komponente OpenStack Magnum. Več o tem, kako delati z gručo, lahko izveste v enem od naših prejšnji članki, kot tudi v Baza znanja.
Pri pripravi gruče bodo izdelani diski in virtualni stroji ter nameščene vse potrebne komponente. Priprava traja približno 4 minute, v tem času pa bo Terraform prikazal sporočila, kot so:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Ko je namestitev končana, bo Terraform pokazal, da je gruča pripravljena, in prikazal njen ID:
Za upravljanje ustvarjene gruče Kubernetes prek pripomočka kubectl pridobiti morate datoteko za dostop do gruče. Če želite to narediti, pojdite na projekt, ustvarjen s programom Terraform, na seznamu projektov v vašem računu:
Nato sledite povezavi like xxxxxx.selvpc.ruki se pojavi pod imenom projekta:
Za podatke za prijavo uporabite uporabniško ime in geslo, ki ste ju ustvarili prek Terraform. Če nisi goljufal vars.tf ali main.tf v našem primeru bo imel uporabnik ime tf_uporabnik. Kot geslo morate uporabiti vrednost spremenljivke TF_VAR_uporabniško_geslo, ki je bil določen ob zagonu uporabi terraform prej.
Znotraj projekta morate iti na zavihek Kubernetes:
Tu se nahaja gruča, ustvarjena prek Terraforma. Prenesite datoteko za kubectl lahko na zavihku »Dostop«:
Navodila za namestitev se nahajajo na istem zavihku. kubectl in uporabo prenesenega config.yaml.
Po izstrelitvi kubectl in nastavitev spremenljivke okolja KUBECONFIG lahko uporabite Kubernetes:
Ko se število vozlišč spremeni, bo gruča ostala na voljo. Ko dodate vozlišče prek Terraform, ga lahko uporabljate brez dodatne konfiguracije:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
tf-cluster-rz6nggvs4va7-master-0 Ready,SchedulingDisabled master 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-0 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-1 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-2 Ready <none> 3m v1.12.4
Zaključek
V tem članku smo se seznanili z glavnimi načini dela "Navidezni zasebni oblak" preko Terraform. Veseli bomo, če boste uporabili uradnega ponudnika Selectel Terraform in posredovali povratne informacije.
Vse napake, odkrite pri ponudniku Selectel Terraform, lahko prijavite prek Težave z Githubom.