Terraformer - Bonneagar go Cód

Terraformer - Bonneagar go Cód
Ba mhaith liom a insint duit faoin uirlis nua CLI a scríobh mé chun seanfhadhb a réiteach.

fadhb

Tá Terraform ina chaighdeán le fada an lá i bpobal Devops/Cloud/IT. Is é an rud an-áisiúil agus úsáideach chun déileáil le bonneagar mar chód. Tá go leor taitneamhachtaí in Terraform chomh maith le go leor forcanna, sceana géara agus rácaí.
Le Terraform tá sé an-áisiúil rudaí nua a chruthú agus ansin iad a bhainistiú, a athrú nó a scriosadh. Cad ba cheart dóibh siúd a bhfuil bonneagar ollmhór acu sa scamall agus nach bhfuil cruthaithe trí Terraform a dhéanamh? Tá sé costasach agus neamhshábháilte ar bhealach éigin an scamall iomlán a athscríobh agus a athchruthú.
Tháinig mé ar an bhfadhb seo ag 2 phost, is é an sampla is simplí ná nuair a theastaíonn uait go mbeadh gach rud i Git i bhfoirm comhaid terraform, ach tá 250+ buicéid agat agus tá sé go leor iad a scríobh i terraform de láimh.
eisiúint ó 2014 i terrafom a dúnadh i 2016 le súil go mbeidh allmhairiú.

Go ginearálta, tá gach rud mar atá sa phictiúr ach ó dheas go clé

Rabhaidh: Ní chónaíonn an t-údar sa Rúis ar feadh leath a shaoil ​​agus ní scríobhann sé mórán i Rúisis. Seachain earráidí litrithe.

Réitigh

1. Tá réitigh réamhdhéanta agus sean-réitigh ann do AWS terraforming. Nuair a rinne mé iarracht mo 250+ buicéad a fháil tríd, thuig mé go raibh gach rud go dona ansin. Tá go leor roghanna nua á dtabhairt isteach le fada ag AWS, ach níl a fhios ag terraforming fúthu agus go ginearálta is ruby ​​é Breathnaíonn an teimpléad tanaí. Tar éis 2 sa tráthnóna chuir mé Iarratas a tharraingt chun gnéithe níos mó a chur ann agus thuig sé nach bhfuil a leithéid de réiteach oiriúnach ar chor ar bith.
Conas a oibríonn terraforming: glacann sé sonraí ón AWS SDK agus gineann sé tf agus tfstate trí theimpléad.
Tá 3 fhadhb anseo:
1. Beidh moill ar nuashonruithe i gcónaí
2. uaireanta tagann comhaid tf amach briste
3. bailítear tfstate ar leithligh ó tf agus ní thagann sé le chéile i gcónaí
Go ginearálta, tá sé deacair toradh a fháil ina ndeir `plean terraform` nach bhfuil aon athruithe

2. Is ordú ionsuite i terraform é `terraform import`. Conas a oibríonn sé?
Scríobhann tú comhad TF folamh leis an ainm agus cineál na hacmhainne, ansin ritheann `terraform import` agus pas a fháil san aitheantas acmhainne. déanann terraform teagmháil leis an soláthraí, faigheann sé na sonraí agus déanann sé comhad tfstate.
Tá 3 fhadhb anseo:
1. Ní fhaighimid ach comhad tfstate, agus tá an tf folamh, ní mór duit é a scríobh de láimh nó é a thiontú ó tfstate
2. Ní féidir oibriú ach le hacmhainn amháin ag an am agus ní thacaíonn sé le gach acmhainn. Agus cad ba cheart dom a dhéanamh arís le 250+ buicéid?
3. Ní mór duit fios a bheith agat ar an ID na n-acmhainní - is é sin, ní mór duit a wrap é i cód a fhaigheann an liosta acmhainní
Go ginearálta, tá an toradh páirteach agus ní scála maith

Mo chinneadh

Riachtanais:
1. Cumas comhaid tf agus tfstate a chruthú le haghaidh acmhainní. Mar shampla, íoslódáil na buicéid/grúpa slándála/cothromóir ualaigh go léir agus thug an `plean terraform` ar ais nach bhfuil aon athruithe
2. Ní mór duit 2 scamall GCP + AWS
3. Réiteach domhanda atá éasca le nuashonrú gach uair agus ní chuireann sé am amú ar gach acmhainn ar feadh 3 lá oibre
4. Déan é Foinse Oscailte - tá an fhadhb chéanna ag gach duine

Is í an teanga Go an fáth gur breá liom é, agus tá leabharlann ann chun comhaid HCL a chruthú a úsáidtear i terraform + a lán cód i terraform a d'fhéadfadh a bheith úsáideach

Conair

