Terraformer - Infrastructure Ad Code

Terraformer - Infrastructure Ad Code
Tibi dicere velim de novo CLI instrumento quod scripseram ad solvendum vetus problema.

quaestio

Terraforma vexillum diu in communitate Devops/Cloud/IT fuit. Res valde commoda et utilis est ad tractandum cum codice infrastructurae. Deliciae sunt multae in Terraform, totidemque tridentes, cultri ac rastri.
Cum Terraformi commodissimum est novas res creandi ac deinde administrare, mutare vel delere. Quid faciant isti qui habent infrastructuram ingentem in nube et non per Terraformam creatam? Totam nubem rescribere et recreare quodammodo carum et tutum est.
Hanc quaestionem in 2 jobs incidi, exemplum simplicissimum est cum omnia in forma imaginum formarum in Git esse vis, sed 250+ situlas habes et multum est ea manu scribere in terraform.
Sunt exitus cum 2014 in terrafom quae clausa est anno 2016 cum spe importari potest.

Fere omnia ut in pictura solum a dextro ad sinistrum

Admonitiones: Auctor in Russia non vivit propter dimidiam vitam suam et pauca scribit Russiae. Orthographiam errores cave.

Solutions

1. Sunt parata facta et solutiones antiquae pro AWS terraforming. Cum 250+ situla mea per eam obtinere conabar, intellexi omnia ibi mala esse. AWS multam novarum optionum iamdudum introduxit, sed terraformatio de illis et generatim non scit rubinum Formula spectat raris. Post II ad vesperam Misi Peto viverra ibi plura addere et feriri talem solutionem omnino non esse idoneam.
Quomodo opera terraformans: accipit notitia ex AWS SDK et generat tf et tfstate per exemplum.
Sunt 3 problemata hic:
1. Semper TARDO in updates
2. t files aliquando egredietur confringetur
3Β° separatim colligitur ex tf et non semper confluunt
In genere, difficile est consequi exitum in quo dicit `planum terraform' nullas mutationes esse

2. `terraformis import` est constructum in imperio in terraform. Quomodo operatur?
Inanem TF scribes cum nomine ac specie subsidii, tum `terraformi import` currite et subsidii ID transite. provisor terraformes contactus, notitias accipit et tabellam tfstate facit.
Sunt 3 problemata hic:
1. Tantum accipis fasciculum tfstate, et tf vacuum est, debes manually scribere vel ex tfstate convertere.
2. Potest tantum una ope laborare nec omnes facultates sustinet. Et quid iterum faciam cum 250+ situlis?
3. Opus est cognoscere ID facultatum, id est, involvere debes in codice qui indicem opum habet
In genere, effectus est partialis et bene non scandens

meum consilium

requisita:
1. Facultates creandi tf et tfstate lima pro opibus. Exempli gratia, omnia situla/securitatis globi/load librarii depone et illud `terraformem plan`m reddidit nullas mutationes.
2. Opus est tibi 2 GCP + AWS nubes
3. Solutio Globalis quae facilis est ad omne tempus renovandum nec tempus terendo in singulis subsidiis pro 3 diebus laboris
4. Patefacio hoc fac - omnes eandem quaestionem habent

Lingua Ire est cur eam amo, et bibliothecam habet ad creandos HCL lima quae in terraform+ adhibetur multum codicis in terraformi quae utilis esse potest.

semita

Primum conatus
Simplex poema coepi. Nubes per SDK contingentes pro subsidio requisito et in agros ad terraformes convertens. Conatus statim in coetus securitatis mortuus est quia non sicut 1.5 dies convertendi solum coetus securitatis (et multae facultates sunt). Diu et agri mutari possunt/addiderunt

Secundus conatus
Ex idea descriptus hic. Sumite et converte tfstate ad tf. Ibi omnes notitiae et agri idem sunt. Quam ut plenam tfstatem multis opum?? Haec ubi `terraforma refresh` praecepto succurrit. terraform accipit omnes facultates in tfstate et, per ID, extrahit data in illis et scribit omnia in tfstate. Hoc est, inanem tfstatem crea cum nominibus tantum et IDs, curre `terraform' reficite et tunc plenas tfstates obtine. euge!
Nunc faciamus recursivam pornographiam scribendi converter pro tfstate ad tf. Nam qui numquam legunt tfstate, is est JSon, sed proprius.
Hic est eius pars magna attributa

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

Est:
1. id - string
2. metadata - ordinatae magnitudinis 1 et in ea objectum cum agris de quo infra describitur
3. spec - Nullam magnitudinis 1 et clavis, valorem in ea
In summa, forma fun, omnia possunt esse plures gradus profundi

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

In genere, si quis quaestionem programmandi ad colloquium volet, roga tantum ut parser hoc negotium scribat :)
Post multa conamina scribere parser sine cimicibus, partem eius inveni in codice terraformi, et potissimam partem. Et omnia bene videbantur operari

attentare tribus
Provisores terraformes sunt binarii qui codicem continent cum omnibus facultatibus et logicis ad operandum cum nube API. Quaelibet nubes suum provisorem habet et ipsa terraforme solum eas vocat per RPC protocollum suum inter duos processus.
Nunc statuimus ut provisoribus terraformibus contactum directe per RPC vocat. Contigit pulchre et effecit ut provisoribus terraformibus novas mutaret et novas formas sine codice immutaret. Etiam evenit ut non omnes agri in tfstate sint in tf, sed quomodo inveneris? Quere modo provisorem tuum de hoc. Deinde alia pornographia recursiva vocum regularium conveniendi incepit, quaerens agros intra tfstatem in omnibus gradibus profunditatis.

In fine, utilem habuimus instrumentum CLI, quod commune habet infrastructuram pro omnibus provisoribus terraformibus et facile potes unum novum addere. Item libellus codicis additis facultatibus capit. Plus omnibus bonis, ut nexus inter facultates. Nimirum multae erant quaestiones diversae quae omnia describi non possunt.
Animal nominavi Terrafomer.

ultimo

Using Terrafomer, 500-700 milia linearum ex tf+tfstate codice e duabus nubibus generavimus. Legatos res capere potuimus et eas tantum per terraformes tangere incipimus, sicut in optima infrastructura sicut in codice notiones. Magica iusta est cum ingentem nubem acceperis eamque per team in forma lima operariorum terraformi accipias. Et tunc grep/repone/git et cetera.

Ego pexi et posui, ut permisissem. Dimissus in GitHub pro omnibus die Iovis (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
Iam 600 stellae receptae, 2 petitiones trahere ut subsidium aperturae et kubernetes augerent. Bonum responsum. In genere, consilium est utile populo
Suadeo omnes qui cum Terraform operari vult incipere nec ad hoc omnia rescribere.
Exultabo precibus trahere, proventus, astra.

demo
Terraformer - Infrastructure Ad Code

Source: www.habr.com