Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Seueur jalma anu terang sareng ngagunakeun Terraform dina padamelan sapopoé, tapi prakték pangsaéna pikeun éta henteu acan kabentuk. Tiap tim kudu invent pendekatan jeung métode sorangan.

Infrastruktur anjeun ampir pasti dimimitian saderhana: sababaraha sumber + sababaraha pamekar. Kana waktu, éta tumuwuh dina sagala sorts arah. Naha anjeun mendakan cara pikeun ngagolongkeun sumber kana modul Terraform, ngatur kode kana polder, sareng naon deui anu tiasa salah? (kecap panungtungan kawentar)

Waktos pas sareng anjeun ngarasa yén infrastruktur anjeun mangrupikeun piaraan énggal anjeun, tapi naha? Anjeun hariwang ngeunaan parobihan anu teu tiasa dijelaskeun dina infrastruktur, anjeun sieun nyabak infrastruktur sareng kode - salaku hasilna, anjeun ngalambatkeun fungsionalitas énggal atanapi ngirangan kualitas...

Saatos tilu taun ngokolakeun kumpulan modul komunitas Terraform pikeun AWS on Github sareng pangropéa jangka panjang Terraform dina produksi, Anton Babenko siap ngabagi pangalamanana: kumaha cara nyerat modul TF supados henteu cilaka di hareup.

Nepi ka tungtun taun ceramah, pamilon bakal leuwih akrab jeung prinsip manajemén sumberdaya di Terraform, prakték pangalusna pakait sareng modul dina Terraform, sarta sababaraha prinsip integrasi kontinyu pakait sareng manajemén infrastruktur.

Bantahan: Kuring dicatet yén laporan ieu tanggal Nopémber 2018-2 taun geus kaliwat. Versi Terraform 0.11 anu dibahas dina laporan henteu didukung deui. Sapanjang 2 taun katukang, 2 sékrési énggal parantos dileupaskeun, anu ngandung seueur inovasi, perbaikan sareng parobihan. Mangga nengetan ieu sareng pariksa dokuméntasi.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Rujukan:

Nami abdi Anton Babenko. Sababaraha anjeun meureun dipaké kode I wrote. Kuring ayeuna bakal nyarios ngeunaan ieu kalayan langkung percaya diri ti kantos, sabab kuring ngagaduhan aksés kana statistik.

Kuring damel di Terraform sareng parantos janten pamilon aktif sareng kontributor kana sajumlah ageung proyék open source anu aya hubunganana sareng Terraform sareng Amazon ti saprak 2015.

Saprak harita kuring geus ditulis cukup kode pikeun nempatkeun eta dina cara metot. Sareng kuring bakal nyobian nyarioskeun ka anjeun ngeunaan ieu ayeuna.

Kuring bakal ngobrol ngeunaan intricacies sarta spésifik gawé bareng Terraform. Tapi éta sanés topik HighLoad. Tur ayeuna anjeun bakal ngarti naha.

Kana waktu, kuring mimiti nulis modul Terraform. Pamaké wrote patarosan, abdi rewrote aranjeunna. Teras kuring nyerat sababaraha utilitas pikeun pormat kodeu nganggo hook pre-commit, jsb.

Aya loba proyék metot. Kuring resep generasi kode sabab kuring resep komputer pikeun ngalakukeun beuki loba karya pikeun kuring jeung programmer, jadi Kuring ayeuna dipake dina generator kode Terraform tina diagram visual. Panginten sababaraha anjeun parantos ningali aranjeunna. Ieu kotak geulis jeung panah. Sareng kuring pikir éta saé upami anjeun tiasa ngaklik tombol "Ékspor" sareng kéngingkeun sadayana salaku kode.

Abdi ti Ukraina. Kuring geus cicing di Norwégia salila sababaraha taun.

Ogé, inpormasi pikeun laporan ieu dikumpulkeun ti jalma anu terang nami kuring sareng mendakan kuring dina jaringan sosial. Kuring ampir sok boga nickname sarua.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

https://github.com/terraform-aws-modules
https://registry.terraform.io/namespaces/terraform-aws-modules

Salaku kuring disebutkeun, Kami maintainer utama modul Terraform AWS, nu salah sahiji repositories pangbadagna di GitHub dimana urang boga imah modul keur tugas paling umum: VPC, Autoscaling, RDS.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng naon anu anjeun kadéngé ayeuna mangrupikeun anu paling dasar. Upami anjeun ragu yén anjeun ngartos naon Terraform, maka langkung saé nyéépkeun waktos anjeun di tempat sanés. Bakal aya seueur istilah téknis di dieu. Sareng kuring henteu ragu nyatakeun tingkat laporan anu paling luhur. Ieu ngandung harti yén kuring bisa ngobrol ngagunakeun sagala istilah mungkin tanpa loba katerangan.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Terraform muncul dina 2014 salaku utilitas anu ngamungkinkeun anjeun nyerat, ngarencanakeun sareng ngatur infrastruktur salaku kode. Konsep konci di dieu nyaéta "infrastruktur salaku kode."

