I-Terraformer - Ingqalasizinda Ukuze Ikhodi

I-Terraformer - Ingqalasizinda Ukuze Ikhodi
Ngithanda ukukutshela ngethuluzi elisha le-CLI engilibhale ukuxazulula inkinga endala.

Inkinga

I-Terraform kade yaba indinganiso emphakathini we-Devops/Cloud/IT. Into ilula kakhulu futhi ilusizo ekubhekaneni nengqalasizinda njengekhodi. Ziningi izinto ezithokozisayo ngeTerraform kanye nezimfoloko eziningi, imimese ebukhali namaraki.
Nge-Terraform kulula kakhulu ukudala izinto ezintsha bese uzilawula, uziguqule noma uzisuse. Yini okufanele yenziwe yilabo abanengqalasizinda enkulu efwini futhi engadalwanga ngeTerraform? Ukubhala kabusha nokudala kabusha lonke ifu ngandlela thize kuyabiza futhi akuphephile.
Ngihlangabezane nale nkinga emisebenzini emi-2, isibonelo esilula lapho ufuna yonke into ibe ku-Git ngendlela yamafayela e-terraform, kodwa unamabhakede angu-250+ futhi kuningi ukuwabhala nge-terraform ngesandla.
Zikhona Ukukhishwa kusukela ngo-2014 eterrafom yavalwa ngo-2016 ngethemba lokuthi kuzoba khona ukungeniswa.

Ngokuvamile, konke kufana nesithombe kusuka kwesokudla kuya kwesokunxele

Izixwayiso: Umbhali akahlali eRussia ingxenye yempilo yakhe futhi ubhala okuncane ngesiRashiya. Qaphela amaphutha esipelingi.

Izixazululo

1. Kunezixazululo esezenziwe ngomumo nezindala ze-AWS i-terraforming. Lapho ngizama ukudlula amabhakede ami angu-250+, ngabona ukuthi yonke into yayimbi lapho. I-AWS sekuyisikhathi eside yethula izinketho eziningi ezintsha, kodwa i-terraforming ayazi ngayo futhi ngokuvamile i-ruby. isifanekiso sibukeka siyingcosana. Ngemva ko-2 ebusuku ngathumela Faka isicelo ukwengeza izici ezengeziwe lapho futhi wabona ukuthi isisombululo esinjalo asifanele nhlobo.
Indlela i-terraforming esebenza ngayo: ithatha idatha ku-AWS SDK futhi ikhiqize i-tf ne-tfstate ngesifanekiso.
Kunezinkinga ezi-3 lapha:
1. Kuyohlala kukhona ukubambezeleka kwezibuyekezo
2. amafayela we-tf kwesinye isikhathi aphuma ephukile
3. I-tfstate iqoqwa ngokwehlukana ne-tf futhi ayihlangani ngaso sonke isikhathi
Ngokuvamile, kunzima ukuthola umphumela lapho `uhlelo lwe-terraform` luthi azikho izinguquko

2. `Ukungenisa kwe-terraform` kuwumyalo owakhelwe ngaphakathi nge-terraform. Isebenza kanjani?
Ubhala ifayela le-TF elingenalutho elinegama kanye nohlobo lwesisetshenziswa, bese uqhuba `ukungenisa kwe-terraform` bese udlulisa i-ID yesisetshenziswa. i-terraform ixhumana nomhlinzeki, ithola idatha futhi yenza ifayela le-tfstate.
Kunezinkinga ezi-3 lapha:
1. Sithola kuphela ifayela le-tfstate, futhi i-tf ayinalutho, udinga ukuyibhala ngesandla noma ukuyiguqula isuka ku-tfstate
2. Ingasebenza kuphela ngesisetshenziswa esisodwa ngesikhathi futhi ayisekeli zonke izinsiza. Futhi yini okufanele ngiyenze futhi ngamabhakede angu-250+?
3. Udinga ukwazi i-ID yezinsiza - okungukuthi, udinga ukuyisonga ngekhodi ethola uhlu lwezinsiza
Ngokuvamile, umphumela uyingxenye futhi awulingani kahle

Isinqumo sami

Izidingo:
1. Ikhono lokudala amafayela we-tf ne-tfstate wezinsiza. Isibonelo, landa wonke amabhakede/iqembu lokuvikela/isilinganisi somthwalo kanye nalolo `hlelo lwe-terraform` lubuyisele ukuthi azikho izinguquko
2. Udinga amafu angu-2 GCP + AWS
3. Isixazululo somhlaba wonke okulula ukusibuyekeza ngaso sonke isikhathi futhi asichithi isikhathi kusisetshenziswa ngasinye izinsuku ezi-3 zomsebenzi
4. Kwenze kube Umthombo Ovulekile - wonke umuntu unenkinga efanayo

Ulimi lwe-Go yingakho ngiluthanda, futhi lunomtapo wolwazi wokudala amafayela e-HCL asetshenziswa ku-terraform + ikhodi eningi ku-terraform engaba usizo.

Indlela

