Terraformer - Infrastructure To Code

Terraformer - Infrastructure To Code
Ndinoda kukuudza nezvechishandiso chitsva cheCLI chandakanyora kugadzirisa dambudziko rekare.

dambudziko

Terraform yagara iri chiyero muDevops/Cloud/IT nharaunda. Chinhu chacho chakanyanya nyore uye chinobatsira pakubata nezvivakwa sekodhi. Kune zvakawanda zvinofadza muTerraform pamwe nemaforogo mazhinji, mapanga anopinza uye rakes.
NeTerraform zviri nyore kugadzira zvinhu zvitsva uye wozozvibata, shandura kana kudzima. Chii chinofanira kuitwa nevaya vane hukuru hukuru mumakore uye vasina kugadzirwa kuburikidza neTerraform? Kunyora patsva uye kugadzirazve gore rese kunodhura uye hakuna kuchengeteka.
Ndakasangana nedambudziko iri pamabasa maviri, muenzaniso wakapfava ndewe kana iwe uchida kuti zvese zvive muGit muchimiro cheterraform mafaera, asi iwe une 2+ mabhakiti uye zvakanyanya kuanyora mu terraform neruoko.
kune nyaya kubva 2014 mu terrafom iyo yakavharwa muna 2016 netarisiro yekuti kuchave nekupinza.

Muzhinji, zvese zvakafanana nemufananidzo kubva kurudyi kuenda kuruboshwe

Yambiro: Munyori haagari muRussia kwehafu yehupenyu hwake uye anonyora zvishoma muRussia. Ngwarira kukanganisa zviperengo.

Mhinduro

1. Pane zvakagadzirirwa-zvakagadzirwa uye zvekare zvigadziriso zveAWS terraforming. Pandakaedza kupinza 250+ mabhakiti angu, ndakaona kuti zvinhu zvose zvakanga zvakaipa ipapo. AWS yagara ichiunza yakawanda sarudzo nyowani, asi terraforming haizive nezvavo uye kazhinji iruby. template inotaridzika zvishoma. After 2 manheru ndakatumira Dhonza chikumbiro kuwedzera mamwe maficha ipapo ndokuona kuti mhinduro yakadaro haina kufanira zvachose.
Mashandiro anoita terraforming: zvinotora data kubva kuAWS SDK uye inogadzira tf uye tfstate kuburikidza netemplate.
Pane 3 matambudziko pano:
1. Pachagara paine lag in updates
2. tf mafaira dzimwe nguva anobuda akatyoka
3. tfstate inounganidzwa zvakasiyana kubva kune tf uye haisi nguva dzose yakabatana
Kazhinji, zvakaoma kuwana mhedzisiro iyo `terraform plan` inoti hapana shanduko

2. `terraform import` murairo wakavakirwa-mukati mune terraform. Chinoshanda sei?
Iwe unonyora isina chinhu TF faira ine zita uye rudzi rwechishandiso, wobva wamhanya `terraform import` wopfuudza iyo resource ID. terraform inobata mupi, inogamuchira iyo data uye inoita tfstate faira.
Pane 3 matambudziko pano:
1. Isu tinongowana tfstate faira, uye tf haina chinhu, unofanirwa kuinyora nemaoko kana kuishandura kubva kutfstate.
2. Inogona chete kushanda nechinhu chimwe chete panguva uye haitsigire zviwanikwa zvese. Uye chii chandinofanira kuita zvakare ne250+ mabhakiti?
3. Iwe unofanirwa kuziva ID yezviwanikwa - ndiko kuti, iwe unofanirwa kuiputira nekodhi inowana runyorwa rwezviwanikwa.
Kazhinji, mhedzisiro yacho ine chikamu uye haina kukwira zvakanaka

Sarudzo yangu

Zvinotarisirwa:
1. Kukwanisa kugadzira tf uye tfstate mafaira ezviwanikwa. Semuyenzaniso, dhawunirodha ese mabhakiti/security boka/load balancer uye iyo `terraform plan` yakadzosa kuti hapana shanduko.
2. Unoda 2 GCP + AWS makore
3. Global solution iyo iri nyore kugadzirisa nguva dzose uye haina kutambisa nguva pane imwe neimwe sosi kwemazuva matatu ebasa.
4. Iite Open Source - munhu wese ane dambudziko rakafanana

Mutauro weGo ndosaka ndichiuda, uye ine raibhurari yekugadzira HCL mafaera ayo anoshandiswa muterraform + yakawanda kodhi mune terraform inogona kubatsira.

Nzira