Kabéh dokuméntasi, sakumaha ceuk kuring, ditulis dina terraform.io. Abdi ngarepkeun seueur jalma terang ngeunaan situs ieu sareng parantos maca dokuméntasi. Upami kitu, teras anjeun dina tempat anu leres.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ieu mangrupikeun file konfigurasi Terraform biasa, dimana urang mimiti ngartikeun sababaraha variabel.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Dina hal ieu urang nangtukeun "aws_region".

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Teras we ngajelaskeun sumber daya naon anu urang hoyong jieun.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Kami ngajalankeun sababaraha paréntah, khususna "terraform init" pikeun ngamuat katergantungan sareng panyadia.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng kami ngajalankeun paréntah "terraform nerapkeun" pikeun mariksa naha konfigurasi anu ditunjuk cocog sareng sumber daya anu kami ciptakeun. Kusabab kami henteu acan nyiptakeun nanaon sateuacanna, Terraform nyarankeun kami pikeun nyiptakeun sumber-sumber ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Urang mastikeun ieu. Kituna urang nyieun ember disebut seasnail.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Aya ogé sababaraha utilitas anu sami. Seueur anjeun anu nganggo Amazon terang AWS CloudFormation atanapi Google Cloud Deployment Manager atanapi Azure Resource Manager. Masing-masing gaduh palaksanaan sorangan tina sababaraha jinis pikeun ngatur sumber daya dina unggal panyadia awan umum ieu. Terraform hususna kapaké sabab ngamungkinkeun anjeun ngatur langkung ti 100 panyadia. (Salengkepna di dieu)

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Tujuan anu Terraform parantos diudag ti mimiti:

  • Terraform nyadiakeun view tunggal sumberdaya.
  • Ngidinan anjeun ngadukung sadaya platform modéren.
  • Sareng Terraform dirarancang ti mimiti salaku utilitas anu ngamungkinkeun anjeun ngarobih infrastruktur sacara aman sareng diprediksi.

Dina 2014, kecap "diprediksi" disada pisan mahiwal dina konteks ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Terraform mangrupikeun utilitas universal. Upami anjeun gaduh API, maka anjeun tiasa ngontrol sadayana:

  • Anjeun tiasa nganggo langkung ti 120 panyadia pikeun ngatur sadaya anu anjeun pikahoyong.
  • Contona, anjeun tiasa nganggo Terraform pikeun ngajelaskeun aksés ka repositori GitHub.
  • Anjeun malah tiasa ngadamel sareng nutup bug di Jira.
  • Anjeun tiasa ngatur métrik Relic Anyar.
  • Anjeun malah tiasa ngadamel file dina dropbox upami anjeun hoyong.

Ieu sadayana dihontal nganggo panyadia Terraform, anu ngagaduhan API kabuka anu tiasa dijelaskeun dina Go.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Hayu urang mimitian nganggo Terraform, maca sababaraha dokuméntasi dina situs, ningali sababaraha pidéo, sareng ngamimitian nyerat main.tf, sapertos anu kuring nunjukkeun dina slide sateuacana.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Jeung sagalana geus hébat, anjeun gaduh file nu nyiptakeun VPC a.

Upami anjeun hoyong ngadamel VPC, anjeun kedah netepkeun kira-kira 12 garis ieu. Jelaskeun daérah mana anu anjeun hoyong jieun, cidr_block alamat IP mana anu dianggo. Éta hungkul.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Alami, proyék bakal laun tumuwuh.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng anjeun bakal nambihan seueur barang énggal di dinya: sumber daya, sumber data, anjeun bakal ngahijikeun sareng panyadia énggal, ujug-ujug anjeun badé nganggo Terraform pikeun ngatur pangguna dina akun GitHub anjeun, jsb. Panyadia DNS, meuntas sadayana. Terraform ngajadikeun ieu gampang.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Hayu urang nempo conto di handap ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Anjeun laun-laun nambahkeun internet_gateway sabab anjeun hoyong sumberdaya ti VPC anjeun gaduh aksés internét. Ieu mangrupakeun ide nu sae.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

hasilna ieu main.tf:

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ieu bagian luhur main.tf.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ieu bagian handap main.tf.

Lajeng nambahkeun subnet. Dina waktos Anjeun hoyong tambahkeun gateways NAT, ruteu, routing tabel sarta kebat subnets séjén, anjeun moal 38 garis, tapi kira 200-300 garis.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Hartina, file main.tf anjeun laun-laun tumuwuh. Sareng sering jalma nempatkeun sadayana dina hiji file. 10-20 Kb muncul dina main.tf. Bayangkeun yén 10-20 Kb mangrupikeun eusi téks. Jeung sagalana disambungkeun ka sagalana. Ieu laun-laun jadi hésé pikeun digawé. 10-20 Kb mangrupikeun kasus pangguna anu saé, sakapeung langkung seueur. Jeung jalma teu salawasna mikir yén ieu téh goréng.

Sapertos dina program biasa, sanés infrastruktur salaku kode, urang biasa nganggo sababaraha kelas, bungkusan, modul, kelompok anu béda. Terraform ngamungkinkeun anjeun ngalakukeun hal anu sami.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

  • Kodeu ngembang.
  • Dependensi antara sumberdaya ogé tumuwuh.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sarta kami boga hébat, kabutuhan hébat. Urang ngarti yén urang moal tiasa hirup sapertos kieu deui. Kode kami janten ageung. 10-20 Kb téh, tangtosna, teu pisan vast, tapi urang ngobrol ngan ngeunaan tumpukan jaringan, ie anjeun geus ngan ditambahkeun sumberdaya jaringan. Urang teu ngobrol ngeunaan Aplikasi Beban Balancer, deployment ES klaster, Kubernetes, jeung sajabana, dimana 100 Kb bisa kalayan gampang weaved di. Upami anjeun nyerat sadayana ieu, anjeun bakal terang yén Terraform nyayogikeun modul Terraform.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Modul Terraform mangrupikeun konfigurasi Terraform mandiri anu diurus salaku grup. Éta sadayana anu anjeun kedah terang ngeunaan modul Terraform. Aranjeunna teu pinter pisan, aranjeunna teu ngidinan Anjeun pikeun nyieun sagala sambungan kompléks gumantung kana hal. Ieu sadayana tumiba dina taktak pamekar. Nyaéta, ieu ngan ukur sababaraha jinis konfigurasi Terraform anu anjeun parantos nyerat. Sareng anjeun ngan saukur tiasa nyauran éta salaku grup.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Janten urang nyobian ngartos kumaha urang bakal ngaoptimalkeun kode 10-20-30 Kb kami. Kami saeutik demi saeutik sadar yén urang kedah nganggo sababaraha modul.