Umzamo wokuqala
Ngaqala ngenguqulo elula. Ithinta ifu nge-SDK ukuze uthole insiza edingekayo futhi uyiguqulele izinkambu ze-terraform. Umzamo ufe ngokushesha eqenjini lezokuphepha ngoba angizange ngithande izinsuku ezingu-1.5 zokuguqula kuphela iqembu lezokuphepha (futhi kunezinsiza eziningi). Isikhathi eside bese izinkambu zingashintshwa/zengezwe

Umzamo wesibili
Ngokusekelwe embonweni ochaziwe lapha. Vele uthathe futhi uguqule i-tfstate ibe yi-tf. Yonke idatha ikhona futhi izinkambu ziyafana. Ungayithola kanjani i-tfstate egcwele yezinsiza eziningi ?? Kulapho umyalo `wokuvuselela kabusha i-terraform` wasiza khona. I-terraform ithatha zonke izinsiza ku-tfstate futhi, nge-ID, ikhipha idatha kuzo futhi ibhale yonke into ku-tfstate. Okungukuthi, dala i-tfstate engenalutho enamagama nama-ID kuphela, sebenzisa `i-terraform refresh` bese sithola ama-tfstates agcwele. Hooray!
Manje masenze izithombe zocansi eziphindaphindayo zokubhala isiguquli se-tfstate kuya ku-tf. Kulabo abangakaze bafunde i-tfstate, yi-JSON, kodwa ekhethekile.
Nazi izici zayo ezibalulekile zengxenye

 "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",

Nakhu:
1. id - intambo
2. imethadatha - uhlu lukasayizi 1 futhi kuyo into enezinkambu ezichazwe ngezansi
3. i-spec - i-hashi kasayizi 1 kanye nokhiye, inani layo
Ngamafuphi, ifomethi ejabulisayo, yonke into ingaba amazinga amaningana ajulile

                   "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",

Ngokuvamile, uma kukhona ofuna inkinga yokuhlela inhlolokhono, vele umcele ukuthi abhale umhlahleli walo msebenzi :)
Ngemva kwemizamo eminingi yokubhala umhlahleli ongenazo iziphazamisi, ngithole ingxenye yawo kukhodi ye-terraform, kanye nengxenye ebaluleke kakhulu. Futhi konke kwakubonakala kusebenza kahle

Umzamo wesithathu
Abahlinzeki be-terraform bangombambambili abaqukethe ikhodi enazo zonke izinsiza nengqondo yokusebenza nge-API yamafu. Ifu ngalinye linomhlinzeki walo futhi i-terraform ngokwayo ibabiza kuphela ngephrothokholi yayo ye-RPC phakathi kwezinqubo ezimbili.
Manje nginqume ukuxhumana nabahlinzeki be-terraform ngokuqondile ngezingcingo ze-RPC. Kuvele kahle futhi kwenze kwaba nokwenzeka ukushintsha abahlinzeki be-terraform baye kwabasha futhi bathole izici ezintsha ngaphandle kokushintsha ikhodi. Kubuye kuvele ukuthi akuzona zonke izinkambu ku-tfstate okufanele zibe ku-tf, kodwa ungathola kanjani? Vele ubuze umhlinzeki wakho ngalokhu. Kwabe sekuqala enye i-pornography ephindaphindayo yokuhlanganisa izinkulumo ezivamile, ifuna izinkambu ngaphakathi kwe-tfstate kuwo wonke amazinga ngokujula.

Ekugcineni, sithole ithuluzi eliwusizo le-CLI elinengqalasizinda evamile yabo bonke abahlinzeki be-terraform futhi ungakwazi ukwengeza kalula entsha. Futhi, ukwengeza izinsiza kuthatha ikhodi encane. Kanye nazo zonke izinhlobo zezinto ezinjengokuxhumana phakathi kwezinsiza. Yebo, kwakunezinkinga eziningi ezihlukahlukene ezingenakuchazwa zonke.
Lesi silwane ngaqamba ngokuthi i-Terrafomer.

Ukugcina

Sisebenzisa i-Terrafomer, senze imigqa eyizinkulungwane ezingama-500-700 yekhodi ye-tf + tfstate evela emafwini amabili. Sikwazile ukuthatha izinto zefa futhi saqala ukuzithinta kuphela ngokusebenzisa i-terraform, njengengqalasizinda engcono kakhulu njengemibono yekhodi. Kungumlingo nje uma uthatha ifu elikhulu futhi ulithole ngeqembu ngendlela yamafayela esisebenzi se-terraform. Bese kuthi grep/replace/git nokunye.

Ngayikama ngayibeka ngohlelo, ngathola imvume. Ikhishwe ku-GitHub yawo wonke umuntu ngoLwesine (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
Usuvele uthole izinkanyezi ezingu-600, izicelo zokudonsa ezingu-2 zokwengeza usekelo lwe-openstack ne-kubernetes. Impendulo enhle. Ngokuvamile, iphrojekthi iwusizo kubantu
Ngeluleka wonke umuntu ofuna ukuqala ukusebenza ngeTerraform futhi angaphinde abhale yonke into yalokhu.
Ngingajabula ukudonsa izicelo, izingqinamba, izinkanyezi.

Demo
I-Terraformer - Ingqalasizinda Ukuze Ikhodi

Source: www.habr.com

Engeza amazwana