Rydym wedi lansio darparwr Terraform swyddogol i weithio gyda Selectel. Mae'r cynnyrch hwn yn galluogi defnyddwyr i weithredu rheolaeth adnoddau yn llawn trwy'r fethodoleg Seilwaith-fel-cod.
Mae'r darparwr yn cefnogi rheoli adnoddau gwasanaeth ar hyn o bryd "Cwmwl preifat rhithwir" (cyfeirir ato o hyn ymlaen fel VPC). Yn y dyfodol, rydym yn bwriadu ychwanegu rheolaeth adnoddau ar gyfer gwasanaethau eraill a ddarperir gan Selectel.
Fel y gwyddoch eisoes, mae'r gwasanaeth VPC wedi'i adeiladu ar OpenStack. Fodd bynnag, oherwydd y ffaith nad yw OpenStack yn darparu offer brodorol ar gyfer gwasanaethu'r cwmwl cyhoeddus, fe wnaethom weithredu'r swyddogaeth goll mewn set o APIs ychwanegol sy'n symleiddio rheolaeth gwrthrychau cyfansawdd cymhleth ac yn gwneud y gwaith yn fwy cyfleus. Ni ellir defnyddio rhai o'r swyddogaethau sydd ar gael yn OpenStack yn uniongyrchol, ond mae ar gael drwyddo ein API.
Mae darparwr Selectel Terraform bellach yn cynnwys y gallu i reoli'r adnoddau VPC canlynol:
prosiectau a'u cwotâu;
defnyddwyr, eu rolau a'u tocynnau;
is-rwydweithiau cyhoeddus, gan gynnwys traws-ranbarthol a VRRP;
trwyddedau meddalwedd.
Mae'r darparwr yn defnyddio ein llyfrgell Go gyhoeddus i weithio gyda'r API VPC. Mae’r llyfrgell a’r darparwr ei hun yn ffynhonnell agored, a gwneir eu datblygiad ar Github:
I reoli adnoddau cwmwl eraill, megis peiriannau rhithwir, disgiau, clystyrau Kubernetes, gallwch ddefnyddio'r darparwr OpenStack Terraform. Mae dogfennaeth swyddogol ar gyfer y ddau ddarparwr ar gael trwy'r dolenni canlynol:
I ddechrau, mae angen i chi osod Terraform (gellir dod o hyd i gyfarwyddiadau a dolenni i becynnau gosod yn gwefan swyddogol).
I weithredu, mae angen allwedd API Selectel ar y darparwr, sy'n cael ei greu yn paneli rheoli cyfrif.
Mae maniffestau ar gyfer gweithio gyda Selectel yn cael eu creu gan ddefnyddio Terraform neu gan ddefnyddio set o enghreifftiau parod sydd ar gael yn ein cadwrfa Github: terraform-enghreifftiau.
Mae'r ystorfa gydag enghreifftiau wedi'i rhannu'n ddau gyfeiriadur:
modiwlau, sy'n cynnwys modiwlau bach y gellir eu hailddefnyddio sy'n cymryd set o baramedrau fel mewnbwn ac yn rheoli set fach o adnoddau;
enghreifftiau, yn cynnwys enghreifftiau o set gyflawn o fodiwlau cydgysylltiedig.
Ar ôl gosod Terraform, creu allwedd API Selectel ac ymgyfarwyddo â'r enghreifftiau, gadewch i ni symud ymlaen i enghreifftiau ymarferol.
Mewn ffeil vars.tf disgrifir yr holl baramedrau a ddefnyddir wrth alw modiwlau. Mae gan rai ohonynt werthoedd rhagosodedig, er enghraifft, bydd y gweinydd yn cael ei greu yn y parth ru- 3a gyda'r ffurfweddiad canlynol:
ddadl anwybyddu_newidiadau yn eich galluogi i anwybyddu newidiadau priodoledd id ar gyfer y ddelwedd a ddefnyddiwyd i greu'r peiriant rhithwir. Yn y gwasanaeth VPC, mae'r rhan fwyaf o ddelweddau cyhoeddus yn cael eu diweddaru'n awtomatig unwaith yr wythnos ac ar yr un pryd eu id hefyd newidiadau. Mae hyn oherwydd hynodion y gydran OpenStack - Cipolwg, lle mae delweddau'n cael eu hystyried yn endidau na ellir eu cyfnewid.
Os ydych chi'n creu neu'n addasu gweinydd neu ddisg sy'n bodoli eisoes, mae hynny'n ddadl delwedd_id yn cael ei ddefnyddio id delwedd gyhoeddus, yna ar ôl i'r ddelwedd honno gael ei diweddaru, bydd rhedeg maniffest Terraform eto yn ail-greu'r gweinydd neu'r ddisg. Defnyddio dadl anwybyddu_newidiadau yn eich galluogi i osgoi sefyllfa o'r fath.
Nodyn: dadl anwybyddu_newidiadau ymddangosodd yn Terraform amser maith yn ôl: tynnu#2525.
ddadl anwybyddwch_newid maint_cadarnhad sydd ei angen i newid maint disg lleol, creiddiau, neu gof gweinydd yn llwyddiannus. Gwneir newidiadau o'r fath trwy gydran OpenStack Nova gan ddefnyddio cais newid maint. Nova rhagosodedig ar ôl cais newid maint yn rhoi'r gweinydd mewn statws gwirio_newid maint ac yn aros am gadarnhad ychwanegol gan y defnyddiwr. Fodd bynnag, gellir newid yr ymddygiad hwn fel nad yw Nova yn aros am gamau gweithredu ychwanegol gan y defnyddiwr.
Mae'r ddadl benodedig yn caniatáu i Terraform beidio ag aros am y statws gwirio_newid maint i'r gweinydd a byddwch yn barod i'r gweinydd fod mewn statws gweithredol ar ôl newid ei baramedrau. Mae'r ddadl ar gael o fersiwn 1.10.0 o'r darparwr OpenStack Terraform: tynnu#422.
Creu Adnoddau
Cyn rhedeg y maniffestau, nodwch, yn ein hesiampl, bod dau ddarparwr gwahanol yn cael eu lansio, ac mae'r darparwr OpenStack yn dibynnu ar adnoddau'r darparwr Selectel, oherwydd heb greu defnyddiwr yn y prosiect, mae'n amhosibl rheoli'r gwrthrychau sy'n perthyn iddo . Yn anffodus, am yr un rheswm ni allwn redeg y gorchymyn yn unig terraform yn berthnasol tu mewn i'n hesiampl. Mae angen i ni wneud yn gyntaf cymhwyso ar gyfer modiwl prosiect_gyda_defnyddiwr ac wedi hyny am bob peth arall.
Nodyn: Nid yw'r mater hwn wedi'i ddatrys eto yn Terraform, gallwch ddilyn y drafodaeth ar Github yn rhifyn#2430 и rhifyn#4149.
Rydym yn cychwyn y modiwlau gan ddefnyddio'r gorchymyn:
$ terraform init
Mae'r allbwn yn dangos bod Terraform yn lawrlwytho'r fersiynau diweddaraf o'r darparwyr y mae'n eu defnyddio ac yn gwirio'r holl fodiwlau a ddisgrifir yn yr enghraifft.
Yn gyntaf, gadewch i ni gymhwyso'r modiwl prosiect_gyda_defnyddiwr. Mae hyn yn gofyn am basio gwerthoedd â llaw ar gyfer newidynnau nad ydynt wedi'u gosod:
sel_cyfrif gyda'ch rhif cyfrif Selectel;
sel_tocyn gyda'ch allwedd ar gyfer Selectel API;
defnyddiwr_cyfrinair gyda chyfrinair ar gyfer y defnyddiwr OpenStack.
Rhaid cymryd y gwerthoedd ar gyfer y ddau newidyn cyntaf o paneli rheoli.
Ar gyfer y newidyn olaf, gallwch chi ddod o hyd i unrhyw gyfrinair.
I ddefnyddio'r modiwl mae angen i chi ddisodli'r gwerthoedd SEL_ACCOUNT, SEL_TOKEN и USER_PASSWORD rhedeg y gorchymyn:
Ar ôl rhedeg y gorchymyn, bydd Terraform yn dangos pa adnoddau y mae am eu creu ac yn gofyn am gadarnhad:
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
Unwaith y bydd y prosiect, defnyddiwr a rôl wedi'u creu, gallwch ddechrau creu'r adnoddau sy'n weddill:
Gallwch weithio gyda'r peiriant rhithwir a grëwyd trwy SSH gan ddefnyddio'r IP penodedig.
Adnoddau Golygu
Yn ogystal â chreu adnoddau trwy Terraform, gellir eu haddasu hefyd.
Er enghraifft, gadewch i ni gynyddu nifer y creiddiau a chof ar gyfer ein gweinydd trwy newid y gwerthoedd ar gyfer y paramedrau gweinydd_vcpus и gweinydd_ram_mb mewn ffeil enghreifftiau/vpc/server_local_root_disk/main.tf:
Ar ôl hyn, rydym yn gwirio pa newidiadau y bydd hyn yn arwain at ddefnyddio'r gorchymyn canlynol:
$ env
TF_VAR_sel_account=SEL_ACCOUNT
TF_VAR_sel_token=SEL_TOKEN
TF_VAR_user_password=USER_PASSWORD
terraform plan
O ganlyniad, gwnaeth Terraform newid adnoddau openstack_compute_instance_v2 и Openstack_compute_blas_v2.
Sylwch y bydd hyn yn golygu ailgychwyn y peiriant rhithwir a grëwyd.
I gymhwyso'r cyfluniad peiriant rhithwir newydd, defnyddiwch y gorchymyn terraform yn berthnasol, yr ydym eisoes wedi’i lansio’n gynharach.
Bydd yr holl wrthrychau a grëwyd yn cael eu harddangos yn Paneli rheoli VPC:
Yn ein storfeydd enghreifftiol Gallwch hefyd weld maniffestau ar gyfer creu peiriannau rhithwir gyda gyriannau rhwydwaith.
Enghraifft o greu clwstwr Kubernetes
Cyn i ni symud ymlaen at yr enghraifft nesaf, byddwn yn glanhau'r adnoddau a grëwyd gennym yn gynharach. I wneud hyn yng ngwraidd y prosiect terraform-examples/examples/vpc/server_local_root_disk Gadewch i ni redeg y gorchymyn i ddileu gwrthrychau OpenStack:
Yn y ddau achos, bydd angen i chi gadarnhau dileu'r holl wrthrychau:
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
Mae'r enghraifft hon yn creu prosiect, defnyddiwr sydd â rôl yn y prosiect, ac yn codi un clwstwr Kubernetes. Mewn ffeil vars.tf gallwch weld gwerthoedd diofyn, megis nifer y nodau, eu nodweddion, fersiwn Kubernetes, ac ati.
Er mwyn creu adnoddau tebyg i'r enghraifft gyntaf, yn gyntaf oll byddwn yn dechrau cychwyn modiwlau a chreu adnoddau modiwl prosiect_gyda_defnyddiwrac yna creu popeth arall:
Byddwn yn trosglwyddo creu a rheoli clystyrau Kubernetes trwy gydran OpenStack Magnum. Gallwch ddarganfod mwy am sut i weithio gyda chlwstwr yn un o'n erthyglau blaenorolyn ogystal â sylfaen wybodaeth.
Wrth baratoi'r clwstwr, bydd disgiau a pheiriannau rhithwir yn cael eu creu a bydd yr holl gydrannau angenrheidiol yn cael eu gosod. Mae paratoi yn cymryd tua 4 munud, ac yn ystod yr amser hwn bydd Terraform yn arddangos negeseuon fel:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Unwaith y bydd y gosodiad wedi'i gwblhau, bydd Terraform yn nodi bod y clwstwr yn barod ac yn arddangos ei ID:
Rheoli'r clwstwr Kubernetes a grëwyd trwy'r cyfleustodau ciwctl mae angen i chi gael y ffeil mynediad clwstwr. I wneud hyn, ewch i'r prosiect a grëwyd trwy Terraform yn y rhestr o brosiectau yn eich cyfrif:
Nesaf, dilynwch y ddolen fel xxxxx.selvpc.rusy'n ymddangos o dan enw'r prosiect:
I gael gwybodaeth mewngofnodi, defnyddiwch yr enw defnyddiwr a'r cyfrinair a greoch trwy Terraform. Os nad ydych wedi twyllo vars.tf neu prif.tf er enghraifft, bydd gan y defnyddiwr yr enw tf_defnyddiwr. Rhaid i chi ddefnyddio gwerth y newidyn fel y cyfrinair TF_VAR_user_password, a nodwyd wrth gychwyn terraform yn berthnasol yn gynharach.
Y tu mewn i'r prosiect mae angen i chi fynd i'r tab Kubernetes:
Dyma lle mae'r clwstwr a grëwyd trwy Terraform wedi'i leoli. Lawrlwythwch ffeil ar gyfer ciwctl gallwch chi ar y tab “Mynediad”:
Mae cyfarwyddiadau gosod wedi'u lleoli ar yr un tab. ciwctl a defnydd o'r llwytho i lawr config.yaml.
Ar ôl lansio ciwctl a gosod y newidyn amgylchedd KUBECONFIG gallwch ddefnyddio Kubernetes:
Pan fydd nifer y nodau'n newid, bydd y clwstwr yn parhau i fod ar gael. Ar ôl ychwanegu nod trwy Terraform, gallwch ei ddefnyddio heb gyfluniad ychwanegol:
$ 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
Casgliad
Yn yr erthygl hon daethom yn gyfarwydd â'r prif ffyrdd o weithio gyda nhw "Cwmwl preifat rhithwir" trwy Terraform. Byddwn yn falch os ydych chi'n defnyddio darparwr swyddogol Selectel Terraform ac yn darparu adborth.
Gellir adrodd am unrhyw fygiau a geir yn y darparwr Selectel Terraform trwy Materion Github.