Jinis modul munggaran anu anjeun tepang nyaéta modul sumberdaya. Aranjeunna teu ngartos naon infrastruktur anjeun, naon bisnis anjeun, dimana jeung naon kaayaanana. Ieu mangrupikeun modul anu kuring, sareng komunitas open source, administer, sareng anu kami teraskeun salaku blok wangunan awal pikeun infrastruktur anjeun.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Conto modul sumberdaya.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Lamun urang nelepon modul sumberdaya, urang tangtukeun ti jalur mana urang kudu ngamuat eusina.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Kami nunjukkeun versi mana anu urang hoyong unduh.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Urang lulus kebat argumen aya. Éta hungkul. Éta sadayana anu urang kedah terang nalika urang ngagunakeun modul ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Seueur jalma nganggap yén upami aranjeunna nganggo versi panganyarna, sadayana bakal stabil. Tapi henteu. Infrastrukturna kedah vérsi; urang kedah jelas ngajawab versi mana ieu atanapi komponén éta dipasang.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ieu kodeu anu aya di jero modul ieu. modul Kaamanan-grup. Di dieu ngagugulung nuju ka garis 640th. Nyiptakeun sumber kaamanan-croup di Amazon dina unggal konfigurasi anu mungkin mangrupikeun tugas anu teu pati penting. Teu cukup ngan saukur nyieun grup kaamanan sarta ngabejaan eta naon aturan pikeun lulus ka eta. Eta bakal basajan pisan. Aya sajuta larangan anu béda dina Amazon. Contona, upami anjeun nganggo Titik akhir VPC, daptar awalan, rupa-rupa API sarta nyoba ngagabungkeun sakabeh ieu kalawan sagalana sejenna, teras Terraform teu ngidinan Anjeun pikeun ngalakukeun ieu. Sareng API Amazon ogé henteu ngijinkeun ieu. Kituna, urang kudu nyumputkeun sagala logika dahsyat ieu dina modul jeung masihan kodeu pamaké nu kasampak kawas kieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Pamaké henteu kedah terang kumaha éta didamel di jero.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Jenis kadua modul, nu diwangun ku modul sumberdaya, geus ngajawab masalah anu leuwih lumaku pikeun anjeun bisnis. Sering ieu mangrupikeun tempat anu mangrupikeun penyuluhan Terraform sareng nyetél sababaraha nilai kaku pikeun tag, pikeun standar perusahaan. Anjeun oge bisa nambahkeun fungsionalitas aya nu Terraform ayeuna teu ngidinan Anjeun pikeun ngagunakeun. Ieu ayeuna. Ayeuna vérsi 0.11, anu badé janten jaman baheula. Tapi tetep, preprocessors, jsonnet, cookiecutter sareng seueur hal sanésna mangrupikeun mékanisme bantu anu kedah dianggo pikeun padamelan anu lengkep.

Salajengna kuring bakal nunjukkeun sababaraha conto ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Modul infrastruktur disebut dina cara anu sami.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sumber ti mana pikeun ngundeur eusi dituduhkeun.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sakumpulan nilai dilebetkeun sareng dilebetkeun kana modul ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Salajengna, di jero modul ieu, kebat modul sumberdaya disebut nyieun hiji VPC atawa Aplikasi Beban Balancer, atawa nyieun grup kaamanan atawa pikeun klaster Elastis Wadahna Service.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Aya dua jenis modul. Ieu penting pikeun ngarti sabab lolobana informasi Kuring geus dikelompokeun dina laporan ieu teu ditulis dina dokuméntasi.

Sareng dokuméntasi di Terraform ayeuna rada masalah sabab ngan ukur nyarios aya fitur ieu, anjeun tiasa nganggo éta. Tapi anjeunna henteu nyarios kumaha ngagunakeun fitur ieu, naha éta langkung saé ngagunakeunana. Ku alatan éta, jumlah anu kacida gedéna jalma nulis hal nu maranéhna teu bisa hirup kalawan.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Hayu urang tingali kumaha nulis modul ieu salajengna. Teras we bakal ningali kumaha nelepon aranjeunna sareng cara damel sareng kodeu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Pendaptaran Terraform - https://registry.terraform.io/

Tip #0 nyaéta pikeun henteu nyerat modul sumberdaya. Kalolobaan modul ieu geus ditulis pikeun anjeun. Sakumaha anu ceuk kuring, aranjeunna open source, aranjeunna henteu ngandung logika bisnis anjeun, aranjeunna henteu gaduh nilai hardcoded pikeun alamat IP, kecap akses, jsb. Modulna fléksibel pisan. Sarta eta geus paling dipikaresep geus ditulis. Aya loba modul pikeun sumberdaya ti Amazon. Ngeunaan 650. Sarta lolobana ti maranéhanana kualitas alus.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Dina conto ieu, aya anu sumping ka anjeun sareng nyarios, "Kuring hoyong tiasa ngatur pangkalan data. Jieun modul sangkan kuring bisa nyieun database". Jalma henteu terang rinci palaksanaan boh Amazon atanapi Terraform. Anjeunna ngan ukur nyarios: "Kuring hoyong ngatur MSSQL." Maksudna, urang hartosna yén éta bakal nelepon modul urang, lulus tipe mesin aya, sarta nunjukkeun zona waktu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng hiji jalma henteu kedah terang yén urang bakal nyiptakeun dua sumber anu béda dina modul ieu: hiji pikeun MSSQL, anu kadua pikeun anu sanés, ngan kusabab dina Terraform 0.11 anjeun teu tiasa netepkeun nilai zona waktos salaku pilihan.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng nalika kaluar tina modul ieu, jalma bakal tiasa nampi alamatna. Anjeunna moal terang ti mana pangkalan data, ti mana sumber kami nyiptakeun sadayana ieu sacara internal. Ieu mangrupikeun unsur anu penting pikeun nyumput. Sareng ieu manglaku henteu ngan ukur pikeun modul anu umum di open source, tapi ogé pikeun modul anu bakal anjeun tulis dina proyék sareng tim anjeun.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ieu mangrupikeun argumen anu kadua, anu penting pisan upami anjeun parantos lami nganggo Terraform. Anjeun gaduh gudang dimana anjeun nempatkeun sadaya modul Terraform anjeun pikeun perusahaan anjeun. Jeung éta rada normal nu leuwih waktos proyék ieu bakal tumuwuh nepi ka ukuran hiji atawa dua megabyte. Ieu sae.

