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
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
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
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).
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
Source: www.habr.com