Wy hawwe in offisjele Terraform-oanbieder lansearre om mei Selectel te wurkjen. Dit produkt lit brûkers boarnebehear folslein ymplementearje fia de Infrastructure-as-code-metodology.
De provider stipet op it stuit tsjinstboarnebehear "Fituele privee wolk" (hjirnei oantsjutten as VPC). Yn 'e takomst binne wy fan plan om boarnebehear ta te foegjen foar oare tsjinsten oanbean troch Selectel.
Lykas jo al witte, is de VPC-tsjinst boud op OpenStack. Troch it feit dat OpenStack lykwols gjin native ark leveret foar it tsjinjen fan 'e iepenbiere wolk, hawwe wy de ûntbrekkende funksjonaliteit ymplementearre yn in set fan ekstra API's dy't it behear fan komplekse gearstalde objekten ferienfâldigje en it wurk handiger meitsje. Guon fan 'e funksjonaliteit beskikber yn OpenStack is net direkt brûkber, mar is beskikber fia ús API.
De oanbieder fan Selectel Terraform omfettet no de mooglikheid om de folgjende VPC-boarnen te behearjen:
projekten en harren kwotas;
brûkers, harren rollen en tokens;
iepenbiere subnets, ynklusyf cross-regionale en VRRP;
software lisinsjes.
De provider brûkt ús iepenbiere Go-bibleteek om te wurkjen mei de VPC API. Sawol de bibleteek as de provider sels binne iepen boarne, har ûntwikkeling wurdt útfierd op Github:
Om oare wolkboarnen te behearjen, lykas firtuele masines, skiven, Kubernetes-klusters, kinne jo de OpenStack Terraform-provider brûke. Offisjele dokumintaasje foar beide providers is beskikber op de folgjende keppelings:
Om te begjinnen, moatte jo Terraform ynstallearje (ynstruksjes en keppelings nei ynstallaasjepakketten kinne fûn wurde op offisjele webside).
Om te operearjen fereasket de provider in Selectel API-kaai, dy't is makke yn account kontrôle panielen.
Manifesten foar wurkjen mei Selectel wurde makke mei Terraform of mei in set fan klearmakke foarbylden dy't beskikber binne yn ús Github-repository: terraform-foarbylden.
It repository mei foarbylden is ferdield yn twa mappen:
modules, mei lytse werbrûkbere modules dy't in set fan parameters as ynfier nimme en in lytse set fan boarnen beheare;
foarbylden, mei foarbylden fan in folsleine set fan inoar ferbûn modules.
Nei it ynstallearjen fan Terraform, it meitsjen fan in Selectel API-kaai en josels fertroud mei de foarbylden, litte wy trochgean nei praktyske foarbylden.
In foarbyld fan it meitsjen fan in tsjinner mei in lokale skiif
Yn triem vars.tf alle parameters dy't brûkt wurde by it oproppen fan modules wurde beskreaun. Guon fan harren hawwe standert wearden, bygelyks, de tsjinner wurdt makke yn de sône ru-3a mei de folgjende konfiguraasje:
As it nedich is, kinne jo in oare iepenbiere kaai opjaan. De kaai hoecht net te wurde opjûn as in triempaad; Jo kinne de wearde ek tafoegje as in tekenrige.
Fierder yn dit bestân wurde de modules lansearre projekt_mei_brûker и server_local_root_disk, dy't de nedige middels beheare.
Litte wy nei dizze modules yn mear detail sjen.
It meitsjen fan in projekt en in brûker mei in rol
Argumint negearje_feroarings kinne jo negearje attribút feroarings id foar de ôfbylding dy't brûkt wurdt om de firtuele masine te meitsjen. Yn 'e VPC-tsjinst wurde de measte iepenbiere ôfbyldings automatysk ien kear yn'e wike bywurke en tagelyk har id ek feroarings. Dit komt troch de eigenaardichheden fan 'e OpenStack-komponint - Glance, wêryn ôfbyldings wurde beskôge as ûnferoarlike entiteiten.
As jo in besteande tsjinner of skiif meitsje of wizigje dy't as argumint hat image_id wurdt brûkt id iepenbiere ôfbylding, dan nei't dizze ôfbylding is bywurke, sil it Terraform-manifest opnij útfiere de tsjinner of skiif opnij oanmeitsje. Mei help fan in argumint negearje_feroarings lit jo sa'n situaasje foarkomme.
Opmerking: argumint negearje_feroarings ferskynde in hiel lang lyn yn Terraform: trek #2525.
Argumint ignore_resize_confirmation nedich om de grutte fan lokale skiif, kearnen of serverûnthâld mei súkses te feroarjen. Sokke wizigingen wurde makke fia de OpenStack Nova-komponint mei in fersyk feroarje. Standert Nova nei fersyk feroarje set de tsjinner yn status ferify_resize en wachtet op ekstra befêstiging fan de brûker. Dit gedrach kin lykwols feroare wurde sadat Nova net wachtet op ekstra aksjes fan de brûker.
It oantsjutte argumint lit Terraform net wachtsje op de status ferify_resize foar de tsjinner en wurde taret op de tsjinner om yn in aktive status te wêzen nei't syn parameters feroare binne. It argumint is beskikber fanút ferzje 1.10.0 fan de OpenStack Terraform-provider: trek #422.
Oanmeitsjen fan Resources
Foardat jo de manifesten útfiere, tink derom dat yn ús foarbyld twa ferskillende oanbieders wurde lansearre, en de OpenStack-provider hinget ôf fan 'e boarnen fan' e Selectel-provider, om't sûnder in brûker yn it projekt te meitsjen, it ûnmooglik is om de objekten dy't derby hearre te behearjen. . Spitigernôch kinne wy om deselde reden net gewoan it kommando útfiere terraform jilde binnen ús foarbyld. Wy moatte earst dwaan tapasse foar module projekt_mei_brûker en dêrnei foar al it oare.
Opmerking: Dit probleem is noch net oplost yn Terraform, jo kinne de diskusje folgje op Github by útjefte #2430 и útjefte #4149.
Nei it útfieren fan it kommando sil Terraform sjen litte hokker boarnen it oanmeitsje wol en freegje om befêstiging:
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
Sadree't it projekt, brûker en rol binne oanmakke, kinne jo begjinne mei it meitsjen fan de oerbleaune boarnen:
Jo kinne wurkje mei de makke firtuele masine fia SSH mei help fan de oantsjutte IP.
Resources bewurkje
Neist it meitsjen fan boarnen fia Terraform, kinne se ek wizige wurde.
Litte wy bygelyks it oantal kearnen en ûnthâld foar ús server ferheegje troch de wearden foar de parameters te feroarjen server_vcpus и server_ram_mb yn triem foarbylden/vpc/server_local_root_disk/main.tf:
Yn ús foarbyld repositories Jo kinne ek manifesten sjen foar it meitsjen fan firtuele masines mei netwurkskiven.
Foarbyld fan it meitsjen fan in Kubernetes-kluster
Foardat wy nei it folgjende foarbyld geane, sille wy de boarnen skjinmeitsje dy't wy earder makke hawwe. Om dit te dwaan yn 'e root fan it projekt terraform-examples/examples/vpc/server_local_root_disk Litte wy it kommando útfiere om OpenStack-objekten te wiskjen:
Yn beide gefallen moatte jo it wiskjen fan alle objekten befêstigje:
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
Dit foarbyld makket in projekt, in brûker mei in rol yn it projekt, en bringt ien Kubernetes-kluster op. Yn triem vars.tf jo kinne standertwearden sjen, lykas it oantal knopen, har skaaimerken, Kubernetes-ferzje, ensfh.
Om boarnen te meitsjen lykas it earste foarbyld, sille wy earst begjinne mei it inisjalisearjen fan modules en it meitsjen fan moduleboarnen projekt_mei_brûkeren meitsje dan al it oare:
Wy sille de skepping en behear fan Kubernetes-klusters oerdrage fia de OpenStack Magnum-komponint. Jo kinne mear útfine oer hoe't jo wurkje mei in kluster yn ien fan ús foarige artikelslykas kennisbasis.
By it tarieden fan it kluster wurde skiven en firtuele masines oanmakke en alle nedige komponinten wurde ynstalleare. Tarieding duorret sawat 4 minuten, yn hokker tiid sil Terraform berjochten werjaan lykas:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
As de ynstallaasje foltôge is, sil Terraform oanjaan dat it kluster klear is en syn ID werjaan:
Om it oanmakke Kubernetes-kluster te behearjen fia it hulpprogramma kubectl jo moatte it kluster tagongsbestân krije. Om dit te dwaan, gean nei it projekt makke fia Terraform yn 'e list mei projekten yn jo akkount:
Folgje dan de keppeling lykas xxxxxx.selvpc.rudy't ûnder de projektnamme ferskynt:
Foar oanmeldynformaasje, brûk de brûkersnamme en wachtwurd dat jo makke hawwe fia Terraform. As jo hawwe net bedrogen vars.tf of main.tf foar ús foarbyld sil de brûker de namme hawwe tf_brûker. Jo moatte de wearde fan 'e fariabele brûke as wachtwurd TF_VAR_user_password, dat waard oantsjutte by it opstarten terraform jilde earder.
Binnen it projekt moatte jo nei de ljepper gean Kubernetes:
Dit is wêr it kluster makke fia Terraform leit. Download triem foar kubectl kinne jo op it ljepblêd "Tagong":
Ynstallaasje ynstruksjes lizze op deselde ljepper. kubectl en gebrûk fan de ynladen config.yaml.
Nei lansearring kubectl en it ynstellen fan de omjouwingsfariabele KUBECONFIG Jo kinne Kubernetes brûke:
As it oantal knooppunten feroaret, sil it kluster beskikber bliuwe. Nei it tafoegjen fan in knooppunt fia Terraform, kinne jo it brûke sûnder ekstra konfiguraasje:
$ 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
konklúzje
Yn dit artikel binne wy yn 'e kunde kommen mei de wichtichste manieren om mei te wurkjen "Fituele privee wolk" fia Terraform. Wy sille bliid wêze as jo de offisjele Terraform-oanbieder Selectel brûke en feedback jouwe.
Alle bugs fûn yn 'e Selectel Terraform-provider kinne wurde rapportearre fia Github problemen.