Tapi masalahna nyaeta kumaha Terraform nelepon modul ieu. Salaku conto, upami anjeun nyauran modul pikeun nyiptakeun unggal pangguna individu, Terraform mimitina bakal ngamuat sadayana gudang teras napigasi ka folder dimana modul khusus éta ayana. Ku cara ieu anjeun bakal ngaunduh hiji megabyte unggal waktos. Upami anjeun ngatur 100 atanapi 200 pangguna, maka anjeun bakal ngaunduh 100 atanapi 200 megabyte, teras angkat ka folder éta. Janten sacara alami anjeun henteu hoyong ngaunduh sakumpulan barang unggal waktos anjeun pencét "Terraform init".

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

https://github.com/mbtproject/mbt

Aya dua solusi pikeun masalah ieu. Kahiji nyaeta ngagunakeun jalur relatif. Ku cara kieu anjeun nunjukkeun dina kode yén folder éta lokal (./). Sareng sateuacan anjeun ngaluncurkeun nanaon, anjeun ngalakukeun clone Git tina gudang ieu sacara lokal. Ku cara kieu anjeun ngalakukeun sakali.

Aya, tangtosna, loba downsides. Contona, anjeun teu bisa make versioning. Sarta ieu kadang hese hirup kalawan.

Solusi kadua. Upami anjeun gaduh seueur submodul sareng anjeun parantos gaduh sababaraha jinis pipa anu diadegkeun, teras aya proyék MBT, anu ngamungkinkeun anjeun pikeun ngumpulkeun seueur bungkusan anu béda tina monorepository sareng unggah kana S3. Ieu cara anu saé pisan. Ku kituna, file iam-user-1.0.0.zip bakal beuratna ngan 1 Kb, sabab kode pikeun nyieun sumberdaya ieu pisan leutik. Sarta eta bakal dianggo leuwih gancang.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Hayu urang ngobrol ngeunaan naon teu bisa dipaké dina modul.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Naha jahat ieu dina modul? Hal awon nyaeta nganggap pamaké. Anggap pangguna mangrupikeun pilihan auténtikasi panyadia anu tiasa dianggo ku jalma anu béda. Contona, urang sadaya bakal assimilate peran. Ieu ngandung harti yén Terraform bakal nyandak peran ieu. Teras sareng peran ieu bakal ngalaksanakeun tindakan anu sanés.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng anu jahat nyaéta upami Vasya resep nyambung ka Amazon dina hiji cara, contona, nganggo variabel lingkungan standar, sareng Petya resep ngagunakeun konci anu dibagikeun, anu anjeunna gaduh dina tempat anu rahasia, maka anjeun moal tiasa netepkeun duanana dina. Terraform. Sareng supados aranjeunna henteu ngalaman sangsara, henteu kedah nunjukkeun blok ieu dina modul. Ieu kedah dituduhkeun dina tingkat anu langkung luhur. Hartina, urang gaduh modul sumberdaya, modul infrastruktur sareng komposisi di luhur. Sareng ieu kedah dituduhkeun di tempat anu langkung luhur.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Kajahatan kadua nyaéta provisioner. Di dieu jahat teu jadi trivial, sabab lamun nulis kode sarta gawéna pikeun anjeun, mangka anjeun bisa mikir yén lamun gawéna, lajeng naha ngarobah éta.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Anu jahat nyaéta anjeun henteu salawasna ngontrol iraha panyadia ieu bakal diluncurkeun, mimitina. Sareng kadua, anjeun henteu ngontrol naon hartosna aws ec2, nyaéta ayeuna urang nyarioskeun Linux atanapi Windows. Janten anjeun moal tiasa nyerat hal anu bakal dianggo sami dina sistem operasi anu béda-béda atanapi pikeun kasus pangguna anu béda.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Conto anu paling umum, anu ogé dituduhkeun dina dokuméntasi resmi, nyaéta upami anjeun nyerat aws_instance sareng netepkeun sakumpulan argumen, maka teu aya anu lepat upami anjeun netepkeun provisioner "local-exec" didinya sareng ngajalankeun ansible- buku kaulinan.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Kanyataanna, enya, teu aya nu salah. Tapi sacara harfiah pas anjeun bakal nyadar yén hal lokal-exec ieu teu aya, contona, dina launch_configuration.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng nalika anjeun nganggo launch_configuration, sareng anjeun badé nyiptakeun grup autoscaling tina hiji conto, teras dina launch_configuration teu aya konsép "provisioner". Aya konsép "data pamaké".

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ku alatan éta, solusi anu langkung universal nyaéta ngagunakeun data pangguna. Sareng éta bakal diluncurkeun boh dina instansi sorangan, nalika instance dihurungkeun, atanapi dina data pangguna anu sami, nalika grup autoscaling nganggo launch_configuration ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Lamun masih hoyong ngajalankeun provisioner, sabab mangrupakeun komponén gluing, nalika hiji sumberdaya dijieun, dina momen anu anjeun kudu ngajalankeun provisioner Anjeun, paréntah Anjeun. Aya seueur kaayaan sapertos kitu.

