Terraformer - Fotodrafitrasa ho an'ny Code

Terraformer - Fotodrafitrasa ho an'ny Code
Te-hilaza aminao momba ny fitaovana CLI vaovao nosoratako aho hamahana olana taloha.

olana

Efa ela ny Terraform no fenitra ao amin'ny vondrom-piarahamonina Devops/Cloud/IT. Ny zavatra dia tena mety sy ilaina amin'ny fiatrehana fotodrafitrasa toy ny code. Betsaka ny fahafinaretana ao amin'ny Terraform ary koa ny forks maro, antsy maranitra ary raike.
Miaraka amin'ny Terraform dia tena mety ny mamorona zava-baovao ary avy eo mitantana, manova na mamafa azy ireo. Inona no tokony hataon'ireo manana fotodrafitrasa goavana ao amin'ny rahona ary tsy noforonina tamin'ny Terraform? Ny fanoratana sy ny famoronana indray ny rahona manontolo dia lafo sy tsy azo antoka.
Nisedra ity olana ity tamin'ny asa 2 aho, ny ohatra tsotra indrindra dia rehefa tianao ny zavatra rehetra ho ao amin'ny Git amin'ny endrika rakitra terraform, saingy manana siny 250+ ianao ary betsaka ny manoratra azy ireo amin'ny terraform amin'ny tanana.
Misy olana nanomboka tamin'ny 2014 tany amin'ny terrafom izay nikatona tamin'ny 2016 miaraka amin'ny fanantenana fa hisy fanafarana.

Amin'ny ankapobeny, ny zava-drehetra dia toy ny eo amin'ny sary ihany avy eo ankavanana miankavia

Fampitandremana: Tsy mipetraka any Rosia mandritra ny antsasaky ny androm-piainany ny mpanoratra ary manoratra kely amin'ny teny Rosiana. Tandremo sao diso tsipelina.

vahaolana

1. Misy vahaolana efa vita sy taloha ho an'ny AWS terraforming. Rehefa nanandrana namoaka ny siny 250+ aho, dia hitako fa ratsy ny zava-drehetra tao. Ny AWS dia efa ela no nampiditra safidy vaovao maro, saingy ny terraforming dia tsy mahalala momba azy ireo ary amin'ny ankapobeny dia robina ny môdely toa zara. Rehefa afaka 2 ora hariva dia nandefa Fangatahana sintonina mba hanampiana endri-javatra bebe kokoa ao ary nahatsapa fa tsy mety mihitsy ny vahaolana toy izany.
Ny fomba fiasan'ny terraforming: maka angon-drakitra avy amin'ny AWS SDK izy ary miteraka tf sy tfstate amin'ny alàlan'ny môdely.
Misy olana 3 eto:
1. Hisy foana ny fahatarana amin'ny fanavaozana
2. Tf rakitra indraindray mivoaka simba
3. Tfstate dia angonina misaraka amin'ny tf ary tsy mitambatra foana
Amin'ny ankapobeny dia sarotra ny mahazo vokatra izay lazain'ny `drafitry ny terraform' fa tsy misy fiovana

2. Ny `terraform import' dia baiko naorina ao amin'ny terraform. Ahoana no fiasan'izy io?
Manoratra rakitra TF tsy misy na inona na inona miaraka amin'ny anarana sy karazana loharano ianao, dia mandehana `terraform import` ary ampitao ny ID loharano. terraform dia mifandray amin'ny mpamatsy, mandray ny angon-drakitra ary manao rakitra tfstate.
Misy olana 3 eto:
1. Tsy mahazo afa-tsy rakitra tfstate izahay, ary foana ny tf, mila manoratra azy amin'ny tanana ianao na manova azy amin'ny tfstate
2. Tsy afaka miasa afa-tsy amin'ny loharano iray isaky ny mandeha ary tsy manohana ny loharano rehetra. Ary inona indray no tokony hataoko amin'ny siny 250+?
3. Mila mahafantatra ny ID an'ny loharano ianao - izany hoe mila mametaka azy amin'ny code izay mahazo ny lisitry ny loharano.
Amin'ny ankapobeny, ampahany ny vokatra ary tsy mirefy tsara

Ny fanapahan-kevitro

fepetra takiana:
1. Fahaizana mamorona rakitra tf sy tfstate ho an'ny loharanon-karena. Ohatra, alaivo ny siny rehetra/vondrona fiarovana/mpandanja entana ary niverina ilay `drafitra terraform` fa tsy misy fiovana.
2. Mila rahona GCP + AWS 2 ianao
3. Vahaolana manerantany mora havaozina isaky ny mandeha ary tsy mandany fotoana amin'ny loharano tsirairay mandritra ny 3 andro fiasana
4. Ataovy Open Source - manana olana mitovy ny rehetra

Ny fiteny Go no antony itiavako azy, ary manana tranomboky hamoronana rakitra HCL izay ampiasaina amin'ny terraform + code be dia be amin'ny terraform izay mety ilaina.

lalana

