Tumezindua mtoa huduma rasmi wa Terraform kufanya kazi na Selectel. Bidhaa hii huruhusu watumiaji kutekeleza kikamilifu usimamizi wa rasilimali kupitia mbinu ya Miundombinu kama kanuni.
Mtoa huduma kwa sasa anaunga mkono usimamizi wa rasilimali za huduma "Wingu la kibinafsi la kweli" (hapa itajulikana kama VPC). Katika siku zijazo, tunapanga kuongeza usimamizi wa rasilimali kwa huduma zingine zinazotolewa na Selectel.
Kama unavyojua tayari, huduma ya VPC imejengwa kwenye OpenStack. Hata hivyo, kutokana na ukweli kwamba OpenStack haitoi zana asili za kuhudumia wingu la umma, tulitekeleza utendakazi unaokosekana katika seti ya API za ziada zinazorahisisha usimamizi wa vitu changamano na kufanya kazi iwe rahisi zaidi. Baadhi ya utendaji unaopatikana katika OpenStack umefungwa kutokana na matumizi ya moja kwa moja, lakini unapatikana kupitia API yetu.
Mtoa huduma wa Selectel Terraform sasa anajumuisha uwezo wa kudhibiti rasilimali zifuatazo za VPC:
miradi na upendeleo wao;
watumiaji, majukumu yao na ishara;
subnets za umma, ikiwa ni pamoja na kanda na VRRP;
leseni za programu.
Mtoa huduma hutumia maktaba yetu ya Go ya umma kufanya kazi na API ya VPC. Maktaba na mtoaji mwenyewe ni chanzo-wazi, maendeleo yao yanafanywa kwenye Github:
Ili kudhibiti rasilimali zingine za wingu, kama vile mashine pepe, diski, vikundi vya Kubernetes, unaweza kutumia mtoa huduma wa OpenStack Terraform. Nyaraka rasmi kwa watoa huduma wote wawili zinapatikana katika viungo vifuatavyo:
Ili kuanza, unahitaji kusakinisha Terraform (maelekezo na viungo vya vifurushi vya ufungaji vinaweza kupatikana tovuti rasmi).
Ili kufanya kazi, mtoaji anahitaji kitufe cha Selectel API, ambacho kimeundwa ndani paneli za kudhibiti akaunti.
Maonyesho ya kufanya kazi na Selectel huundwa kwa kutumia Terraform au kwa kutumia seti ya mifano iliyotengenezwa tayari ambayo inapatikana katika hazina yetu ya Github: terraform-mifano.
Hifadhi iliyo na mifano imegawanywa katika saraka mbili:
modules, iliyo na moduli ndogo zinazoweza kutumika tena ambazo huchukua seti ya vigezo kama pembejeo na kudhibiti seti ndogo ya rasilimali;
mifano, iliyo na mifano ya seti kamili ya moduli zilizounganishwa.
Baada ya kufunga Terraform, kuunda ufunguo wa API ya Selectel na kujitambulisha na mifano, hebu tuendelee kwenye mifano ya vitendo.
Katika faili vars.tf vigezo vyote ambavyo vitatumika wakati moduli za kupiga simu zinaelezewa. Baadhi yao wana maadili ya msingi, kwa mfano, seva itaundwa katika ukanda ru-3a na usanidi ufuatao:
hoja kupuuza_mabadiliko hukuruhusu kupuuza mabadiliko ya sifa id kwa picha iliyotumika kuunda mashine pepe. Katika huduma ya VPC, picha nyingi za umma husasishwa kiotomatiki mara moja kwa wiki na wakati huo huo wao id pia mabadiliko. Hii ni kwa sababu ya upekee wa sehemu ya OpenStack - Glance, ambayo picha huchukuliwa kuwa vyombo visivyoweza kubadilika.
Ikiwa unaunda au kurekebisha seva iliyopo au diski ambayo ina hoja kitambulisho_cha_picha hutumiwa id picha ya umma, kisha baada ya picha hiyo kusasishwa, kuendesha faili ya maelezo ya Terraform tena kutaunda upya seva au diski. Kwa kutumia hoja kupuuza_mabadiliko inakuwezesha kuepuka hali hiyo.
Kumbuka: hoja kupuuza_mabadiliko ilionekana katika Terraform muda mrefu uliopita: vuta#2525.
hoja puuza_resize_uthibitisho inahitajika kubadilisha ukubwa wa diski ya ndani, cores, au kumbukumbu ya seva. Mabadiliko kama haya hufanywa kupitia sehemu ya OpenStack Nova kwa kutumia ombi resize. Nova chaguomsingi baada ya ombi resize huweka seva katika hali thibitisha_resize na inasubiri uthibitisho wa ziada kutoka kwa mtumiaji. Walakini, tabia hii inaweza kubadilishwa ili Nova isingojee vitendo vya ziada kutoka kwa mtumiaji.
Hoja iliyobainishwa inaruhusu Terraform kutosubiri hali thibitisha_resize kwa seva na uwe tayari kwa seva kuwa katika hali amilifu baada ya kubadilisha vigezo vyake. Hoja inapatikana kutoka toleo la 1.10.0 la mtoaji wa OpenStack Terraform: vuta#422.
Kutengeneza Rasilimali
Kabla ya kuendesha maonyesho, tafadhali kumbuka kuwa katika mfano wetu, watoa huduma wawili tofauti huzinduliwa, na mtoaji wa OpenStack hutegemea rasilimali za mtoaji wa Selectel, kwani bila kuunda mtumiaji katika mradi huo, haiwezekani kusimamia vitu vyake. . Kwa bahati mbaya, kwa sababu hiyo hiyo hatuwezi tu kuendesha amri terraform inatumika ndani ya mfano wetu. Tunahitaji kufanya kwanza tumia kwa moduli mradi_na_mtumiaji na baada ya hayo kwa kila kitu kingine.
Kumbuka: Suala hili bado halijatatuliwa katika Terraform, unaweza kufuata mjadala kwenye Github saa toleo #2430 ΠΈ toleo #4149.
Baada ya kutekeleza amri, Terraform itaonyesha ni rasilimali gani inataka kuunda na kuuliza uthibitisho:
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
Mara mradi, mtumiaji na jukumu vimeundwa, unaweza kuanza kuunda rasilimali zilizobaki:
Unaweza kufanya kazi na mashine iliyoundwa iliyoundwa kupitia SSH kwa kutumia IP maalum.
Rasilimali za Kuhariri
Mbali na kuunda rasilimali kupitia Terraform, zinaweza pia kubadilishwa.
Kwa mfano, wacha tuongeze idadi ya alama na kumbukumbu kwa seva yetu kwa kubadilisha maadili ya vigezo. seva_vcpus ΠΈ seva_ram_mb katika faili mifano/vpc/server_local_root_disk/main.tf:
Katika yetu mfano hazina Unaweza pia kuona maonyesho ya kuunda mashine pepe zilizo na viendeshi vya mtandao.
Mfano wa kuunda nguzo ya Kubernetes
Kabla ya kuendelea na mfano unaofuata, tutasafisha rasilimali tulizounda awali. Ili kufanya hivyo katika mzizi wa mradi terraform-examples/examples/vpc/server_local_root_disk Wacha tuendeshe amri ya kufuta vitu vya OpenStack:
Katika visa vyote viwili, utahitaji kudhibiti ufutaji wa vitu vyote:
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
Mfano huu huunda mradi, mtumiaji aliye na jukumu katika mradi, na huinua nguzo moja ya Kubernetes. Katika faili vars.tf unaweza kuona maadili chaguo-msingi, kama vile idadi ya nodi, sifa zao, toleo la Kubernetes, n.k.
Ili kuunda rasilimali sawa na mfano wa kwanza, kwanza kabisa tutaanza kuanzisha moduli na kuunda rasilimali za moduli mradi_na_mtumiajina kisha kuunda kila kitu kingine:
Tutahamisha uundaji na usimamizi wa vikundi vya Kubernetes kupitia kipengee cha OpenStack Magnum. Unaweza kujua zaidi juu ya jinsi ya kufanya kazi na nguzo katika moja ya yetu makala zilizopitavile vile msingi wa maarifa.
Wakati wa kuandaa nguzo, disks na mashine za virtual zitaundwa na vipengele vyote muhimu vitawekwa. Maandalizi huchukua kama dakika 4, wakati ambapo Terraform itaonyesha ujumbe kama vile:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Mara tu usakinishaji utakapokamilika, Terraform itaonyesha kuwa nguzo iko tayari na itaonyesha kitambulisho chake:
Kudhibiti nguzo iliyoundwa ya Kubernetes kupitia matumizi kubectl unahitaji kupata faili ya ufikiaji wa nguzo. Ili kufanya hivyo, nenda kwa mradi iliyoundwa kupitia Terraform katika orodha ya miradi katika akaunti yako:
Ifuatayo, fuata kiungo kama xxxxx.selvpc.ruambayo inaonekana chini ya jina la mradi:
Kwa habari ya kuingia, tumia jina la mtumiaji na nenosiri ulilounda kupitia Terraform. Ikiwa haujadanganya vars.tf au kuu.tf kwa mfano wetu, mtumiaji atakuwa na jina tf_mtumiaji. Lazima utumie thamani ya kutofautisha kama nenosiri Nenosiri_la_mtumiaji TF_VAR, ambayo ilibainishwa wakati wa kuanza terraform inatumika mapema.
Ndani ya mradi unahitaji kwenda kwenye kichupo Mabernet:
Hapa ndipo nguzo iliyoundwa kupitia Terraform iko. Pakua faili ya kubectl unaweza kwenye kichupo cha "Ufikiaji":
Maagizo ya ufungaji iko kwenye kichupo sawa. kubectl na matumizi ya iliyopakuliwa config.yaml.
Baada ya uzinduzi kubectl na kuweka mabadiliko ya mazingira KUBECONFIG unaweza kutumia Kubernetes:
Wakati idadi ya nodi inabadilika, nguzo itabaki inapatikana. Baada ya kuongeza nodi kupitia Terraform, unaweza kuitumia bila usanidi wa ziada:
$ 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
Hitimisho
Katika makala hii tulifahamiana na njia kuu za kufanya kazi nazo "Wingu la kibinafsi la kweli" kupitia Terraform. Tutafurahi ikiwa unatumia mtoa huduma rasmi wa Selectel Terraform na kutoa maoni.
Hitilafu zozote zinazopatikana katika mtoaji wa Selectel Terraform zinaweza kuripotiwa kupitia Masuala ya Github.