Sareng sumber anu paling leres pikeun ieu disebut null_resource. Null_resource mangrupakeun sumberdaya dummy nu pernah sabenerna dijieun. Teu noél nanaon, euweuh API, euweuh autoscaling. Tapi ngidinan Anjeun pikeun ngadalikeun iraha bade ngajalankeun paréntah. Dina hal ieu, paréntah dijalankeun nalika nyiptakeun.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

link http://bit.ly/common-traits-in-terraform-modules

Aya sababaraha tanda. Kuring moal balik kana sagala tanda di jéntré hébat. Aya hiji artikel ngeunaan ieu. Tapi upami anjeun parantos damel sareng Terraform atanapi nganggo modul jalma sanés, maka anjeun sering perhatikeun yén seueur modul, sapertos kalolobaan kode dina open source, ditulis ku jalma pikeun kaperluan sorangan. Hiji lalaki nyeratna sareng ngarengsekeun masalahna. Kuring nyangkut eta dina GitHub, hayu eta hirup. Éta bakal hirup, tapi upami teu aya dokuméntasi sareng conto, maka teu aya anu bakal ngagunakeunana. Sareng upami teu aya pungsionalitas anu ngamungkinkeun anjeun pikeun ngabéréskeun sakedik langkung ti tugas khususna, maka teu aya anu bakal ngagunakeunana ogé. Aya seueur cara pikeun kaleungitan pangguna.

Upami anjeun hoyong nyerat hiji hal supados masarakat bakal ngagunakeunana, maka kuring nyarankeun nuturkeun tanda-tanda ieu.

Ieu mangrupikeun:

  • Dokuméntasi jeung conto.
  • fungsionalitas pinuh.
  • standar lumrah.
  • Kodeu beresih.
  • Tés.

Tés téh kaayaan béda sabab rada hésé nulis. Abdi langkung percanten kana dokuméntasi sareng conto.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Janten, urang tingali kumaha nyerat modul. Aya dua dalil. Anu kahiji, anu paling penting, henteu nyerat upami anjeun tiasa, sabab sakumpulan jalma parantos ngalaksanakeun tugas ieu sateuacan anjeun. Sareng kadua, upami anjeun masih mutuskeun, teras cobian henteu nganggo panyadia dina modul sareng provisioner.

Ieu mangrupikeun bagian abu tina dokuméntasi. Ayeuna anjeun tiasa mikir: "Aya anu teu jelas. Teu yakin." Tapi urang tingali dina genep bulan.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ayeuna hayu urang ngobrol ngeunaan kumaha carana nelepon modul ieu.

Urang ngarti yén kode urang tumuwuh kana waktu. Urang geus euweuh hiji file, urang geus boga 20 file. Éta sadayana dina hiji folder. Atawa meureun lima polder. Panginten urang mimiti ngarecahna dumasar kana daérah, ku sababaraha komponén. Teras we ngartos yen ayeuna urang gaduh sababaraha rudiments of sinkronisasi jeung orchestration. Nyaéta, urang kedah ngartos naon anu kedah urang laksanakeun upami urang ngarobih sumber daya jaringan, naon anu kedah urang laksanakeun sareng sesa sumber daya urang, kumaha nyababkeun katergantungan ieu, jsb.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Aya dua ekstrim. Ekstrim munggaran sadayana dina hiji. Kami gaduh hiji file master. Samentawis waktos, ieu mangrupikeun prakték pangsaéna resmi dina halaman wéb Terraform.

Tapi ayeuna ditulis salaku deprecated jeung dihapus. Kana waktu, komunitas Terraform sadar yén ieu tebih ti prakték pangalusna, sabab jalma mimiti ngagunakeun proyék dina cara béda. Sareng aya masalah. Contona, nalika urang daptar sadaya kagumantungan dina hiji tempat. Aya kaayaan nalika urang ngaklik "rencana Terraform" sareng dugi ka Terraform ngamutahirkeun kaayaan sadaya sumber daya, seueur waktos tiasa dijalankeun.

Seueur waktos, contona, 5 menit. Kanggo sababaraha ieu mangrupikeun waktos anu ageung. Kuring parantos ningali kasus dimana nyandak 15 menit. API AWS nyéépkeun 15 menit nyobian terang naon anu kajantenan sareng kaayaan unggal sumber. Ieu wewengkon kacida gedéna.

Na, lumrah, masalah patali bakal muncul nalika rék ngarobah hiji tempat, lajeng antosan 15 menit, sarta méré Anjeun kanvas sababaraha parobahan. Anjeun nyiduh, nyerat "Sumuhun", sareng aya anu salah. Ieu conto pisan nyata. Terraform henteu nyobian ngajagi anjeun tina masalah. Nyaéta, nyerat naon anu anjeun pikahoyong. Bakal aya masalah - masalah anjeun. Nalika Terraform 0.11 henteu nyobian ngabantosan anjeun dina cara naon waé. Aya sababaraha tempat anu pikaresepeun dina 0.12 anu ngamungkinkeun anjeun nyarios: "Vasya, anjeun leres-leres hoyong ieu, naha anjeun tiasa sadar?"

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Cara anu kadua nyaéta ngirangan daérah ieu, nyaéta panggero ti hiji tempat tiasa kirang nyambung ka tempat anu sanés.

Hiji-hijina masalah nyaéta anjeun kedah nyerat langkung seueur kode, nyaéta anjeun kedah ngajelaskeun variabel dina sajumlah ageung file sareng ngapdet ieu. Sababaraha urang teu resep. Ieu normal pikeun kuring. Sareng sababaraha urang mikir: "Naha nyerat ieu di tempat anu béda, kuring bakal nempatkeun éta sadayana dina hiji tempat." Ieu mungkin, tapi ieu ekstrim kadua.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Saha anu gaduh sadayana ieu hirup di hiji tempat? Hiji, dua, tilu jalma, nyaéta, aya anu ngagunakeunana.

