Terraformer - Kaabayaasha Si Code

Terraformer - Kaabayaasha Si Code
Waxaan jeclaan lahaa inaan kuu sheego qalabka cusub ee CLI ee aan u qoray si loo xalliyo dhib hore.

dhibaato

Terraform ayaa muddo dheer halbeeg u ahaa bulshada Devops/Cloud/IT. Shaydu waa mid aad u habboon oo faa'iido u leh wax ka qabashada kaabayaasha sida code. Waxaa jira waxyaabo badan oo lagu farxo Terraform iyo sidoo kale fargeeto badan, mindiyo fiiqan iyo rake.
Terraform-ka aad bay ugu habboon tahay in la abuuro waxyaabo cusub ka dibna la maareeyo, beddelo ama la tirtiro. Maxaa la gudboon kuwa leh kaabayaasha weyn ee daruuraha oo aan ku abuurin Terraform? Dib u qorista iyo dib-u-abuurista daruurta oo dhan waa qaali oo aan ammaan ahayn.
Waxaan la kulmay dhibaatadan 2 shaqo, tusaalaha ugu fudud waa marka aad rabto in wax walba ay ku jiraan Git qaab faylasha terraform, laakiin waxaad haysataa 250+ baaldiyo waana wax badan inaad ku qorto terraform gacanta.
Waxaa jira arrin tan iyo 2014 ee terrafom kaas oo la xidhay 2016 iyada oo la rajeynayo in ay jiri doonto soo dejinta.

Guud ahaan, wax walba waa sida sawirka kaliya laga bilaabo midig ilaa bidix

Digniin: Qoraagu kuma noola Ruushka nus noloshiisa oo wax yar ayuu ku qoraa Ruushka. Ka digtoonow khaladaadka higaada.

Xalka

1. Waxaa jira xalal diyaarsan oo duug ah oo loogu talagalay AWS terraforming. Markii aan isku dayay in aan ka helo 250+ baaldiyadayda, waxaan ogaaday in wax walba ay ku xun yihiin halkaas. AWS waxay muddo dheer soo bandhigtay doorashooyin badan oo cusub, laakiin terraforming ma oga iyaga oo guud ahaan waa ruby qaab-dhismeedka ayaa u muuqda mid yar. Kadib 2dii maqribnimo ayaan diray Codsiga jiid in lagu daro sifooyin dheeraad ah halkaas oo ay ogaadeen in xalka noocan oo kale ah aanu ku haboonayn gabi ahaanba.
Sida terraforming u shaqeyso: waxay xogta ka qaadaa AWS SDK waxayna soo saartaa tf iyo tfstate iyada oo loo marayo qaab-dhismeedka.
Waxaa jira 3 dhibaato halkan:
1. Had iyo jeer waxaa jiri doona dib u dhac ku yimaada cusboonaysiinta
2. faylalka tf mararka qaarkood waxay soo baxaan iyagoo jaban
3. tfstate si gooni ah ayaa looga soo ururiyaa tf oo had iyo jeer iskuma timaado
Guud ahaan, way adagtahay in la helo natiija "qorshaha dhuleed" uu yiraahdo ma jiraan wax isbedel ah

2. 'terraform soo dejinta' waa talis ku dhex jira terraform. Sidee u shaqeysaa?
Waxaad ku qortaa fayl TF ah oo madhan oo wata magaca iyo nooca kheyraadka, dabadeed socodsii `terraform soo dejinta' oo gudbi aqoonsiga kheyraadka. Terraform waxa uu la xidhiidhaa bixiyaha, waxa uu helaa xogta oo uu sameeyaa faylka tfstate.
Waxaa jira 3 dhibaato halkan:
1. Waxa kaliya oo aanu helnaa faylka tfstate, tf-kuna waa madhan yahay, waxa aad u baahantahay in aad gacanta ku qorto ama aad ka beddesho tfstate
2. Waxa kaliya oo ay ku shaqayn kartaa hal kheyr markiiba mana taageerto dhammaan agabka. Maxaan ku sameeyaa mar labaad 250+ baaldiyo?
3. Waxaad u baahan tahay inaad ogaato aqoonsiga agabka - taasi waa, waxaad u baahan tahay inaad ku duubto koodh helaya liiska agabka.
Guud ahaan, natiijadu waa qayb oo si fiican uma miisaan

Go'aankeyga

Shuruudaha:
1. Awoodda abuurista tf iyo tfstate faylalka agabka. Tusaale ahaan, soo deji dhammaan baaldiyada/kooxaha amniga/dhammaystirka culeyska iyo 'qorshaha qaab-dhismeedka' ayaa soo noqday in aysan jirin isbeddello
2. Waxaad u baahan tahay 2 daruuraha GCP + AWS
3. xal caalami ah oo fudud in la cusboonaysiiyo mar kasta oo aan wakhti ku lumin kheyraad kasta 3 maalmood oo shaqo ah
4. Ka dhig il furan - qof kastaa dhib isku mid ah ayuu qabaa

Luqadda Go waa sababta aan u jeclahay, waxayna leedahay maktabad loogu talagalay abuurista faylasha HCL ee loo isticmaalo terraform + kood badan oo terraform ah oo faa'iido leh

Jidka

Isku daygii ugu horeeyay
Waxaan ku bilaabay nooc fudud. Kala xiriirida daruuraha iyada oo loo sii marayo SDK kheyraadka loo baahan yahay oo loogu beddelo goobo loogu talagalay terraform. Isku daygii ayaa isla markiiba ku dhintay kooxda amniga sababtoo ah ma jeclayn maalmaha 1.5 si loogu beddelo kooxda amniga oo keliya (oo waxaa jira kheyraad badan). Waxay qaadataa wakhti dheer ka dibna beeraha waa la bedeli karaa/ku dari karaa

Isku daygii labaad
Iyada oo ku saleysan fikradda lagu tilmaamay halkan. Kaliya qaado oo u beddel tfstate tf. Dhammaan xogta ayaa jirta, beeruhuna waa isku mid. Sida loo helo tfstate buuxa khayraad badan ?? Tani waa meesha uu amarka 'terraform refresh' ka soo badbaadiyay. Terraform-ku waxa uu qaataa dhammaan agabka ku jira tfstate oo, aqoonsi ahaan, ka soo saara xogta iyaga oo wax walba u qora tfstate. Taasi waa, samee tfstate madhan oo leh magacyo iyo aqoonsiyo, socodsii `terraform refresh' ka dibna waxaan helnaa tfstates buuxa. Hooray!
Hadda aynu samayno sawirada qaawan ee soo noqnoqda ee qorista beddelka tfstate una beddelo tf. Kuwa aan waligood akhrin tfstate, waa JSON, laakiin gaar ah.
Halkan waxaa ah sifooyinkeeda qayb muhiim ah

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

