
Bu mhath leam innse dhut mun inneal CLI Ăšr a sgrĂŹobh mi gus fuasgladh fhaighinn air seann dhuilgheadas.
duilgheadas
Tha Terraform air a bhith na inbhe o chionn fhada anns aâ choimhearsnachd Devops/Cloud/IT. Tha an rud gu math goireasach agus feumail airson dèiligeadh ri bun-structar mar chòd. Tha mòran de thlachd ann an Terraform a bharrachd air mòran forcaichean, sgeinean biorach agus rĂ can.
Le Terraform tha e gu math goireasach rudan Úra a chruthachadh agus an uairsin an riaghladh, an atharrachadh no an cuir à s. Dè bu chòir dhaibhsan aig a bheil bun-structar mòr san sgòth agus nach deach a chruthachadh tro Terraform a dhèanamh? Tha ath-sgrÏobhadh agus ath-chruthachadh an sgòth gu lèir dòigh air choireigin daor agus cunnartach.
Thachair mi ris an duilgheadas seo aig obraichean 2, is e an eisimpleir as sÏmplidh nuair a tha thu ag iarraidh gum bi a h-uile cà il ann an Git ann an cruth faidhlichean terraform, ach tha 250+ bucaid agad agus tha e tòrr a bhith gan sgrÏobhadh ann an terraform le là imh.
tha bho 2014 ann an terrafom a chaidh a dhÚnadh ann an 2016 le dòchas gum bi in-mhalairt ann.
San fharsaingeachd, tha a h-uile dad mar a tha san dealbh a-mhĂ in bho dheas gu clĂŹ
Rabhaidhean: Chan eil an t-Ăšghdar aâ fuireach anns an Ruis airson leth a bheatha agus chan eil e aâ sgrĂŹobhadh mòran ann an Ruisis. Bi faiceallach mu mhearachdan litreachaidh.
Fuasglaidhean
1. Tha fuasglaidhean deiseil agus seann airson AWS . Nuair a dh'fheuch mi ri na 250+ bucaid agam fhaighinn troimhe, thuig mi gu robh a h-uile dad dona an sin. Tha AWS air a bhith aâ toirt a-steach tòrr roghainnean Ăšra o chionn fhada, ach chan eil fios aig terraforming mun deidhinn agus san fharsaingeachd is e ruby ââââa thâ ann . Ăs deidh 2 san fheasgar chuir mi gus barrachd fheartan a chur ris an sin agus thuig e nach eil fuasgladh mar sin freagarrach idir.
Mar a tha cruth-tĂŹre ag obair: bidh e aâ toirt dĂ ta bhon AWS SDK agus aâ gineadh tf agus tfstate tro theamplaid.
Tha 3 duilgheadasan an seo:
1. Bidh an-còmhnaidh dà il ann an Úrachaidhean
2. tf faidhlichean uaireannan a 'tighinn a-mach briste
3. Tha tfstate air a chruinneachadh air leth bho tf agus chan eil e an-còmhnaidh aâ tighinn còmhla
San fharsaingeachd, tha e duilich toradh fhaighinn anns a bheil âplana terraformâ ag rĂ dh nach eil atharrachaidhean ann
2. 'S e à ithne stèidhichte ann an cruth-tÏre a th' ann an `terraform import'. Ciamar a tha e ag obair?
Bidh thu aâ sgrĂŹobhadh faidhle TF falamh leis an ainm agus an seòrsa goireas, an uairsin ruith `terraform import` agus cuir seachad ID aâ ghoireas. terraform aâ conaltradh ris an t-solaraiche, aâ faighinn an dĂ ta agus aâ dèanamh faidhle tfstate.
Tha 3 duilgheadasan an seo:
1. Chan fhaigh sinn ach faidhle tfstate, agus tha an tf falamh, feumaidh tu a sgrĂŹobhadh le lĂ imh no a thionndadh bho tfstate
2. Chan urrainn ach obrachadh le aon ghoireas aig aon Ă m agus chan eil e aâ toirt taic do na goireasan uile. Agus dè a bu chòir dhomh a dhèanamh a-rithist le 250+ bucaid?
3. Feumaidh tu fios a ThÚsail de na goireasan - 'se sin, feumaidh tu a wrap ann an còd a gheibh an liosta de ghoireasan
San fharsaingeachd, tha an toradh ann am pĂ irt agus chan eil e aâ sgèile gu math
Mo chinneadh
Riatanasan:
1. Comas faidhlichean tf agus tfstate a chruthachadh airson goireasan. Mar eisimpleir, luchdaich sĂŹos a h-uile bucaid / buidheann tèarainteachd / cothromachadh luchdan agus gun do thill âplana terraformâ nach eil atharrachaidhean ann
2. Feumaidh tu sgòthan 2 GCP + AWS
3. Global fuasgladh a tha furasta Ăšrachadh a h-uile turas agus nach eil a 'caitheamh Ăšine air gach goireas airson 3 lĂ ithean obrach
4. Dèan e Open Source - tha an aon dhuilgheadas aig a h-uile duine
Is e an cĂ nan Go as coireach gu bheil mi dèidheil air, agus tha leabharlann aige airson faidhlichean HCL a chruthachadh a thathas aâ cleachdadh ann an terraform + tòrr còd ann an terraform a dhâ fhaodadh a bhith feumail
frith-rathad
Feuch an toiseach
Thòisich mi le dreach sĂŹmplidh. Cuir fios chun sgòth tron ââSDK airson an goireas a tha a dhĂŹth agus ga thionndadh gu raointean airson cruth-tĂŹre. BhĂ saich an oidhirp sa bhad air a âbhuidheann tèarainteachd leis nach do chòrd na lĂ ithean 1.5 rium gus dĂŹreach aâ bhuidheann tèarainteachd a thionndadh (agus tha tòrr ghoireasan ann). Airson Ăšine mhòr agus an uairsin faodar raointean atharrachadh / cur ris
An dĂ rna oidhirp
Stèidhichte air a 'bheachd a chaidh a mhĂŹneachadh . DĂŹreach gabh agus tionndaidh tfstate gu tf. Tha an dĂ ta gu lèir ann agus tha na raointean mar an ceudna. Ciamar a gheibh thu lĂ n tfstate airson mòran ghoireasan ?? Seo far an tĂ inig an Ă ithne âĂšrachadh terraformâ gu teasairginn. Bidh terraform aâ toirt a h-uile goireas ann an tfstate agus, le ID, aâ tarraing a-mach dĂ ta orra agus aâ sgrĂŹobhadh a h-uile cĂ il gu tfstate. Is e sin, cruthaich tfstate falamh anns nach eil ach ainmean agus IDan, ruith `terraform refresh` agus an uairsin gheibh sinn lĂ n tfstates. Hooray!
A-nis dèanamaid pornagraf ath-chuairteach de bhith aâ sgrĂŹobhadh inneal-tionndaidh airson tfstate gu tf. Dhaibhsan nach do leugh tfstate a-riamh, tha e JSON, ach sònraichte.
Seo na feartan pĂ irt chudromach aige
"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",
Tha:
1. id - sreang
2. meata-dĂ ta - sreath de mheud 1 agus annta nĂŹ le raointean a tha air am mĂŹneachadh gu h-ĂŹosal
3. spec - hash de mheud 1 agus iuchair, luach ann
Ann an Úine ghoirid, cruth spòrsail, faodaidh a h-uile dad a bhith grunn Ïrean domhainn
"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", San fharsaingeachd, ma tha duine ag iarraidh duilgheadas prògramadh airson agallamh, dÏreach iarr orra parser a sgrÏobhadh airson na h-obrach seo :)
Ăs deidh mòran oidhirpean air parser a sgrĂŹobhadh gun bhiteagan, lorg mi pĂ irt dheth anns a âchòd terraform, agus am pĂ irt as cudromaiche. Agus bha coltas gu robh a h-uile dad ag obair gu math
Feuch trĂŹ
Tha solaraichean terraform nan binaries anns a bheil còd leis a h-uile goireas agus loidsig airson a bhith ag obair leis an Cloud API. Tha a sholaraiche fhèin aig gach sgòth agus chan eil terraform fhèin gan gairm ach tron ââââphròtacal RPC aca eadar dĂ phròiseas.
A-nis chuir mi romham fios a chuir gu solaraichean terraform gu dĂŹreach tro ghairmean RPC. Thionndaidh e a-mach gu breagha agus rinn e comasach solaraichean terraform atharrachadh gu feadhainn nas Ăšire agus feartan Ăšra fhaighinn gun a bhith ag atharrachadh a âchòd. Tha e aâ tionndadh a-mach cuideachd nach bu chòir a h-uile raon ann an tfstate a bhith ann an tf, ach ciamar a gheibh thu a-mach? DĂŹreach faighnich don t-solaraiche agad mu dheidhinn seo. An uairsin thòisich pornagraf ath-chuairteach eile de bhith aâ cur ri chèile abairtean cunbhalach, aâ coimhead airson raointean taobh a-staigh tfstate aig gach ĂŹre domhainn.
Aig aâ cheann thall, fhuair sinn inneal CLI feumail aig a bheil bun-structar cumanta airson a h-uile solaraiche terraform agus is urrainn dhut fear Ăšr a chuir ris gu furasta. Cuideachd, chan eil mòran còd a dhĂŹth airson goireasan a chur ris. A bharrachd air a h-uile seòrsa de rudan math leithid ceanglaichean eadar goireasan. Gu dearbh, bha mòran dhuilgheadasan eadar-dhealaichte ann nach urrainnear a mhĂŹneachadh uile.
Thug mi Terrafomer air aâ bheathach.
Deireannach
Aâ cleachdadh Terrafomer, chruthaich sinn 500-700 mĂŹle loidhne de chòd tf + tfstate bho dhĂ sgòth. Bha e comasach dhuinn rudan dĂŹleab a ghabhail agus tòiseachadh aâ suathadh riutha tro terraform a-mhĂ in, mar anns aâ bhun-structar as fheĂ rr mar bheachdan còd. Is e dĂŹreach draoidheachd a thâ ann nuair a bheir thu sgòth mòr agus a gheibh thu e tro sgioba ann an cruth faidhlichean luchd-obrach terraform. Agus an uairsin grep/replace/git agus mar sin air adhart.
Chrath mi a-mach e agus chuir mi ann an òrdugh e, fhuair mi cead. Air fhoillseachadh air GitHub airson a h-uile duine Diardaoin (02.05.19/XNUMX/XNUMX).
Fhuair sinn mu thrà th 600 rionnag, 2 iarrtas tarraing airson taic a chuir ris airson Openstack agus kubernetes. Deagh fhios air ais. San fharsaingeachd, tha am pròiseact feumail do dhaoine
Tha mi aâ comhairleachadh a h-uile duine a tha airson tòiseachadh ag obair le Terraform agus gun a bhith ag ath-sgrĂŹobhadh a h-uile cĂ il airson seo.
Bidh mi toilichte iarrtasan, cĂšisean, rionnagan a tharraing.
Demo
Source: www.habr.com