Sareng saha anu nyauran hiji komponén khusus, hiji blok atanapi hiji modul infrastruktur? Lima nepi ka tujuh urang. Ieu keren.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Jawaban paling umum nyaéta tempat di tengah. Upami proyekna ageung, maka anjeun bakal sering ngagaduhan kaayaan dimana henteu aya solusi anu cocog sareng henteu sadayana jalan kaluar, janten anjeun bakalan campuran. Teu aya nu lepat sareng ieu, salami anjeun ngartos yen duanana mibanda kaunggulan.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Upami aya anu robih dina tumpukan VPC sareng anjeun badé nerapkeun parobihan ieu ka EC2, nyaéta anjeun hoyong ngapdet grup autoscaling sabab anjeun ngagaduhan subnet énggal, maka kuring nyauran jinis orkestrasi kagumantungan ieu. Aya sababaraha solusi: anu ngagunakeun naon?

Abdi tiasa nyarankeun naon solusi aya. Anjeun tiasa nganggo Terraform pikeun ngalakukeun sihir, atanapi anjeun tiasa nganggo makefiles pikeun nganggo Terraform. Sareng tingali upami aya anu robih di dinya, anjeun tiasa ngaluncurkeun di dieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Kumaha anjeun resep kaputusan ieu? Naha saha anu percaya yén ieu mangrupikeun solusi anu saé? Kuring ningali seuri, tétéla mamang geus nyusup.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Tangtu, ulah coba ieu di imah. Terraform teu pernah dirancang pikeun ngajalankeun ti Terraform.

Dina hiji laporan aranjeunna nyarios ka kuring: "Henteu, ieu moal jalan." Intina nyaéta yén éta henteu kedah dianggo. Sanaos katingalina pisan nalika anjeun tiasa ngaluncurkeun Terraform tina Terraform, teras Terraform, anjeun henteu kedah ngalakukeun éta. Terraform kedah salawasna ngamimitian pisan gampang.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

https://github.com/gruntwork-io/terragrunt/

Upami anjeun peryogi telepon orkestra nalika aya anu robih dina hiji tempat, teras aya Terragrunt.

Terragrunt mangrupikeun utilitas, tambihan kana Terraform, anu ngamungkinkeun anjeun pikeun koordinat sareng ngatur telepon ka modul infrastruktur.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

A file konfigurasi Terraform has Sigana mah ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Anjeun tangtukeun modul husus nu Anjeun hoyong nelepon.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Naon katergantungan modul?

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng naon argumen anu nampi modul ieu. Éta sadayana anu kedah terang ngeunaan Terragrunt.

Dokuméntasi aya, sareng aya 1 béntang dina GitHub. Tapi dina kalolobaan kasus ieu anu anjeun kedah terang. Sareng ieu gampang pisan pikeun dilaksanakeun di perusahaan anu nembé ngamimitian damel sareng Terraform.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Jadi orchestration nyaeta Terragrunt. Aya pilihan séjén.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ayeuna hayu urang ngobrol ngeunaan kumaha carana dianggo kalayan kode.

Upami anjeun kedah nambihan fitur énggal kana kode anjeun, dina kalolobaan kasus ieu gampang. Anjeun nulis sumberdaya anyar, sagalana geus basajan.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Upami anjeun gaduh sababaraha sumber anu anjeun damel sateuacanna, contona, anjeun diajar ngeunaan Terraform saatos anjeun muka akun AWS sareng hoyong nganggo sumber daya anu anjeun parantos gaduh, maka éta pantes pikeun ngalegaan modul anjeun ku cara ieu, supados eta ngarojong pamakéan sumberdaya aya.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Jeung ngarojong kreasi sumberdaya anyar ngagunakeun sumberdaya block.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Dina kaluaran urang salawasna balik kaluaran id gumantung kana naon ieu dipaké.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Masalah kadua anu penting pisan dina Terraform 0.11 damel sareng daptar.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Kasusah éta lamun urang boga daptar pamaké misalna.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Sareng nalika urang nyiptakeun pangguna ieu nganggo sumber blok, maka sadayana saé. Urang ngaliwatan sakabéh daptar, nyieun hiji file pikeun tiap. Sagalana geus rupa. Teras, contona, pangguna3, anu aya di tengah, kedah dipiceun ti dieu, teras sadaya sumber daya anu diciptakeun saatos anjeunna bakal diciptakeun deui sabab indéksna bakal robih.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Gawe sareng daptar di lingkungan stateful. Naon lingkungan stateful? Ieu kaayaan dimana hiji nilai anyar dijieun nalika sumberdaya ieu dijieun. Contona, AWS Access Key atawa AWS Secret Key, nyaéta nalika urang nyieun pamaké, urang nampa hiji Aksés atawa Secret Key anyar. Sareng unggal waktos urang ngahapus pangguna, pangguna ieu bakal gaduh konci énggal. Tapi ieu sanés Feng Shui, sabab pangguna moal hoyong janten réréncangan sareng urang upami urang nyiptakeun pangguna énggal pikeun anjeunna unggal waktos aya anu ninggalkeun tim.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ieu solusi. Ieu kode ditulis dina Jsonnet. Jsonnet mangrupakeun basa template ti Google.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Paréntah ieu ngamungkinkeun anjeun nampi citakan ieu sareng salaku kaluaran éta ngabalikeun file json anu dilakukeun dumasar kana citakan anjeun.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

template Sigana mah ieu.

Terraform ngamungkinkeun anjeun damel sareng HCL sareng Json dina cara anu sami, janten upami anjeun gaduh kamampuan ngahasilkeun Json, maka anjeun tiasa lebet kana Terraform. Berkas anu nganggo ekstensi .tf.json bakal suksés diunduh.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Teras urang damel sareng éta sapertos biasa: terraform init, terramorm apply. Sarta kami nyieun dua pamaké.