Waxaa jira:
1. id - xadhig
2. metadata - array of size 1 iyo waxa ku jira shay leh beero taas oo lagu tilmaamay hoos
3. spec - xashiishka cabbirka 1 iyo furaha, qiimaha ku jira
Marka la soo koobo, qaab madadaalo leh, wax walba waxay noqon karaan dhowr heer oo qoto dheer

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

Guud ahaan, haddii qof uu doonayo dhibaato barnaamijka wareysiga, kaliya weydii iyaga inay u qoraan parser hawshan :)
Ka dib isku dayo badan oo lagu qoray baarser aan cillad lahayn, waxaan ka helay qayb ka mid ah code-ka terraform-ka, iyo qaybta ugu muhiimsan. Wax walbana waxay u muuqdeen inay si fiican u shaqaynayeen

Isku day saddex
Bixiyeyaasha terraform-ka waa binaries ka kooban kood leh dhammaan agabyada iyo macquulka ah ee la shaqeynta daruuraha API. Daruur kastaa waxay leedahay bixiye u gaar ah oo terraform lafteedu waxay ugu wacdaa oo kaliya iyaga oo u maraya borotokoolka RPC ee u dhexeeya laba hab.
Hadda waxaan go'aansaday inaan si toos ah ula xiriiro bixiyeyaasha terraform taleefoonnada RPC. Waxay u soo baxday si qurux badan oo waxay suurtagelisay in la beddelo bixiyeyaasha terraform-ka kuwo cusub oo la helo astaamo cusub iyada oo aan la beddelin koodka. Waxa kale oo soo baxday in dhammaan goobaha tfstate aysan ahayn inay ku jiraan tf, laakiin sidee ku ogaan kartaa? Kaliya weydii dhakhtarkaaga arrintan. Dabadeed sawir qaawan oo kale oo soo noqnoqonaya oo ururinta tibaaxaha caadiga ah ayaa bilaabmay, iyada oo si qotodheer looga raadinayo garoonnada gudaha tfstate heer kasta.

Dhammaadkii, waxaanu helnay qalab CLI ah oo faa'iido leh kaas oo leh kaabayaal guud oo loogu talagalay dhammaan bixiyeyaasha terraform-ka oo aad si fudud ugu dari karto mid cusub. Sidoo kale, ku darista kheyraadka waxay qaadataa kood yar. Waxaa dheer dhammaan noocyada wanaagga sida isku xirka kheyraadka. Dabcan, waxaa jiray dhibaatooyin badan oo kala duwan oo aan la wada sifayn karin.
Waxaan xayawaanka u bixiyey Terrafomer.

Dhamaadka

Isticmaalka Terrafomer, waxaanu ka soo saarnay 500-700 kun oo xariiq oo tf + tfstate code oo ka yimid laba daruurood. Waxaan awoodnay inaan qaadno waxyaabo dhaxalgal ah oo aan ku bilowno inaan ku taabano kaliya qaab-dhismeedka, sida kaabayaasha ugu fiican sida fikradaha code. Kaliya waa sixir markaad qaadato daruur weyn oo aad ka hesho koox qaab faylal shaqaale ah oo muuqaal ah. Ka dibna grep / beddelka / git iyo wixii la mid ah.

Waan ka shanlay oo u hagaajiyay, fasax baan helay. Laga soo daayay GitHub qof walba Khamiista (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
Horeba waxaa loo helay 600 oo xiddigood, 2 codsiyo jiidis ah oo lagu daro taageerada openstack iyo kubernetes. Warcelin wanaagsan. Guud ahaan, mashruucu wuxuu faa'iido u leeyahay dadka
Waxaan kula talinayaa qof kasta oo raba inuu bilaabo inuu la shaqeeyo Terraform oo uusan wax walba u qorin tan.
Waan ku farxi doonaa inaan jiido codsiyada, arrimaha, xiddigaha.

Demo
Terraformer - Kaabayaasha Si Code

Source: www.habr.com

Add a comment