I-Terraformer-Iinfrastructure to Code

I-Terraformer-Iinfrastructure to Code
Ndingathanda ukukuxelela ngesixhobo esitsha se-CLI endisibhalele ukusombulula ingxaki endala.

Ingxaki

I-Terraform ide ibe ngumgangatho kwi-Devops / Cloud / IT yoluntu. Into ilunge kakhulu kwaye iluncedo ekujonganeni neziseko zophuhliso njengekhowudi. Zininzi izinto eziyoliswayo kwiTerraform kunye neefolokhwe ezininzi, iimela ezibukhali kunye neharika.
NgeTerraform kulula kakhulu ukwenza izinto ezintsha kwaye emva koko ulawule, uzitshintshe okanye uzicime. Kufuneka benze ntoni abo banesiseko esikhulu efini kwaye abangadalwanga ngeTerraform? Ukubhala kwakhona kunye nokudala kwakhona ilifu lonke ngandlela thile kuyabiza kwaye akukhuselekanga.
Ndidibene nale ngxaki kwimisebenzi emi-2, owona mzekelo ulula xa ufuna yonke into ibe kwi-Git ngendlela yeefayile zeterraform, kodwa uneebhakethi ezingama-250+ kwaye kuninzi ukuzibhala kwi-terraform ngesandla.
kukho khupha ukusukela ngo 2014 eterrafom eyavalwa ngo 2016 ngethemba loba kuzakubakho i import.

Ngokubanzi, yonke into ifana nomfanekiso ukusuka ekunene ukuya ekhohlo

Izilumkiso: Umbhali akahlali eRashiya isiqingatha sobomi bakhe kwaye ubhala kancinci ngesiRashiya. Zilumkele iimpazamo zopelo.

Izisombululo

1. Kukho izisombululo esele zenziwe kunye nezindala ze-AWS iterraforming. Xa ndandizama ukufumana iibhakethi zam ze-250+, ndaqonda ukuba yonke into yayimbi apho. I-AWS kudala izisa uninzi lweenketho ezintsha, kodwa i-terraforming ayiyazi malunga nabo kwaye ngokubanzi iruby. ithempleyithi ibonakala incinci. Emva ko 2 ngokuhlwa ndathumela Isicelo sokutsala ukongeza iimpawu ezininzi apho kwaye waqaphela ukuba isisombululo esinjalo asifanelekanga konke konke.
Indlela i-terraforming isebenza ngayo: ithatha idatha kwi-AWS SDK kwaye ivelise i-tf kunye ne-tfstate ngokusebenzisa itemplate.
Kukho iingxaki ezi-3 apha:
1. Kuya kuhlala kukho i-lag kuhlaziyo
2. iifayile zetf ngamanye amaxesha ziphuma zaphukile
3. I-tfstate iqokelelwa ngokwahlukileyo kwi-tf kwaye ayisoloko idibana
Ngokubanzi, kunzima ukufumana isiphumo apho `isicwangciso seterraform` sithi akukho zinguqu

2. `ukungeniswa kweterraform` ngumyalelo owakhelwe ngaphakathi kwiterraform. Ingaba isebenza kanjani?
Ubhala ifayile yeTF engenanto enegama kunye nodidi lovimba, emva koko usebenzise `ukungenisa kweterraform` kwaye ugqithise i-ID yesixhobo. abafowunelwa beterraform umboneleli, ufumana idatha kwaye enze ifayile ye-tfstate.
Kukho iingxaki ezi-3 apha:
1. Sifumana kuphela ifayile ye-tfstate, kwaye i-tf ayinanto, kufuneka uyibhale ngesandla okanye uyiguqule kwi-tfstate.
2. Inokusebenza kuphela ngomthombo omnye ngexesha kwaye ayizixhasi zonke izibonelelo. Kwaye kufuneka ndenze ntoni kwakhona ngeebhakethi ezingama-250+?
3. Kuya kufuneka uyazi i-ID yezixhobo - oko kukuthi, kufuneka uyisonge ngekhowudi efumana uluhlu lwezibonelelo.
Ngokubanzi, isiphumo siyinxalenye kwaye asilinganisi kakuhle

Isigqibo sam

