Terraformer - Infrastructure To Code

Terraformer - Infrastructure To Code
Ke kopa ho u bolella ka sesebelisoa se secha sa CLI seo ke se ngotseng ho rarolla bothata ba khale.

bothata

Terraform esale e le tloaelo sechabeng sa Devops/Cloud/IT. Ntho e bonolo haholo ebile e na le thuso bakeng sa ho sebetsana le lisebelisoa tsa motheo e le khoutu. Ho na le lintho tse ngata tse monate ho Terraform hammoho le lifereko tse ngata, lithipa tse bohale le liraka.
Ka Terraform ho bonolo haholo ho theha lintho tse ncha ebe o li laola, oa li fetola kapa oa li hlakola. Ba nang le lisebelisoa tse kholo ka marung mme ba sa etsoa ka Terraform ba lokela ho etsa eng? Ho ngola hape le ho bopa leru lohle ka tsela e itseng ho bitsa chelete e ngata ebile ha ho bolokehe.
Ke ile ka kopana le bothata bona mesebetsing ea 2, mohlala o bonolo ka ho fetisisa ke ha u batla hore ntho e 'ngoe le e' ngoe e be ho Git ka mokhoa oa lifaele tsa terraform, empa u na le linkho tse 250+ 'me ho ngata ho li ngola ka terraform ka letsoho.
Ho na le hlahisa ho tloha ka 2014 terrafom e ileng ea koaloa ka 2016 ka tšepo ea hore ho tla ba le import.

Ka kakaretso, ntho e 'ngoe le e' ngoe e tšoana le setšoantšong feela ho tloha ho le letona ho ea ho le letšehali

Litemoso: Mongoli ha a lule Russia halofo ea bophelo ba hae mme o ngola hanyenyane ka Serussia. Hlokomela liphoso tsa mopeleto.

Tharollo

1. Ho na le litharollo tse seng li entsoe le tsa khale tsa AWS terraforming. Ha ke leka ho kenya linkho tsa ka tse 250+ ka eona, ke ile ka hlokomela hore ntho e 'ngoe le e' ngoe e ne e le mpe moo. AWS esale e hlahisa likhetho tse ngata tse ncha, empa terraforming ha e tsebe ka tsona mme ka kakaretso ke ruby. template e shebahala e fokola. Ka mor'a 2 mantsiboea ke ile ka romela Kopa kopo ho eketsa likarolo tse ling moo mme o hlokometse hore tharollo e joalo ha e tšoanelehe ho hang.
Kamoo terraforming e sebetsang kateng: e nka data ho tswa ho AWS SDK mme e hlahisa tf le tfstate ka template.
Ho na le mathata a 3 mona:
1. Ho tla lula ho na le tšitiso ea liapdeite
2. tf difaele ka linako tse ling tsoa robehile
3. tfstate e bokelloa ka thoko ho tf mme ha e kopane kamehla
Ka kakaretso, ho thata ho fumana sephetho seo ho sona `terraform plan` e reng ha ho na liphetoho

2. `terraform import` ke taelo e hahelletsoeng ka har'a terraform. E sebetsa joang?
U ngola faele ea TF e se nang letho e nang le lebitso le mofuta oa sesebelisoa, ebe u matha `terraform import` ebe u fetisa ID ea mohloli. terraform e ikopanya le mofani, e amohela data mme e etsa faele ea tfstate.
Ho na le mathata a 3 mona:
1. Re fumana faele ea tfstate feela, 'me tf ha e na letho, u lokela ho e ngola ka letsoho kapa ho e fetola ho tloha tfstate.
2. E ka sebetsa feela ka mohloli o le mong ka nako 'me ha e tšehetse lisebelisoa tsohle. 'Me ke etse'ng hape ka linkho tse 250+?
3. O hloka ho tseba ID ea lisebelisoa - ke hore, o hloka ho e phuthela ka khoutu e fumanang lethathamo la lisebelisoa.
Ka kakaretso, sephetho ke karolo e itseng 'me ha e lekane hantle

Qeto ea ka

Litlhokahalo:
1. Bokhoni ba ho etsa lifaele tsa tf le tfstate bakeng sa lisebelisoa. Ka mohlala, khoasolla libakete/sehlopha sa ts'ireletso/sekala sa mojaro 'me `leano la terraform` le khutlisitse hore ha ho na liphetoho.
2. O hloka maru a 2 GCP + AWS
3. Tharollo ea lefats'e e bonolo ho e ntlafatsa nako le nako 'me e sa senye nako mohloling o mong le o mong bakeng sa matsatsi a 3 a mosebetsi
4. Etsa hore e Bulehe Mohloli - bohle ba na le bothata bo tšoanang

Puo ea Go ke ka lebaka leo ke e ratang, 'me e na le laeborari ea ho theha lifaele tsa HCL tse sebelisoang ka terraform + khoutu e ngata ka terraform e ka ba molemo.

Tsela

