Terraformer - Atina'e I le Code

Terraformer - Atina'e I le Code
Ou te fia taʻu atu ia te oe le meafaigaluega CLI fou na ou tusia e foia ai se faafitauli tuai.

faafitauli

Ua leva ona avea Terraform ma tulaga masani i le Devops/Cloud/IT community. O le mea e faigofie tele ma aoga mo le faʻatautaia o atinaʻe e pei o le code. E tele mea fiafia i Terraform faʻapea foʻi ma le tele o tui, naifi maʻai ma salu.
Faatasi ai ma Terraform e matua faigofie lava ona fatuina mea fou ona pulea lea, suia pe tape. O le a le mea e tatau ona faia e i latou o loʻo i ai le tele o atinaʻe i le ao ae le o faia e ala i Terraform? O le toe tusia ma le toe faia o le ao atoa e taugata ma le saogalemu.
Na ou feagai ma lenei faʻafitauli i 2 galuega, o le faʻataʻitaʻiga sili ona faigofie o le taimi e te manaʻo ai ia i ai mea uma i Git i le tulaga o faila faila, ae o loʻo ia te oe 250+ pakete ma e tele naua e tusi i le terraform i le lima.
o loo i ai mataupu talu mai le 2014 i le fanua lea na tapunia i le 2016 ma le faʻamoemoe o le ai ai le faʻaulufale mai.

I se tulaga lautele, o mea uma lava e pei o le ata mai le taumatau i le agavale

Lapataiga: E le nofo le tusitala i Rusia mo le afa o lona olaga ma e itiiti lana tusi i le gagana Rusia. Faaeteete i mea sese o le sipelaga.

Fofo

1. O loʻo i ai ni fofo tuai mo le AWS fa'afanua. Ina ua ou taumafai e aumai aʻu pakete 250+, na ou iloa ai ua leaga mea uma iina. AWS ua leva ona faʻalauiloaina le tele o filifiliga fou, ae e le iloa e le terraforming e uiga ia i latou ma i se tulaga lautele o le ruby o le mamanu e foliga mai e seasea. Ina ua uma le 2 i le afiafi na ou auina atu Toso talosaga e faʻaopoopo atili faʻamatalaga iina ma iloa ai o sea fofo e le fetaui.
E fa'afefea ona fa'aogaina le terraforming: e mana'omia fa'amaumauga mai le AWS SDK ma fa'atupuina le tf ma le tfstate e ala i se fa'ata'ita'iga.
E 3 fa'afitauli iinei:
1. O le ai ai pea le tuai i faʻafouga
2. tf faila i nisi taimi e sau i fafo malepe
3. tfstate e aoina ese mai le tf ma e le fa'atasi i taimi uma
I se tulaga lautele, e faigata ona maua se fa'ai'uga e fai mai ai le 'terraform plan' e leai ni suiga

2. O le 'fa'aulufale mai fanua' o se fa'atonuga fa'apipi'i i totonu o le fanua. E faapefea ona aoga?
E te tusia se faila TF gaogao ma le igoa ma le ituaiga o punaoa, ona ta'e lea o le 'terraform import' ma pasi le ID punaoa. terraform fa'afeso'ota'i le kamupani, maua fa'amaumauga ma fai se faila tfstate.
E 3 fa'afitauli iinei:
1. Na'o matou maua se faila tfstate, ma o le tf e gaogao, e tatau ona e tusia ma le lima pe liliu mai le tfstate
2. E na'o le tasi punaoa e mafai ona galue i le taimi ma e le lagolagoina uma punaoa. Ae o le a le mea e tatau ona ou toe faia i le 250+ pakete?
3. E tatau ona e iloa le ID o punaoa - o lona uiga, e tatau ona e afifi i le code e maua ai le lisi o punaoa.
I se tulaga lautele, o le taunuuga o se vaega ma e le lelei le fua

O la'u filifiliga

Manaoga:
1. Avanoa e fatu ai faila tf ma tfstate mo punaoa. Mo se fa'ata'ita'iga, la'u mai uma pakete/security group/load balancer ma le 'terraform plan' ua toe fo'i mai e leai ni suiga.
2. E te manaʻomia 2 GCP + AWS ao
3. Fofo faʻavaomalo e faigofie ona faʻafouina i taimi uma ma e le faʻaumatia taimi i punaoa taʻitasi mo le 3 aso o galuega
4. Fai Open Source - e tutusa uma le fa'afitauli o tagata uma

O le gagana Go o le mea lea ou te fiafia ai i ai, ma o loʻo i ai se faletusi mo le fatuina o faila HCL e faʻaaogaina i le terraform + le tele o code i terraform e mafai ona aoga.

ala