Izinto ezifunekayo:
1. Ukukwazi ukwenza iifayile zetf kunye ne-tfstate kwizibonelelo. Umzekelo, khuphela zonke iibhakethi/iqela lokhuseleko/isilinganisi somthwalo kunye neso `sicwangciso seterraform` sibuyise ukuba akukho lutshintsho.
2. Ufuna 2 GCP + AWS amafu
3. Isisombululo sehlabathi esilula ukuhlaziya rhoqo kwaye asichithi ixesha kwisixhobo ngasinye kwiintsuku ze-3 zomsebenzi
4. Yenze ibe ngumthombo ovulekileyo - wonke umntu unengxaki efanayo

Ulwimi lwe-Go kutheni ndiluthanda, kwaye lunethala leencwadi lokudala iifayile ze-HCL ezisetyenziswa kwi-terraform + ikhowudi eninzi kwi-terraform enokuba luncedo.

Indlela

Umzamo wokuqala
Ndaqala ngenguqulelo elula. Ukuqhagamshelana nelifu nge-SDK yomthombo ofunekayo kwaye uyiguqule ibe yimimandla yeterraform. Inzame yafa ngokukhawuleza kwiqela lokhuseleko ngenxa yokuba andizange ndithande iintsuku ze-1.5 zokuguqula kuphela iqela lokhuseleko (kwaye kukho izibonelelo ezininzi). Kuthatha ixesha elide kwaye ke amasimi anokutshintshwa/ongezwe

Umzamo wesibini
Ngokusekelwe kwingcamango echazwe apha. Thatha nje kwaye uguqule i-tfstate kwi-tf. Yonke idatha ikhona kwaye amasimi ayafana. Ungayifumana njani i-tfstate epheleleyo yezibonelelo ezininzi ?? Apha kulapho umyalelo othi `ukuhlaziya iterraform` uze kuhlangula. I-terraform ithatha zonke izibonelelo kwi-tfstate kwaye, nge-ID, ikhupha idatha kubo kwaye ibhale yonke into kwi-tfstate. Oko kukuthi, yenza i-tfstate engenanto enamagama kuphela kunye ne-IDs, sebenzisa `ukuhlaziywa kweterraform` kwaye emva koko sifumane i-tfstates epheleleyo. Uxolo!
Ngoku masenze iphonografi ephindaphindiweyo yokubhala isiguquli se-tfstate ukuya kwi-tf. Kwabo bangazange bafunde i-tfstate, yi-JSON, kodwa ikhethekileyo.
Nantsi inxenye yayo ebalulekileyo yeempawu

 "attributes": {
                            "id": "default/backend-logging-load-deployment",
                            "metadata.#": "1",
                            "metadata.0.annotations.%": "0",
                            "metadata.0.generate_name": "",
                            "metadata.0.generation": "24",
                            "metadata.0.labels.%": "1",
                            "metadata.0.labels.app": "backend-logging",
                            "metadata.0.name": "backend-logging-load-deployment",
                            "metadata.0.namespace": "default",
                            "metadata.0.resource_version": "109317427",
                            "metadata.0.self_link": "/apis/apps/v1/namespaces/default/deployments/backend-logging-load-deployment",
                            "metadata.0.uid": "300ecda1-4138-11e9-9d5d-42010a8400b5",
                            "spec.#": "1",
                            "spec.0.min_ready_seconds": "0",
                            "spec.0.paused": "false",
                            "spec.0.progress_deadline_seconds": "600",
                            "spec.0.replicas": "1",
                            "spec.0.revision_history_limit": "10",
                            "spec.0.selector.#": "1",

Nantsi lapho:
1. id - umtya
2. imetadata - uluhlu lwesayizi 1 kwaye kuyo into enemihlaba echazwe ngezantsi
3. i-spec - i-hash yobukhulu be-1 kunye nesitshixo, ixabiso kuyo
Ngamafutshane, ifomathi eyonwabisayo, yonke into inokuba ngamanqanaba amaninzi anzulu

                   "spec.#": "1",
                            "spec.0.min_ready_seconds": "0",
                            "spec.0.paused": "false",
                            "spec.0.progress_deadline_seconds": "600",
                            "spec.0.replicas": "1",
                            "spec.0.revision_history_limit": "10",
                            "spec.0.selector.#": "1",
                            "spec.0.selector.0.match_expressions.#": "0",
                            "spec.0.selector.0.match_labels.%": "1",
                            "spec.0.selector.0.match_labels.app": "backend-logging-load",
                            "spec.0.strategy.#": "0",
                            "spec.0.template.#": "1",
                            "spec.0.template.0.metadata.#": "1",
                            "spec.0.template.0.metadata.0.annotations.%": "0",
                            "spec.0.template.0.metadata.0.generate_name": "",
                            "spec.0.template.0.metadata.0.generation": "0",
                            "spec.0.template.0.metadata.0.labels.%": "1",
                            "spec.0.template.0.metadata.0.labels.app": "backend-logging-load",
                            "spec.0.template.0.metadata.0.name": "",
                            "spec.0.template.0.metadata.0.namespace": "",
                            "spec.0.template.0.metadata.0.resource_version": "",
                            "spec.0.template.0.metadata.0.self_link": "",
                            "spec.0.template.0.metadata.0.uid": "",
                            "spec.0.template.0.spec.#": "1",
                            "spec.0.template.0.spec.0.active_deadline_seconds": "0",
                            "spec.0.template.0.spec.0.container.#": "1",
                            "spec.0.template.0.spec.0.container.0.args.#": "3",

Ngokubanzi, ukuba nabani na ufuna ingxaki yeprogram yodliwano-ndlebe, vele umcele ukuba abhale isicazululi salo msebenzi :)
Emva kweenzame ezininzi zokubhala i-parser ngaphandle kweebhugs, ndifumene inxalenye yayo kwikhowudi ye-terraform, kunye neyona nxalenye ibalulekileyo. Kwaye yonke into yayibonakala isebenza kakuhle