Kuedza kwekutanga
Ndakatanga neshanduro yakapfava. Kubata gore kuburikidza neSDK kune inodiwa sosi uye kuishandura kuita minda yeterraform. Kuedza kwakafa pakarepo paboka rekuchengetedza nokuti ndakanga ndisingadi mazuva 1.5 ekushandura chete boka rekuchengetedza (uye kune zvakawanda zvezviwanikwa). Kwenguva yakareba uye ipapo minda inogona kuchinjwa / kuwedzerwa

Kuedza kwechipiri
Kubva pane pfungwa inotsanangurwa pano. Ingotora uye shandura tfstate kuita tf. Yese data iripo uye minda yakafanana. Nzira yekuwana tfstate yakazara kune akawanda zviwanikwa ?? Apa ndipo pakauya murairo we `terraform refresh` kuzobatsira. terraform inotora zvese zviwanikwa mutfstate uye, neID, inoburitsa data pazviri uye inonyora zvese ku tfstate. Ndokunge, gadzira isina chinhu tfstate ine mazita chete uye maID, mhanya `terraform refresh` tobva tawana yakazara tfstates. Hooray!
Zvino ngatiitei zvinodzokororwa zvinonyadzisira zvekunyora converter yetfstate to tf. Kune avo vasina kumboverenga tfstate, iJSON, asi yakakosha.
Heino chikamu chayo chakakosha hunhu

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

Pane:
1. id - tambo
2. metadata - hurongwa hwehukuru 1 uye mairi chinhu chine minda inotsanangurwa pasi apa
3. spec - hashi yehukuru 1 uye kiyi, kukosha mairi
Muchidimbu, chimiro chinonakidza, zvese zvinogona kuve akati wandei mazinga akadzika

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

Kazhinji, kana paine munhu anoda dambudziko rechirongwa chebvunzurudzo, ingovakumbira kuti vanyore parser yebasa iri :)
Mushure mekuedza kwakawanda kunyora parser pasina tsikidzi, ndakawana chikamu chayo mune terraform kodhi, uye iyo inonyanya kukosha chikamu. Uye zvinhu zvose zvaiita sezviri kushanda zvakanaka

Kuedza katatu
terraform vanopa mabhinari ane kodhi ine zvese zviwanikwa uye pfungwa dzekushanda neiyo API yegore. Gore rega rega rine mupi waro uye terraform pachayo inongovadaidza kuburikidza neRPC protocol pakati pemaitiro maviri.
Zvino ndafunga kubata terraform vanopa zvakananga kuburikidza neRPC mafoni. Zvakaitika zvakanaka uye zvakaita kuti zvikwanise kushandura vanopa terraform kune vatsva uye kuwana maficha matsva pasina kuchinja kodhi. Zvinoitika zvakare kuti haisi minda yese mutfstate inofanirwa kunge iri mutf, asi ungazviwana sei? Ingobvunza mubatsiri wako nezveizvi. Zvino imwe inodzokorodza zvinonyadzisira yekuunganidza mazwi enguva dzose yakatanga, ichitsvaga minda mukati me tfstate pamatanho ese zvakadzama.

Pakupedzisira, takawana chishandiso cheCLI chinobatsira chine zvivakwa zvakajairika kune vese vanopa terraform uye unogona kuwedzera imwe nyowani nyore nyore. Zvakare, kuwedzera zviwanikwa kunotora kodhi diki. Uyezve marudzi ese ezvinonaka senge hukama pakati pezviwanikwa. Chokwadika, kwakanga kune zvinetso zvakawanda zvakasiyana zvisingagoni kurondedzerwa zvose.
Mhuka iyi ndakaitumidza kuti Terrafomer.

Finale

Tichishandisa Terrafomer, takagadzira 500-700 zviuru mitsetse yetf + tfstate kodhi kubva mumakore maviri. Isu takakwanisa kutora zvinhu zvenhaka uye kutanga kuzvibata chete kuburikidza neterraform, semunzvimbo dzakanakisa semazano ekodhi. Angori mashiripiti kana iwe ukatora gore rakakura uye worigamuchira kuburikidza nechikwata muchimiro chemafaira evashandi veterraform. Uye ipapo grep/replace/git zvichingodaro.

Ndakaipeka ndokuiisa muhurongwa, ndikawana mvumo. Yakaburitswa paGitHub kune wese munhu neChina (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
Yakatogamuchira mazana matanhatu enyeredzi, 600 kudhonza zvikumbiro zvekuwedzera rutsigiro kune openstack uye kubernetes. Mhinduro yakanaka. Kazhinji, chirongwa chacho chinobatsira vanhu
Ini ndinopa zano kune wese anoda kutanga kushanda neTerraform uye kwete kunyorazve zvese izvi.
Ndichafara kudhonza zvikumbiro, nyaya, nyeredzi.

Dhemo
Terraformer - Infrastructure To Code

Source: www.habr.com

Voeg