Muamua taumafaiga
Na ou amata i se faʻamatalaga faigofie. Fa'afeso'ota'i le ao e ala i le SDK mo puna'oa mana'omia ma fa'aliliuina i fanua mo fa'afanua. O le taumafaiga na mate vave i luga o le vaega saogalemu ona ou te le fiafia i le 1.5 aso e faʻaliliu naʻo le vaega saogalemu (ma e tele punaoa). Mo se taimi umi ona mafai lea ona suia / faʻaopoopo fanua

Taumafai lona lua
E faavae i le manatu ua faamatalaina iinei. Na'o le ave ma liliu le tfstate i le tf. O faʻamatalaga uma o loʻo i ai ma o fanua e tutusa. E fa'afefea ona maua le tfstate atoa mo le tele o punaoa?? O i'inei na sau ai le fa'atonuga 'terraform refresh' e laveai. terraform e ave uma punaoa i tfstate ma, e ala ile ID, toso mai faʻamatalaga i luga oi latou ma tusi mea uma ile tfstate. O lona uiga, fai se tfstate gaogao ma na'o igoa ma ID, ta'e 'terraform refresh' ona tatou maua ai lea o tfstates atoa. Talofa!
Se'i o tatou faia le ata mataga faifaipea o le tusiaina o se liliu mo le tfstate i le tf. Mo i latou e leʻi faitau i le tfstate, o le JSON, ae faʻapitoa.
O ona vaega taua uiga

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

E iai:
1. id - manoa
2. metadata - o se fa'asologa o le lapopoa 1 ma i totonu o se mea ma fanua o lo'o fa'amatalaina i lalo
3. spec - hash o le lapopoa 1 ma le ki, taua i totonu
I se faapuupuuga, o se faatulagaga malie, o mea uma e mafai ona tele ni tulaga loloto

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

I se tulaga lautele, afai e manaʻo se tasi i se faʻafitauli polokalame mo se faʻatalanoaga, naʻo le fai atu ia i latou e tusi se parser mo lenei galuega :)
Ina ua uma le tele o taumafaiga e tusi se parser e aunoa ma ni mea sese, na ou mauaina se vaega i le terraform code, ma le vaega sili ona taua. Ma sa foliga mai na lelei mea uma

Taumafaiga tolu
terraform providers o binaries o loʻo i ai faʻailoga ma punaoa uma ma faʻatatau mo le galulue ai ma le API ao. O ao taʻitasi e iai lana lava tagata e tuʻuina atu ma na o le terraform lava e valaʻauina i latou e ala i lana RPC protocol i le va o faiga e lua.
O lea la ua ou filifili e fa'afeso'ota'i sa'o le 'au'aunaga fa'anofoafale e ala i telefoni RPC. Na foliga matagofie ma mafai ai ona sui le terraform providers i mea fou ma maua ni foliga fou e aunoa ma le suia o le code. E aliali mai foi e le o fanua uma i le tfstate e tatau ona i ai i le tf, ae faʻafefea ona e iloa? Na'o le fesili i lau 'au'aunaga e uiga i lenei mea. Ona amata ai lea o se isi ponokalafi toe fa'aopoopoina o le fa'apotopotoina o fa'amatalaga masani, su'esu'e fanua i totonu o le setete i tulaga uma i le loloto.

I le faaiuga, ua matou maua se meafaigaluega aoga CLI o loʻo i ai se atinaʻe masani mo tagata uma e tuʻuina atu fanua ma e faigofie ona e faʻaopoopoina se mea fou. E le gata i lea, o le faʻaopoopoina o punaoa e manaʻomia ai se tulafono laiti. Fa'atasi ai ma ituaiga uma o mea lelei e pei o feso'ota'iga i le va o punaoa. Ioe, e tele faafitauli eseese e le mafai ona faamatalaina uma.
Sa ou faaigoaina le manu Terrafomer.

Faaiuga

I le faʻaaogaina o Terrafomer, na matou fatuina ai le 500-700 afe laina o le tf + tfstate code mai ao e lua. Na mafai ona matou ave measina ma amata ona pa'i atu ia i latou e ala i terraform, pei o mea sili ona lelei e pei o manatu code. E na o se togafiti faʻataulāitu pe a e ave se ao tele ma maua e ala i se 'au i foliga o faila tagata faigaluega terraform. Ona grep / sui / git ma isi.

Na ou selu i fafo ma faatulaga lelei, maua le faatagaga. Fa'ailoa ile GitHub mo tagata uma ile Aso Tofi (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
Ua uma ona maua 600 fetu, 2 toso talosaga mo le faʻaopoopoina o le lagolago mo openstack ma kubernetes. Manaia manatu faaalia. I se tulaga lautele, o le poloketi e aoga mo tagata
Ou te fautua atu i tagata uma e manaʻo e amata galulue ma Terraform ma aua le toe tusia mea uma mo lenei mea.
O le a ou fiafia e toso talosaga, mataupu, fetu.

Talofa
Terraformer - Atina'e I le Code

puna: www.habr.com

Faaopoopo i ai se faamatalaga