Umzamo wesithathu
ababoneleli beterraform bangamabhinari aqulathe ikhowudi nazo zonke izibonelelo kunye nengqiqo yokusebenza ngelifu API. Ilifu ngalinye linomboneleli walo kwaye i-terraform ngokwayo ibabiza kuphela ngeprotocol yayo ye-RPC phakathi kweenkqubo ezimbini.
Ngoku ndigqibe kwelokuba ndiqhagamshelane nababoneleli beterraform ngokuthe ngqo ngeefowuni zeRPC. Kuvele kakuhle kwaye kwenza ukuba kube lula ukutshintsha ababoneleli beterraform kwintsha kwaye ufumane izinto ezintsha ngaphandle kokutshintsha ikhowudi. Kukwavela ukuba ayingawo onke amasimi e-tfstate afanele ukuba kwi-tf, kodwa ungafumanisa njani? Buza nje umboneleli wakho malunga noku. Emva koko enye iphonografi ephindaphindiweyo yokuhlanganisa intetho eqhelekileyo yaqala, ifuna amasimi ngaphakathi kwe-tfstate kuwo onke amanqanaba ngobunzulu.

Ekugqibeleni, sifumene isixhobo esiluncedo se-CLI esinesiseko esisisiseko kubo bonke ababoneleli beterraform kwaye unokongeza ngokulula entsha. Kwakhona, ukongeza izixhobo kuthatha ikhowudi encinci. Kunye nazo zonke iintlobo zezinto ezilungileyo ezinjengonxibelelwano phakathi kwezibonelelo. Kakade ke, kwakukho iingxaki ezininzi ezahlukahlukeneyo ezingenakuchazwa zonke.
Isilwanyana eso ndasibiza ngokuba yiTerrafomer.

Gqibela

Ukusebenzisa iTerrafomer, senze imigca engamawaka angama-500-700 yekhowudi ye-tf + tfstate ukusuka kumafu amabini. Siye sakwazi ukuthatha izinto zelifa kwaye siqale ukuzichukumisa kuphela nge-terraform, njengakwiziseko ezingcono kakhulu njengemibono yekhowudi. Kungumlingo nje xa uthatha ilifu elikhulu kwaye ulifumane ngeqela ngendlela yeefayile zabasebenzi beterraform. Kwaye ke grep/replace/git njalo njalo.

Ndayikama ndayibeka ngolungelelwano, ndafumana imvume. Ikhutshwe kwi-GitHub kumntu wonke ngoLwesine (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
Sele ifumene iinkwenkwezi ezingama-600, izicelo ezi-2 zokutsala ukongeza inkxaso ye-openstack kunye ne-kubernetes. Ingxelo entle. Ngokubanzi, iprojekthi iluncedo kubantu
Ndicebisa wonke umntu ofuna ukuqala ukusebenza ngeTerraform kwaye angaphindi abhale yonke into yale nto.
Ndiya kuvuya ukutsala izicelo, imiba, iinkwenkwezi.

Isiboniso
I-Terraformer-Iinfrastructure to Code

umthombo: www.habr.com

Yongeza izimvo