Ayeuna urang teu sieun lamun batur ninggalkeun tim. Kami ngan ukur ngédit file json. Vasya Pupkin ditinggalkeun, Petya Pyatochkin tetep. Petya Pyatochkin moal nampi konci anyar.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Ngahijikeun Terraform sareng alat sanés sanés padamelan Terraform. Terraform diciptakeun salaku platform pikeun nyiptakeun sumber daya sareng éta waé. Sareng sadaya anu muncul engké sanés perhatian Terraform. Jeung teu perlu ninun eta di dinya. Aya Ansible, anu ngalakukeun sadayana anu anjeun peryogikeun.

Tapi kaayaan timbul nalika urang rék manjangkeun Terraform jeung nelepon sababaraha paréntah sanggeus hal geus réngsé.

Cara kahiji. Urang nyieun kaluaran dimana urang nulis paréntah ieu.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Teras we nelepon paréntah ieu ti kaluaran cangkang terraform jeung nangtukeun nilai nu urang hoyong. Ku kituna, paréntah dieksekusi kalayan sagala nilai diganti. Nyaan pisan.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Cara kadua. Ieu pamakéan null_resource gumantung kana parobahan dina infrastruktur urang. Urang tiasa nelepon sami lokal-exe pas ID sababaraha parobahan sumberdaya.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Alami, ieu sadayana lancar dina kertas, sabab Amazon, sapertos sadaya panyayogi umum anu sanés, gaduh sakumpulan kasus ujungna sorangan.

Kasus ujung anu paling umum nyaéta nalika anjeun muka akun AWS, pentingna daérah anu anjeun anggo; Naha fitur ieu diaktipkeun di dinya; meureun anjeun dibuka sanggeus Désémber 2013; meureun anjeun ngagunakeun standar di VPC jsb Aya loba larangan. Sareng Amazon nyebarkeun aranjeunna sapanjang dokuméntasi.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Aya sababaraha hal kuring nyarankeun ngahindarkeun.

Pikeun ngamimitian, ulah sagala argumen non-rusiah dina rencana Terraform atanapi Terraform CLI. Sadaya ieu tiasa dilebetkeun kana file tfvars atanapi kana variabel lingkungan.

Tapi anjeun henteu kedah ngapalkeun sadayana paréntah sihir ieu. rencana Terraform - var sareng mareuman urang balik. Variabel kahiji var, variabel kadua var, katilu, kaopat. Prinsip pangpentingna infrastruktur salaku kode nu kuring paling mindeng ngagunakeun éta ngan ku nempo kode, abdi kedah gaduh pamahaman jelas ngeunaan naon deployed dinya, dina kaayaan naon jeung naon nilai. Janten kuring henteu kedah maca dokuméntasi atanapi naroskeun ka Vasya parameter naon anu dianggo pikeun nyiptakeun kluster urang. Kuring ngan kudu muka file kalawan extension tfvars, nu mindeng cocog lingkungan, sarta kasampak di sagalana aya.

Ogé, ulah nganggo argumen target pikeun ngirangan wengkuan. Pikeun ieu loba gampang ngagunakeun modul infrastruktur leutik.

Ogé, teu perlu ngawatesan jeung ningkatkeun paralelisme. Upami kuring gaduh 150 sumber sareng abdi hoyong ningkatkeun paralelisme Amazon tina standar 10 dugi ka 100, teras paling dipikaresep aya anu salah. Atanapi éta tiasa saé ayeuna, tapi nalika Amazon nyarios yén anjeun seueur teuing nelepon, anjeun bakal aya masalah.

Terraform bakal nyobian ngabalikan deui seueur masalah ieu, tapi anjeun moal ngahontal ampir nanaon. Parallelism = 1 mangrupikeun hal anu penting pikeun dianggo upami anjeun mendakan sababaraha bug di jero API AWS atanapi di jero panyadia Terraform. Teras anjeun kedah netepkeun: paralelisme = 1 sareng antosan dugi ka Terraform réngsé hiji sauran, teras kadua, teras katilu. Anjeunna bakal ngajalankeun aranjeunna hiji-hiji.

Jalma sering naros ka kuring, "Naha kuring nyangka ruang kerja Terraform jahat?" Kuring yakin prinsip infrastruktur salaku kode nyaéta ningali naon infrastruktur geus dijieun tur kalawan nilai naon.

Workspaces teu dijieun ku pamaké. Ieu henteu hartosna yén pangguna nyerat dina masalah GitHub yén urang moal tiasa hirup tanpa ruang kerja Terraform. Henteu henteu sapertos kieu. Terraform Enterprise mangrupikeun solusi komérsial. Terraform ti HashiCorp mutuskeun yén kami peryogi ruang kerja, janten kami ngajukeunana. Kuring manggihan eta loba gampang nempatkeun eta dina folder misah. Teras bakal aya sakedik deui file, tapi bakal langkung jelas.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Kumaha damel sareng kodeu? Nyatana, damel sareng daptar mangrupikeun hiji-hijina nyeri. Sareng nyandak Terraform langkung gampang. Ieu sanes hal anu bakal ngalakukeun sagalana gede pikeun anjeun. Henteu kedah nyorong sadayana anu diserat dina dokuméntasi di dinya.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Topik laporan ieu ditulis "keur masa depan". Kuring bakal ngobrol ngeunaan ieu sakeudeung. Pikeun masa depan, ieu hartosna 0.12 bakal dileupaskeun pas.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

