Ngawakilan infrastruktur salaku kode dina format téks anu tiasa diulang mangrupikeun prakték pangsaéna anu sederhana pikeun sistem anu henteu ngabutuhkeun rebab sareng beurit. prakték ieu boga ngaran -
Ngabandingkeun pangalaman sareng Terraform sareng CloudFormation
Sateuacan sumping ka
Terraform pikareueuseun
software béta
Terraform teu acan ngarilis versi 1.0 acan, nu mangrupakeun alesan alus teu make eta. Eta geus robah pisan saprak kuring mimiti nyobaan sorangan, tapi deui lajeng terraform apply
sering rusak saatos sababaraha apdet atanapi ngan ukur saatos sababaraha taun dianggo. Kuring bakal nyebutkeun yén "sagala geus béda ayeuna," tapi ... éta naon dulur sigana ngomong, teu? Aya parobihan anu teu cocog sareng versi sateuacana, sanaos aranjeunna cocog, bahkan sigana sintaksis sareng abstraksi toko sumber ayeuna mangrupikeun anu urang peryogikeun. Alatna sigana parantos langkung saé, tapi ... :-0
Di sisi anu sanés, AWS parantos ngalaksanakeun padamelan anu saé pikeun ngajaga kasaluyuan mundur. Ieu sigana kusabab jasa-jasa na sering diuji sacara saksama dina organisasi sareng ngan lajeng, diganti ngaranna, diterbitkeun. Janten "aranjeunna usaha keras" mangrupikeun pernyataan anu ngahinakeun. Ngajaga kasaluyuan mundur sareng API pikeun sistem anu variatif sareng kompleks sapertos AWS luar biasa sesah. Saha waé anu kedah ngajaga API umum anu dianggo salega-legana kedah ngartos kumaha sesahna pikeun ngalakukeunana salami mangtaun-taun. Tapi paripolah CloudFormation, dina mémori kuring, henteu kantos robih salami mangtaun-taun.
Nepungan suku... éta pélor
Sajauh kuring terang, ngahapus sumberdaya urang luar CloudFormation tumpukan ti tumpukan cf Anjeun teu mungkin. Sami leres sareng Terraform. Eta ngidinan Anjeun pikeun ngimpor sumberdaya aya kana tumpukan Anjeun. fungsi nu bisa disebutkeun endah, tapi kalawan kakuatan hébat asalna tanggung jawab hébat. Anjeun ngan perlu nambahkeun sumberdaya ka tumpukan, sarta bari anjeun gawé bareng tumpukan Anjeun, Anjeun teu bisa mupus atawa ngarobah sumberdaya ieu. Hiji poé éta backfired. Hiji dinten di Twitch, aya anu ngahaja ngimpor grup kaamanan AWS batur kana tumpukan Terraform sorangan bari henteu dugi ka kajahatan. Kuring diasupkeun sababaraha paréntah jeung ... grup kaamanan (sareng lalulintas asup) ngiles.
Terraform Agung
Pamulihan tina kaayaan teu lengkep
Kadang CloudFormation gagal lengkep transisi tina hiji kaayaan ka nu sejen. Dina waktos anu sami, anjeunna bakal nyobian uih deui ka anu sateuacana. Hanjakal, ieu teu salawasna mungkin. Bisa jadi rada pikasieuneun mun debug naon anu lumangsung engké - anjeun pernah nyaho naha CloudFormation bakal senang nu keur hacked - sanajan ngan pikeun ngalereskeun eta. Naha atanapi henteu bakal tiasa uih deui ka kaayaan sateuacana, anjeunna leres-leres henteu terang kumaha nangtukeun sareng, sacara standar, ngagantung sababaraha jam ngantosan mujijat.
Terraform, di sisi anu sanés, condong pulih tina transisi anu gagal langkung anggun sareng nawiskeun alat debugging canggih.
Parobihan anu langkung jelas kana kaayaan dokumén
"Oke, load balancer, anjeun ganti. Tapi kumaha?"
-insinyur hariwang, siap pencét tombol "nampi".
Kadang-kadang kuring kedah ngalakukeun sababaraha manipulasi sareng balancer beban dina tumpukan CloudFormation, sapertos nambihan nomer port atanapi ngarobih grup kaamanan. ClouFormation mintonkeun parobahan goréng. Abdi, dina pin sareng jarum, pariksa deui file yaml sapuluh kali pikeun mastikeun yén kuring henteu ngahapus naon waé anu diperyogikeun sareng henteu nambihan nanaon anu teu perlu.
Terraform langkung transparan dina hal ieu. Kadang-kadang anjeunna malah teuing transparan (baca: bangor). Untungna, vérsi pangénggalna kalebet tampilan parobihan anu ditingkatkeun ku kituna anjeun ayeuna tiasa ningali persis naon anu robih.
Kalenturan
Tulis software ka tukang.
Terus terang, ciri anu paling penting tina parangkat lunak umur panjang nyaéta kamampuan pikeun adaptasi kana parobahan. Tulis parangkat lunak naon waé mundur. Kuring paling sering nyieun kasalahan ku cara nyokot layanan "basajan", lajeng mimiti cram sagalana kana CloudFormation tunggal atawa tumpukan Terraform. Sarta tangtu, sababaraha bulan engké ieu wangsit yén kuring geus dipikaharti sagalana salah, sarta layanan ieu sabenerna mah basajan! Tur ayeuna kuring kudu kumaha bae megatkeun tumpukan badag kana komponén leutik. Nalika anjeun damel sareng CloudFormation, ieu ngan ukur tiasa dilakukeun ku ngadamel ulang tumpukan anu tos aya, tapi kuring henteu ngalakukeun ieu sareng database kuring. Terraform, di sisi anu sanésna, ngamungkinkeun pikeun ngabedah tumpukan sareng ngarobih kana bagian-bagian anu langkung alit.
Modul dina git
Ngabagikeun kode Terraform dina sababaraha tumpukan langkung gampang tibatan ngabagi kode CloudFormation. Kalayan Terraform, anjeun tiasa nempatkeun kode anjeun dina gudang git sareng ngaksésna nganggo kontrol versi semantik. Saha waé anu gaduh aksés kana gudang ieu tiasa nganggo deui kodeu anu dibagikeun. Sarimbag CloudFormation nyaeta S3, tapi teu boga kauntungan anu sarua, tur euweuh alesan naha urang kudu abandon git dina kahadean S3 pisan.
Organisasi tumuwuh sareng kamampuan ngabagi tumpukan umum ngahontal tingkat kritis. Terraform ngajadikeun ieu sadayana gampang sareng alami, sedengkeun CloudFormation bakal ngajantenkeun anjeun ngaluncat kalang sateuacan anjeun tiasa damel sapertos kieu.
Operasi salaku kode
"Hayu urang skripsi sareng oke."
-Insinyur 3 taun sateuacan nyiptakeun sapédah Terraform.
Lamun datang ka ngembangkeun software, Go atawa program Java teu ngan kode.
Kode salaku Code
Aya ogé infrastruktur anu dianggo.
Infrastruktur salaku Code
Tapi ti mana manéhna? Kumaha ngawaskeunana? Dimana kode anjeun cicing? Naha pamekar peryogi idin aksés?
Operasi sakumaha Code
Janten pamekar parangkat lunak sanés hartosna nyerat kode.
AWS sanes ngan hiji: Anjeun meureun make panyadia séjén. SignalFx, PagerDuty atanapi Github. Panginten anjeun gaduh server Jenkins internal pikeun CI / CD atanapi dasbor Grafana internal pikeun ngawaskeun. Infra salaku Code dipilih pikeun alesan béda, sarta masing-masing sarua pentingna pikeun sagalana patali software.
Nalika kuring damel di Twitch, kami ngagancangkeun jasa di jero sistem campuran Amazon sareng AWS. Urang churned kaluar sarta ngarojong loba microservices, ngaronjatkeun biaya operasional. Diskusi lumangsung sapertos kieu:
- Я: sial, éta loba sikep pikeun overclock hiji microservice. Kuring kedah nganggo sampah ieu pikeun nyiptakeun akun AWS (urang angkat ka 2 akun dina microservice), teras ieu kanggo nyetél panggeuing, ieu kanggo gudang kode, sareng ieu kanggo daptar email, teras ieu...
- Timbel: Hayu urang skrip na oke.
- Я: Oké, tapi naskah sorangan bakal robah. Perlu aya cara pikeun mariksa yén sadaya gizmos Amazon anu diwangun ieu parantos diropéa.
- Timbel: Sigana saé. Sarta kami bakal nulis naskah pikeun ieu.
- Я: Hebat! Sareng naskah sigana masih kedah nyetél parameter. Naha anjeunna bakal nampi aranjeunna?
- Timbel: Hayu anjeunna nyandak mana anjeunna indit!
- Я: Prosésna tiasa robih sareng kasaluyuan mundur bakal leungit. Sababaraha jenis kontrol versi semantis bakal diperlukeun.
- Timbel: Gagasan anu saé!
- Я: Parabot bisa dirobah sacara manual, di jero panganteur pamaké. Kami peryogi cara pikeun mariksa sareng ngalereskeun ieu.
…3 taun ti harita:
- Timbel: Sareng urang ngagaduhan terraform.
Moral carita nyaéta: sanajan anjeun sirah leuwih heels dina sagalana Amazon, Anjeun masih ngagunakeun hiji hal teu ti AWS, sarta jasa ieu boga kaayaan anu ngagunakeun basa konfigurasi pikeun ngajaga eta kaayaan singkronisasi.
CloudFormation lambda vs modul git terraform
lambda mangrupikeun solusi CloudFormation pikeun masalah logika khusus. Kalayan lambda anjeun tiasa
Abdi émut sakali kuring hoyong nyiptakeun panyebaran kanari pikeun lingkungan Elastis Beanstalk kalayan kasaimbangan beban klasik. Hal panggampangna pikeun ngalakukeun bakal nyieun hiji deployment kadua pikeun EB gigireun lingkungan produksi, nyandak eta undak salajengna: ngagabungkeun grup deployment kanaria skala otomatis jeung LB deployment kana lingkungan produksi. Sarta saprak Terraform ngagunakeun
Éta ngadeteksi drift langkung saé
Pastikeun kanyataanana cocog ekspektasi.
Kalayan Terraform anjeun gaduh kait siklus hirup anu langkung maju pikeun deteksi drift. Contona, anjeun ngasupkeun paréntah
CDK sareng masa depan CloudFormation
CloudFormation sesah pikeun ngatur skala ageung, cross-infrastruktur. Loba kasusah ieu dipikawanoh tur alat nu peryogi hal kawas
Sangkan Terraform teu nguciwakeun
Ieu "infrastruktur sakumaha kode a", sarta lain "salaku téks a".
kesan munggaran kuring ngeunaan Terraform éta rada goréng. Jigana mah ngan teu ngarti pendekatan. Ampir kabéh insinyur involuntarily nganggap éta salaku format téks nu kudu dirobah jadi infrastruktur nu dipikahoyong. ULAH KITU.
The truisms ngembangkeun software alus ogé dilarapkeun ka Terraform.
Kuring geus katempo loba prakték diadopsi nyieun kode alus keur dipaliré di Terraform. Anjeun parantos diajar mangtaun-taun janten programer anu saé. Entong nyerah pangalaman ieu kusabab anjeun damel sareng Terraform. The truisms ngembangkeun software alus dilarapkeun ka Terraform.
Kumaha kodeu teu tiasa didokumentasikeun?
Kuring parantos ningali tumpukan Terraform ageung kalayan henteu aya dokuméntasi. Kumaha anjeun tiasa nyerat kode dina halaman - henteu aya dokuméntasi? Tambahkeun dokuméntasi anu ngajelaskeun anjeun di Terraform (tekenan dina kecap "kode"), naha bagian ieu kacida pentingna, sarta naon eusina.
Kumaha urang tiasa nyebarkeun jasa éta sakali hiji utama badag () fungsi?
Kuring geus katempo pisan kompléks Terraform tumpukan dibere salaku modul tunggal. Naha urang henteu nyebarkeun parangkat lunak ku cara kieu? Naha urang ngabagi fungsi ageung kana anu langkung alit? Jawaban anu sami dilarapkeun ka Terraform. Upami modul anjeun ageung teuing, anjeun kedah ngarobih kana modul anu langkung alit.
Naha perusahaan anjeun henteu nganggo perpustakaan?
Kuring geus katempo kumaha insinyur, spinning up a proyék anyar ngagunakeun Terraform, stupidly nyalin-paste sapotong badag tina proyék séjén kana sorangan, lajeng tinkered kalawan aranjeunna nepi ka dimimitian gawé. Naha anjeun badé damel sapertos kieu kalayan kode "tempur" di perusahaan anjeun? Kami henteu ngan ukur nganggo perpustakaan. Sumuhun,
Naha anjeun henteu nganggo PEP8 atanapi gofmt?
Kaseueuran basa gaduh skéma pormat standar anu ditarima. Dina Python ieu PEP8. Dina Go - gofmt. Terraform gaduh sorangan: terraform fmt
. Ngarasakeun éta pikeun kaséhatan anjeun!
Naha anjeun badé nganggo React tanpa terang JavaScript?
modul Terraform tiasa simplify sababaraha bagian tina infrastruktur kompléks nu Anjeun jieun, tapi ieu lain hartosna yén anjeun moal bisa tinker kalawan eta pisan. Hoyong ngagunakeun Terraform leres tanpa ngartos sumber? Anjeun doomed: waktos bakal kaliwat, sarta anjeun moal pernah ngawasaan Terraform.
Naha anjeun coding sareng singleton atanapi suntikan dependensi?
Injeksi dependensi mangrupikeun prakték pangsaéna pikeun pamekaran parangkat lunak sareng langkung dipikaresep tibatan singleton. Kumaha ieu mangpaat dina Terraform? Kuring geus katempo modul Terraform nu gumantung kana kaayaan jauh. Gantina nulis modul nu nimba kaayaan jauh, nulis modul nu nyandak parameter. Lajeng lulus parameter ieu modul.
Naha perpustakaan anjeun ngalakukeun sapuluh hal anu saé atanapi hiji hal anu saé?
Perpustakaan anu paling saé dianggo nyaéta anu museurkeun kana hiji tugas anu aranjeunna lakukeun kalayan saé. Gantina nulis modul Terraform badag nu nyoba ngalakukeun sagalana sakaligus, ngawangun bagian tina aranjeunna anu ngalakukeun hiji hal ogé. Lajeng ngagabungkeun aranjeunna sakumaha diperlukeun.
Kumaha anjeun ngalakukeun parobahan perpustakaan tanpa kasaluyuan mundur?
A modul Terraform umum, kawas perpustakaan biasa, perlu kumaha bae komunikasi parobahan ka pamaké tanpa jadi mundur cocog. Éta ngaganggu nalika parobihan ieu kajantenan di perpustakaan, sareng éta ogé ngaganggu nalika parobihan anu teu cocog sareng mundur dilakukeun dina modul Terraform. Disarankeun ngagunakeun tag git sareng semver nalika nganggo modul Terraform.
Naha jasa produksi anjeun dijalankeun dina laptop anjeun atanapi di pusat data?
Hashicorp gaduh alat sapertos
Naha anjeun henteu nyerat tés?
Insinyur ngakuan yén kodeu kedah diuji, tapi aranjeunna nyalira sering hilap uji nalika damel sareng Terraform. Pikeun infrastruktur, ieu téh pinuh ku moments khianat. Saran abdi "nguji" atawa "nyieun conto" tumpukan ngagunakeun modul nu bisa deployed neuleu pikeun nguji salila CI / CD.
Terraform sareng microservices
Kahirupan sareng pupusna perusahaan jasa mikro gumantung kana kagancangan, inovasi, sareng gangguan tina workstacks microservice énggal.
Aspék négatip paling umum pakait sareng arsitéktur microservice, jeung nu teu bisa ngaleungitkeun, patali jeung karya, teu kode. Upami anjeun nganggap Terraform ngan ukur cara pikeun ngajadikeun otomatis ngan sisi infrastruktur tina arsitéktur microservices, maka anjeun leungiteun kauntungan anu leres tina sistem éta. Ayeuna parantos
sumber: www.habr.com