An chéad iarracht
Thosaigh mé le leagan simplí. Déan teagmháil leis an scamall tríd an SDK don acmhainn riachtanach agus é a thiontú ina réimsí le haghaidh terraform. Fuair ​​​​an iarracht bás láithreach ar an ngrúpa slándála mar níor thaitin an 1.5 lá liom chun an grúpa slándála amháin a thiontú (agus tá go leor acmhainní ann). Ar feadh i bhfad agus ansin is féidir réimsí a athrú / a chur leis

An dara iarracht
Bunaithe ar an smaoineamh a thuairiscítear anseo. Ní gá ach tfstate a ghlacadh agus a thiontú go tf. Tá na sonraí go léir ann agus tá na réimsí mar an gcéanna. Conas tfstate iomlán a fháil le haghaidh go leor acmhainní ?? Seo an áit a tháinig an t-ordú `terraform refresh` chun tarrthála. Tógann terraform na hacmhainní go léir i tfstate agus, trí ID, tarraingíonn sé amach sonraí orthu agus scríobhann sé gach rud chuig tfstate. Is é sin, cruthaigh tfstate folamh gan ach ainmneacha agus aitheantais, reáchtáil `terraform refresh` agus ansin faigheann muid tfstates iomlán. Hooray!
Anois déanaimis an pornagrafaíocht athfhillteach a bhaineann le tiontaire a scríobh do tfstate go tf. Dóibh siúd nár léigh tfstate riamh, is JSON é, ach speisialta.
Seo é a chuid tréithe tábhachtacha

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

Tá:
1. id - teaghrán
2. meiteashonraí - sraith de mhéid 1 agus réad ann le réimsí a bhfuil cur síos orthu thíos
3. spec - hash de mhéid 1 agus eochair, luach ann
I mbeagán focal, formáid spraoi, is féidir gach rud a roinnt leibhéil domhain

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

Go ginearálta, má tá fadhb ríomhchláraithe ag aon duine le haghaidh agallaimh, níl le déanamh ach iarraidh orthu parsálaí a scríobh don tasc seo :)
Tar éis go leor iarrachtaí parsálaí a scríobh gan bugs, fuair mé cuid de sa chód terraform, agus an chuid is tábhachtaí. Agus bhí an chuma ar gach rud a bheith ag obair go breá

Iarracht a trí
Is dénártha soláthraithe iad soláthraithe terraform ina bhfuil cód leis na hacmhainní go léir agus an loighic chun oibriú leis an API scamall. Tá a sholáthraí féin ag gach scamall agus ní ghlaonn terraform féin ach iad trína phrótacal RPC idir dhá phróiseas.
Anois chinn mé teagmháil a dhéanamh le soláthraithe terraform go díreach trí ghlaonna RPC. D'éirigh sé amach go hálainn agus rinne sé indéanta soláthraithe terraform a athrú go cinn níos nuaí agus gnéithe nua a fháil gan an cód a athrú. Tharlaíonn sé freisin nár cheart go mbeadh gach réimse i tfstate i tf, ach conas is féidir leat a fháil amach? Fiafraigh de do sholáthraí faoi seo. Ansin cuireadh tús le pornagrafaíocht athfhillteach eile de chainteanna rialta a chur le chéile, ag cuardach réimsí taobh istigh de tfstate ag gach leibhéal domhain.

Sa deireadh, fuair muid uirlis úsáideach CLI a bhfuil bonneagar coiteann do gach soláthraí terraform agus is féidir leat ceann nua a chur leis go héasca. Chomh maith leis sin, is beag cód a thógann sé acmhainní a chur leis. Chomh maith le gach cineál earraí mar naisc idir acmhainní. Ar ndóigh, bhí go leor fadhbanna éagsúla ann nach féidir cur síos a dhéanamh orthu go léir.
D'ainmnigh mé an t-ainmhí Terrafomer.

Deiridh

Ag baint úsáide as Terrafomer, ghineamar 500-700 míle líne de chód tf + tfstate ó dhá scamall. Bhí muid in ann rudaí oidhreachta a ghlacadh agus tús a chur le teagmháil a dhéanamh leo ach amháin trí terraform, mar atá sa bhonneagar is fearr mar smaointe cód. Níl ann ach draíocht nuair a ghlacann tú scamall ollmhór agus má fhaigheann tú é trí fhoireann i bhfoirm comhaid oibrithe terraform. Agus ansin grep/ionadaigh/git agus mar sin de.

Chíor mé amach é agus chuir mé in ord é, fuair mé cead. Eisithe ar GitHub do gach duine ar an Déardaoin (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
Fuarthas 600 réalta, 2 iarratas tarraingte cheana féin chun tacaíocht a chur leis do Openstack agus kubernetes. Aiseolas maith. Go ginearálta, tá an tionscadal úsáideach do dhaoine
Molaim do gach duine atá ag iarraidh tosú ag obair le Terraform agus gan gach rud a athscríobh le haghaidh seo.
Beidh áthas orm iarratais, saincheisteanna, réaltaí a tharraingt.

Taispeántas
Terraformer - Bonneagar go Cód

Foinse: will.com

Add a comment