0.12 mangrupikeun ton barang énggal. Upami anjeun asalna tina program biasa, maka anjeun sono kana sagala jinis blok dinamis, puteran, operasi perbandingan anu leres sareng kondisional, dimana sisi kénca sareng katuhu henteu diitung sakaligus, tapi gumantung kana kaayaan. Anjeun sono pisan, janten 0.12 bakal ngabéréskeunana pikeun anjeun.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Tapi! Upami anjeun nyerat kirang langkung saderhana, nganggo modul siap-siap sareng solusi pihak katilu, maka anjeun henteu kedah ngantosan sareng ngarepkeun 0.12 bakal datang sareng ngalereskeun sadayana pikeun anjeun.

Pedaran infrastruktur di Terraform pikeun mangsa nu bakal datang. Anton Babenko (2018)

Hatur nuhun laporan! Anjeun nyarioskeun infrastruktur salaku kode sareng sacara harfiah nyarios hiji kecap ngeunaan tés. Naha tés diperlukeun dina modul? Tanggung jawab saha ieu? Naha kuring kedah nyerat nyalira atanapi éta tanggung jawab modul?

Taun hareup bakal ngeusi laporan yén kami parantos mutuskeun pikeun nguji sadayana. Naon anu diuji nyaéta patarosan anu paling ageung. Aya seueur katergantungan, seueur larangan ti panyadia anu béda. Nalika anjeun sareng kuring ngobrol sareng anjeun nyarios: "Kuring peryogi tés," teras kuring naros: "Naon anu anjeun badé uji?" Anjeun nyarios yén anjeun bakal nguji di daérah anjeun. Teras kuring nyarios yén ieu henteu jalan di daérah kuring. Hartina, urang malah moal bisa satuju kana ieu. Henteu disebatkeun yén aya seueur masalah téknis. Nyaéta, kumaha cara nulis tés ieu supados cekap.

Kuring aktip nalungtik topik ieu, nyaéta kumaha cara otomatis ngahasilkeun tés dumasar kana infrastruktur anu anjeun tulis. Nyaéta, upami anjeun nyerat kode ieu, maka kuring kedah ngajalankeun éta, dumasar kana ieu kuring tiasa nyiptakeun tés.

Terratest mangrupa salah sahiji perpustakaan pangseringna disebutkeun nu ngidinan Anjeun pikeun nulis tés integrasi pikeun Terraform. Ieu mangrupikeun salah sahiji utilitas. Kuring resep tipe DSL, contona, rspec.

Anton, hatur nuhun pikeun laporan! Nami abdi Valery. Hayu atuh naroskeun patarosan filosofis saeutik. Aya, kondisional, provisioning, aya deployment. Provisioning nyiptakeun infrastruktur kuring, dina deployment urang eusian eta kalawan hal mangpaat, contona, server, aplikasi, jsb Jeung éta dina sirah kuring nu Terraform leuwih pikeun provisioning, sarta Ansible leuwih pikeun deployment, sabab Ansible ogé pikeun infrastruktur fisik. ngidinan Anjeun pikeun masang nginx, Postgres. Tapi dina waktos anu sareng, Ansible sigana ngamungkinkeun provisioning, contona, sumber Amazon atanapi Google. Tapi Terraform ogé ngamungkinkeun anjeun nyebarkeun sababaraha parangkat lunak nganggo modul na. Tina sudut pandang anjeun, aya sababaraha wates anu dijalankeun antara Terraform sareng Ansible, dimana sareng naon anu langkung saé dianggo? Atanapi, contona, saur anjeun yén Ansible parantos janten sampah, anjeun kedah nyobian nganggo Terraform pikeun sadayana?

Patarosan anu saé, Valery. Kuring yakin yén Terraform henteu acan robih tina segi tujuan ti saprak 2014. Éta diciptakeun pikeun infrastruktur sareng maot pikeun infrastruktur. Kami masih ngagaduhan sareng peryogi pikeun manajemén konfigurasi Ansible. Tangtanganna nyaéta aya data pangguna di jero launch_configuration. Na aya nu narik Ansible, jsb Ieu bedana baku nu kuring resep pangalusna.

Upami urang ngobrol ngeunaan infrastruktur anu saé, maka aya utilitas sapertos Packer anu ngumpulkeun gambar ieu. Teras Terraform nganggo sumber data pikeun milarian gambar ieu sareng ngapdet launch_configuration na. Nyaéta, ku cara ieu pipa nyaéta urang mimiti narik Tracker, teras narik Terraform. Sareng upami ngawangun lumangsung, teras parobihan énggal kajantenan.

Halo! Hatur nuhun laporan! Nami abdi Misha, perusahaan RBS. Anjeun tiasa nelepon Ansible via provisioner nalika nyieun sumberdaya. Ansible ogé ngagaduhan topik anu disebut inventaris dinamis. Sareng anjeun mimiti tiasa nyauran Terraform, teras nyauran Ansible, anu bakal nyandak sumber daya ti nagara sareng ngalaksanakeunana. Naon anu langkung saé?

Jalma make duanana kalawan sukses sarua. Sigana mah yén inventory dinamis dina Ansible mangrupakeun hal merenah, lamun urang teu ngawangkong ngeunaan grup autoscaling. Kusabab dina grup autoscaling urang geus boga toolkit sorangan, nu disebut launch_configuration. Dina launch_configuration kami ngarékam sadayana anu kedah diluncurkeun nalika kami nyiptakeun sumber daya énggal. Ku alatan éta, kalawan Amazon, ngagunakeun inventory dinamis sarta maca file Terraform ts, dina pamanggih kuring, overkill. Sareng upami anjeun nganggo alat-alat sanés anu teu aya konsép "grup autoscaling", contona, anjeun nganggo DigitalOcean atanapi sababaraha panyadia sanés anu teu aya grup autoscaling, teras di dinya anjeun kedah narik API sacara manual, milarian alamat IP, nyiptakeun. file inventaris dinamis, sareng Ansible parantos ngumbara di dinya. Nyaéta, pikeun Amazon aya launch_configuration, sareng pikeun sadayana aya inventaris dinamis.

sumber: www.habr.com

Tambahkeun komentar