Andramo aloha
Nanomboka tamin'ny dikan-teny tsotra aho. Mifandraisa amin'ny rahona amin'ny alàlan'ny SDK ho an'ny loharano ilaina ary mamadika azy ho saha ho an'ny terraform. Namoy ny ainy avy hatrany ilay andrana tamin'ny vondrona fiarovana satria tsy tiako ny 1.5 andro mba hanovana ny vondrona fiarovana ihany (ary misy loharano maro). Nandritra ny fotoana lava dia azo ovaina/ampiana ny saha

Andrana faharoa
Mifototra amin’ilay hevitra voalaza eto. Raiso fotsiny ary avadika tfstate ho tf. Ny angon-drakitra rehetra dia eo ary mitovy ny saha. Ahoana no ahazoana tfstate feno ho an'ny loharano maro?? Teo no nanavotra ny baiko `terraform refresh`. terraform dia maka ny loharano rehetra ao amin'ny tfstate ary, amin'ny ID, dia mamoaka angon-drakitra momba azy ireo ary manoratra ny zava-drehetra amin'ny tfstate. Izany hoe, mamorona tfstate tsy misy afa-tsy anarana sy ID, mandehana `terraform refresh` ary avy eo dia mahazo tfstates feno. Hooray!
Andeha isika izao hanao ny pôrnôgrafia miverimberina amin'ny fanoratana mpanova ho an'ny tfstate ho tf. Ho an'ireo izay tsy mbola namaky tfstate, dia JSON, fa manokana.
Ireto ny toetra mampiavaka azy

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

Misy:
1. id - tady
2. metadata - laharan'ny habe 1 ary ao anatiny dia zavatra misy saha izay voalaza etsy ambany
3. spec - hash amin'ny habeny 1 sy ny fanalahidy, sanda ao anatiny
Raha fintinina, endrika mahafinaritra, ny zava-drehetra dia mety ho ambaratonga maromaro

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

Amin'ny ankapobeny, raha misy olona maniry olana amin'ny fandaharana amin'ny tafatafa dia angataho izy ireo hanoratra parser ho an'ity asa ity :)
Taorian'ny fanandramana maro hanoratra parser tsy misy bibikely, dia nahita ampahany tamin'izany tao amin'ny code terraform aho, ary ny ampahany lehibe indrindra. Ary toa nandeha tsara ny zava-drehetra

Andrana telo
Ny mpamatsy terraform dia binary izay misy kaody miaraka amin'ny loharano sy lojika rehetra amin'ny fiasana amin'ny cloud API. Ny rahona tsirairay dia manana mpamatsy azy manokana ary ny terraform dia miantso azy ireo amin'ny alàlan'ny protocol RPC eo anelanelan'ny dingana roa.
Izao aho dia nanapa-kevitra ny hifandray mivantana amin'ireo mpamatsy terraform amin'ny alàlan'ny antso RPC. Nivoaka tsara izany ary nahafahana nanova ny mpanome terraform amin'ny vaovao ary mahazo endri-javatra vaovao tsy manova ny code. Hita koa fa tsy tokony ho ao amin'ny tf daholo ny sehatra rehetra ao amin'ny tfstate, fa ahoana no hahafantaranao? Anontanio fotsiny ny mpamatsy anao momba izany. Avy eo dia nanomboka ny pôrnôgrafia miverimberina indray amin'ny fanangonana fitenenana mahazatra, nikaroka ireo saha ao anatin'ny tfstate amin'ny ambaratonga rehetra amin'ny lalindalina.

Tamin'ny farany dia nahazo fitaovana CLI mahasoa izahay izay manana fotodrafitrasa iraisana ho an'ny mpamatsy terraform rehetra ary afaka manampy vaovao vaovao ianao. Ankoatra izany, mila code kely ny fampidirana loharano. Miampy ireo karazan-tsoa rehetra toy ny fifandraisana eo amin'ny loharanon-karena. Mazava ho azy fa nisy olana maro samihafa izay tsy azo faritana daholo.
Nomeko anarana hoe Terrafomer ilay biby.

hitranga amin'ny farany

Tamin'ny fampiasana Terrafomer dia namokatra andalana 500-700 arivo tf + tfstate code avy amin'ny rahona roa. Afaka naka zavatra lova izahay ary nanomboka nikasika azy ireo tamin'ny alàlan'ny terraform, toy ny ao amin'ny fotodrafitrasa tsara indrindra toy ny hevitra kaody. Mahagaga fotsiny izany rehefa maka rahona lehibe ianao ary mandray izany amin'ny alàlan'ny ekipa amin'ny endrika rakitra mpiasa terraform. Ary avy eo grep/replace/git sy ny sisa.

Nobangako ilay izy ary nalamina, nahazo alalana. Navoaka tao amin'ny GitHub ho an'ny rehetra ny alakamisy (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
Efa nahazo kintana 600, fangatahana fisintonana 2 hanampiana fanohanana ho an'ny openstack sy kubernetes. Hevitra tsara. Amin'ny ankapobeny, mahasoa ny olona ny tetikasa
Manoro hevitra ny rehetra izay te hanomboka hiasa amin'ny Terraform aho fa tsy hanoratra ny zava-drehetra amin'izany.
Ho faly aho hisintona fangatahana, olana, kintana.

Demo
Terraformer - Fotodrafitrasa ho an'ny Code

Source: www.habr.com

Add a comment