Boiteko ba pele
Ke ile ka qala ka phetolelo e bonolo. Ho ikopanya le leru ka SDK bakeng sa mohlodi o hlokahalang le ho o fetolela masimong bakeng sa terraform. Boiteko bo ile ba shoa hang-hang sehlopheng sa tšireletso hobane ke ne ke sa rate matsatsi a 1.5 ho fetola sehlopha sa tšireletso feela ('me ho na le lisebelisoa tse ngata). Ka nako e telele mme masimo a ka fetoloa / a eketsoa

Boiteko ba bobeli
E itšetlehile ka maikutlo a hlalositsoeng mona. Nka feela 'me u fetole tfstate ho tf. Lintlha tsohle li teng 'me masimo a tšoana. Mokhoa oa ho fumana tfstate e felletseng bakeng sa lisebelisoa tse ngata? Mona ke moo taelo ea `terraform refresh` e ileng ea thusa. terraform e nka lisebelisoa tsohle ho tfstate mme, ka ID, e ntša data ho eona ebe e ngola ntho e 'ngoe le e' ngoe ho tfstate. Ke hore, theha tfstate e se nang letho e nang le mabitso le li-ID feela, tsamaisa `terraform refresh` ebe re fumana li-tfstates tse felletseng. Hooray!
Joale ha re etseng litšoantšo tsa bootsoa tse iphetang tsa ho ngola converter bakeng sa tfstate ho tf. Bakeng sa ba e-so ka ba bala tfstate, ke JSON, empa e khethehile.
Mona ke likarolo tsa eona tsa bohlokoa

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

Ho na le:
1. id - khoele
2. metadata - lenane la boholo ba 1 mme ho eona ntho e nang le masimo a hlalositsoeng ka tlase
3. spec - hash ea boholo ba 1 le senotlolo, bohlokoa ho eona
Ka bokhutšoanyane, sebopeho se monate, ntho e 'ngoe le e' ngoe e ka ba maemo a 'maloa a tebileng

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

Ka kakaretso, haeba mang kapa mang a batla bothata ba lenaneo bakeng sa lipuisano, ba kope feela hore ba ngole mohlahlobi oa mosebetsi ona :)
Ka mor'a boiteko bo bongata ba ho ngola parser ntle le likokoana-hloko, ke fumane karolo ea eona ka khoutu ea terraform, le karolo ea bohlokoa ka ho fetisisa. Mme ntho e nngwe le e nngwe e ne e bonahala e sebetsa hantle

Boiteko ba boraro
bafani ba terraform ke li-binaries tse nang le khoutu e nang le lisebelisoa tsohle le mabaka a ho sebetsa le API ea leru. Leru le leng le le leng le na le mofani oa lona mme terraform ka boeona e ba bitsa feela ka protocol ea eona ea RPC lipakeng tsa lits'ebetso tse peli.
Joale ke nkile qeto ea ho ikopanya le bafani ba terraform ka kotloloho ka mehala ea RPC. E hlahile hantle mme e entse hore ho khonehe ho fetola bafani ba terraform ho ba bacha le ho fumana likarolo tse ncha ntle le ho fetola khoutu. Ho boetse hoa fumaneha hore ha se masimo ohle a tfstate a lokelang ho ba tf, empa u ka tseba joang? Botsa mofani oa hau feela ka sena. Eaba litšoantšo tse manyala tse hlephisang boitšoaro tsa ho bokella lipolelo tse tloaelehileng li qala, ho batla masimo ka hare ho tfstate maemong ohle ka botebo.

Qetellong, re fumane sesebelisoa sa bohlokoa sa CLI se nang le lisebelisoa tse tloaelehileng bakeng sa bafani bohle ba terraform mme o ka eketsa e ncha habonolo. Hape, ho eketsa lisebelisoa ho nka khoutu e nyane. Hape le mefuta eohle ea lintho tse molemo tse kang likamano pakeng tsa lisebelisoa. Ke ’nete hore ho ne ho e-na le mathata a mangata a fapaneng a ke keng a hlalosoa kaofela.
Ke ile ka reha phoofolo eo lebitso la Terrafomer.

Qetellong

Re sebelisa Terrafomer, re hlahisitse mela e likete tse 500-700 tsa khoutu ea tf + tfstate ho tloha marung a mabeli. Re khonne ho nka lintho tsa lefa mme ra qala ho li ama feela ka terraform, joalo ka lits'ebetsong tse ntle ka ho fetisisa joalo ka mehopolo ea khoutu. Ke boselamose feela ha o nka leru le leholo mme o le amohela ka sehlopha ka mokhoa oa lifaele tsa basebetsi ba terraform. Ebe joale grep/replace/git joalo-joalo.

Ke ile ka e oma mme ka e hlophisa, ka fumana tumello. E lokollotsoe ho GitHub bakeng sa motho e mong le e mong ka Labone (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
E se e amohetse linaleli tse 600, likopo tse 2 tsa ho hula bakeng sa ho eketsa tšehetso bakeng sa openstack le kubernetes. Maikutlo a matle. Ka kakaretso, morero ona o na le thuso ho batho
Ke eletsa e mong le e mong ea batlang ho qala ho sebetsa le Terraform mme a se ke a ngola ntho e 'ngoe le e' ngoe bakeng sa sena.
Ke tla thabela ho hula likopo, litaba, linaleli.

Tsebiso
Terraformer - Infrastructure To Code

Source: www.habr.com

Eketsa ka tlhaloso