Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Kayane pangembang Terraform nawakake praktik paling apik kanggo nggarap infrastruktur AWS. Mung ana nuansa. Swara wektu, jumlah lingkungan mundhak, fitur katon ing saben. Katon meh salinan tumpukan aplikasi ing wilayah tetanggan. Lan kode Terraform kudu disalin lan diowahi kanthi ati-ati miturut syarat anyar utawa nggawe snowflake.

Laporanku babagan pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual ing proyek gedhe lan dawa.

Video:

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Aku 40, aku wis ing IT kanggo 20 taun. Aku wis kerja ing Ixtens suwene 12 taun. Kita melu pangembangan e-commerce. Lan aku wis nglatih praktik DevOps sajrone 5 taun.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Critaku bakal dadi pengalaman ing proyek ing perusahaan sing jenenge ora bakal dakkandhakake, ndhelikake perjanjian non-disclosure.

Angka ing geser diwenehi supaya ngerti orane katrangan saka project. Lan kabeh sing bakal dakkandhakake sabanjure ana gandhengane karo Amazon.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Aku melu proyek iki 4 taun kepungkur. Lan refactoring infrastruktur ana ing ayunan lengkap, amarga project wis thukul. Lan pola sing digunakake, ora cocog maneh. Lan diwenehi kabeh wutah ngrancang saka project, iku perlu kanggo teka munggah karo soko anyar.

Thanks kanggo Matvey, sing wingi ngandhani apa sing kedadeyan ing Dodo Pizza. Iki kedadeyan 4 taun kepungkur.

Pangembang teka lan wiwit nggawe kode infrastruktur.

Alasan sing paling jelas kenapa iki dibutuhake yaiku wektu kanggo pasar. Sampeyan kudu mesthekake yen tim DevOps ora dadi kemacetan nalika diluncurake. Lan ing antarane liyane, Terraform lan Wayang digunakake ing tingkat pisanan.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Terraform minangka proyek open source saka HashiCorp. Lan kanggo wong-wong sing ora ngerti apa iku, sawetara slide sabanjure.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Infrastruktur minangka kode tegese kita bisa njlèntrèhaké infrastruktur kita lan takon sawetara robot kanggo mesthekake yen kita entuk sumber daya sing diterangake.

Contone, kita butuh mesin virtual. Kita bakal njlèntrèhaké, nambah sawetara paramèter sing dibutuhake.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Sawise iku, kita bakal ngatur akses menyang Amazon ing console. Lan takon rencana Terraform. Rencana Terraform bakal ujar: "Ok, kanggo sumber daya sampeyan, kita bisa nindakake perkara kasebut." Lan paling ora siji sumber daya bakal ditambahake. Lan ora ana owah-owahan sing dikarepake.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Sawise kabeh cocog karo sampeyan, sampeyan bisa takon Terraform aplikasi lan Terraform bakal nggawe conto kanggo sampeyan, lan sampeyan bakal entuk mesin virtual ing méga.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Salajengipun, proyek kita berkembang. Kita nambah sawetara owah-owahan ing kana. We takon liyane kedadean, kita nambah 53 entri.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Lan kita mbaleni. Mangga rencana. Kita ndeleng owah-owahan apa sing direncanakake. nglamar. Lan infrastruktur kita tuwuh.

Terraform nggunakake file negara. Yaiku, nyimpen kabeh owah-owahan sing menyang Amazon ing file, ing ngendi kanggo saben sumber daya sing diterangake, ana sumber daya sing cocog sing digawe ing Amazon. Mangkono, nalika ngganti deskripsi sumber daya, Terraform ngerti persis apa sing kudu diganti ing Amazon.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

File negara iki asline mung file. Lan kita disimpen ing Git, sing ora trep banget. Terus-terusan ana wong sing lali nindakake owah-owahan, lan ana akeh konflik.

Saiki sampeyan bisa nggunakake backend, i.e. Terraform dituduhake ing ember endi, kanthi kunci file negara kudu disimpen. Lan Terraform dhewe bakal ngurus file negara iki, nindakake kabeh sihir lan ngasilake asil pungkasan.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Infrastruktur kita tambah akeh. Punika kode kita. Lan saiki kita ora pengin mung nggawe mesin virtual, kita pengin duwe lingkungan test.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Terraform ngidini sampeyan nggawe modul, yaiku njlèntrèhaké bab sing padha ing sawetara folder.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Lan, contone, ing testing, nelpon modul iki lan njaluk bab sing padha yen kita nindakake Terraform aplikasi ing modul dhewe. Punika kode kanggo testing.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Kanggo produksi, kita bisa ngirim sawetara owah-owahan ing kana, amarga ing testing kita ora perlu kedadean gedhe, ing produksi kedadean gedhe bakal teka ing Handy.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Banjur aku bakal bali menyang proyek. Iku tugas sing angel, infrastruktur direncanakake gedhe banget. Lan perlu kanggo nyelehake kabeh kode supaya trep kanggo kabeh wong: kanggo wong-wong sing nindakake pangopènan kode iki, lan kanggo wong-wong sing ngowahi. Lan direncanakake manawa pangembang bisa mbukak lan ndandani infrastruktur sing dibutuhake kanggo bagean platform kasebut.

Iki minangka wit direktori sing disaranake dening HashiCorp yen sampeyan duwe proyek gedhe lan nggawe pangertèn kanggo dibagi kabeh infrastruktur dadi sawetara potongan cilik, lan njlèntrèhaké saben potongan ing folder sing kapisah.

Duwe perpustakaan sumber daya ekstensif, sampeyan bisa nelpon bab padha ing testing lan ing produksi.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Ing kasus iki, iki ora cocog, amarga tumpukan tes kanggo pangembang utawa kanggo tes kudu dipikolehi kanthi luwih gampang. Lan aku ora pengin pindhah liwat folder lan aplikasi ing urutan tengen, lan sumelang yen basa bakal munggah, banjur Kayata sing nggunakake basa iki bakal munggah. Mulane, kabeh testing diluncurake saka siji folder. Modul padha disebut ana, nanging kabeh tindak liwat ing siji roto.

Terraform ngurus kabeh dependensi. Lan mesthi nggawe sumber daya ing urutan kasebut supaya sampeyan bisa entuk alamat IP, contone, saka conto sing anyar digawe, lan entuk alamat IP iki ing entri route53.

Kajaba iku, platform gedhe banget. Lan nglakokake tumpukan tes, sanajan sajrone jam, sanajan sajrone 8 jam, iku bisnis sing larang.

Lan kita wis ngotomatisasi bisnis iki. Lan proyek Jenkins diijini tumpukan kanggo mbukak. Sampeyan kudu miwiti panjaluk tarik kanthi owah-owahan sing pengin diuji pangembang, nemtokake kabeh pilihan, komponen, lan ukuran sing dibutuhake. Yen dheweke pengin tes kinerja, mula dheweke bisa njupuk luwih akeh conto. Yen dheweke mung kudu mriksa manawa sawetara formulir mbukak, dheweke bisa miwiti kanthi upah minimal. Lan uga nuduhake manawa kluster dibutuhake utawa ora, lsp.

Banjur Jenkins nyurung skrip cangkang sing rada ngowahi kode kasebut ing folder Terraform. Mbusak file sing ora perlu, nambah file sing dibutuhake. Banjur, kanthi siji aplikasi Terraform, tumpukan kasebut wungu.

Banjur ana langkah liyane sing aku ora pengin mlebu.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Amarga kasunyatan manawa kanggo nguji, kita butuh pilihan liyane tinimbang ing produksi, kita kudu nggawe salinan modul supaya ing salinan kasebut kita bisa nambah fitur-fitur kasebut sing mung dibutuhake ing tes.

Lan kedadeyan kasebut nalika nyoba, misale jek sampeyan pengin nyoba owah-owahan kasebut sing pungkasane bakal dadi produksi. Nanging nyatane, ana siji sing dites, lan sawetara beda digunakake ing produksi. Lan ana break cilik ing pola sing ing produksi kabeh owah-owahan padha Applied dening tim operasi. Lan kadhangkala ternyata owah-owahan sing kudu ditindakake saka tes menyang produksi, tetep ana ing versi liyane.

Kajaba iku, ana masalah kaya sing ditambahake layanan anyar, sing rada beda karo sawetara sing wis ana. Lan tinimbang ngowahi modul sing wis ana, sampeyan kudu nggawe salinan lan nambah pangowahan sing dibutuhake.

Nyatane, Terraform dudu basa nyata. Iki minangka deklarasi. Yen kita kudu ngumumake apa wae, banjur kita ngumumake. Lan kabeh bisa.

Ing sawetara titik, nalika ngrembug salah sawijining panjaluk narik, salah sawijining rekanku ujar manawa ora perlu ngasilake salju salju. Aku kepingin weruh apa tegese. Ana kasunyatan ilmiah sing ing donya ora ana loro snowflakes sing padha, kabeh padha rada, nanging beda. Lan sanalika aku krungu iki, Aku langsung felt bobot lengkap kode Terraform. Amarga nalika dibutuhake kanggo pindhah saka versi kanggo versi, Terraform mbutuhake owah-owahan chain breaking, IE kode wis ora kompatibel karo versi sabanjuré. Lan aku kudu nggawe panjalukan narik, sing nutupi meh setengah saka file ing infrastruktur, supaya bisa nggawa infrastruktur menyang versi Terraform sabanjure.

Lan sawise snowflake kuwi katon, kabeh kode Terraform sing wis kita nguripake menyang gedhe, tumpukan gedhe saka salju.

Kanggo pangembang eksternal sing ana ing njaba operasi, ora dadi masalah kanggo dheweke, amarga dheweke njaluk panjaluk, sumber daya diwiwiti. Lan iku, iku ora badhan kang. Lan tim DevOps sing nggawe manawa kabeh OK kudu nggawe kabeh owah-owahan kasebut. Lan biaya owah-owahan iki tambah banget, banget karo saben snowflake tambahan.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Ana crita babagan carane mahasiswa ing seminar nggambar loro bunderan sampurna karo kapur ing papan tulis. Lan guru kaget kepiye carane bisa nggambar kanthi lancar tanpa kompas. Siswa kasebut mangsuli: "Gampang banget, aku dadi tukang gilingan daging sajrone rong taun ing tentara."

Lan saka patang taun aku melu proyek iki, aku wis nindakake Terraform sajrone rong taun. Lan, mesthi, aku duwe sawetara trik, sawetara tips babagan carane nyederhanakake kode Terraform, bisa digunakake kaya basa pamrograman lan nyuda beban para pangembang sing kudu njaga kode iki.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Wangsulan: Bab ingkang pisanan aku pengin miwiti karo Symlinks. Terraform duwe akeh kode sing diulang. Contone, nelpon panyedhiya ing meh kabeh titik ngendi kita nggawe Piece saka infrastruktur padha. Lan iku logis kanggo sijine iku ing Daddy kapisah. Lan ing ngendi wae panyedhiya dibutuhake kanggo nggawe Symlinks menyang file iki.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Contone, sampeyan nggunakake peran ing produksi, sing ngidini sampeyan entuk hak akses menyang sawetara akun Amazon eksternal. Lan kanthi ngganti siji file, kabeh sing isih ana ing wit sumber daya bakal duwe hak sing dibutuhake supaya Terraform ngerti segmen Amazon sing bakal diakses.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Ing endi Symlinks ora bisa digunakake? Kaya sing dakkandhakake, Terraform duwe file negara. Lan padha banget, banget kelangan. Nanging kasunyatane yaiku Terraform miwiti backend ing wiwitan. Lan dheweke ora bisa nggunakake variabel apa wae ing paramèter kasebut, mesthine kudu ditulis ing teks.

Lan minangka asil, nalika wong nggawe sumber anyar, dheweke nyalin bagean kode saka folder liyane. Lan bisa nggawe kesalahan karo tombol utawa karo ember. Contone, dheweke nggawe kothak wedhi saka kothak wedhi, banjur nggawe ing produksi. Lan bisa uga ember ing produksi bakal digunakake saka kothak wedhi. Mesthi, dheweke bakal nemokake kanthi cepet. Bisa uga kanggo ndandani iki, nanging mung mbuwang wektu lan, nganti sawetara, sumber daya.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Apa sing bisa ditindakake sabanjure? Sadurunge nggarap Terraform, sampeyan kudu miwiti. Ing wektu wiwitan, Terraform ndownload kabeh plugin. Ing sawetara titik, padha nyuwil saka monolit menyang arsitektur liyane microservice. Lan sampeyan kudu nindakake Terraform init supaya bisa narik kabeh modul, kabeh plugin.

Lan sampeyan bisa nggunakake skrip cangkang, sing, pisanan, bisa entuk kabeh variabel. Skrip Shell ora ana watesan. Lan, kapindho, cara. Yen kita tansah nggunakake path sing ana ing repositori minangka kunci kanggo file negara, banjur, miturut, kesalahan bakal tilar kene.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Where kanggo njaluk data? file JSON. Terraform ngidini sampeyan nulis infrastruktur ora mung ing hcl (Basa Konfigurasi HashiCorp), nanging uga ing JSON.

JSON gampang diwaca saka skrip cangkang. Patut, sampeyan bisa nyelehake file konfigurasi karo ember ing sawetara panggonan. Lan gunakake ember iki ing kode Terraform lan ing skrip cangkang kanggo initialization.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Apa pentinge duwe ember Terraform? Amarga ana file negara remot. Sing, nalika aku mundhakaken sawetara sumber, supaya marang Amazon: "Mangga mundhakaken Kayata", Aku kudu nemtokake akèh paramèter sing dibutuhake.

Lan pengenal iki disimpen ing sawetara folder liyane. Lan aku bisa njupuk lan ngomong: "Terraform, monggo mbukak menyang file negara sumber banget lan njaluk kula pengenal iki." Lan kanthi mangkono ana jinis penyatuan antarane wilayah utawa lingkungan sing beda-beda.

Ora tansah bisa nggunakake file negara remot. Contone, sampeyan nggawe VPC kanthi manual. Lan kode Terraform sing nggawe VPC nggawe VPC sing beda-beda sing mbutuhake wektu sing suwe lan sampeyan kudu nyetel siji menyang liyane, supaya sampeyan bisa nggunakake trik ing ngisor iki.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Yaiku, kanggo nggawe modul sing, kaya-kaya, nggawe VPC lan menehi pengenal, nanging nyatane mung ana file kanthi nilai hardcoded sing bisa digunakake kanggo nggawe conto sing padha.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Ora perlu nyimpen file negara ing méga. Contone, nalika nguji modul, sampeyan bisa nggunakake initialization backend, nalika file bakal disimpen mung ing disk nalika testing.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Saiki sethitik babagan testing. Apa sing bisa dites ing Terraform? Mbokmenawa akeh sing bisa, nanging aku bakal ngomong babagan 4 perkara kasebut.

HashiCorp duwe pangerten babagan cara ngowahi format kode Terraform. Lan Terraform fmt ngidini sampeyan ngowahi format kode sing diowahi miturut kapercayan kasebut. Dadi, tes kasebut kudu mriksa manawa format kasebut cocog karo apa sing diwarisake HashiCorp, supaya sampeyan ora kudu ngganti lokasi kurung, lsp.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Sabanjure yaiku Terraform validate. Iku ora sethitik liyane saka mriksa sintaksis - ala, kabeh kurung dipasangake. Apa sing penting ing kene? Kita duwe infrastruktur sing tipis banget. Nduwe macem-macem folder. Lan ing saben sampeyan kudu mbukak Terraform validate.

Patut, kanggo nyepetake testing, kita mbukak sawetara proses podo karo nggunakake podo.

Paralel minangka barang sing apik banget, gunakake.

Nanging saben-saben Terraform diwiwiti, banjur menyang HashiCorp lan takon, "Apa plugin paling anyar? Lan plugin sing aku duwe ing cache - iku siji utawa ora siji? Lan kalem ing saben langkah.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Yen Terraform ngandhani sampeyan ing endi plugin kasebut, Terraform bakal ujar: "Oke, iki bisa uga paling anyar. Aku ora bakal lunga menyang endi wae, aku bakal langsung validasi kode Terraform sampeyan."

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Kanggo ngisi folder kasebut kanthi plugin sing dibutuhake, kita duwe kode Terraform sing gampang banget sing mung kudu diwiwiti. Ing kene, mesthine, sampeyan kudu nemtokake kabeh panyedhiya sing piye wae melu kode sampeyan, yen Terraform bakal ngomong: "Aku ora ngerti panyedhiya apa wae, amarga ora ana ing cache."

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Sabanjure yaiku rencana Terraform. Kaya sing dakkandhakake, pangembangan iku siklus. Kita nggawe kode kanthi owah-owahan. Banjur sampeyan kudu ngerteni apa owah-owahan sing direncanakake kanggo infrastruktur kasebut.

Lan nalika infrastruktur gedhe banget, sampeyan bisa ngganti siji modul, ndandani sawetara lingkungan test utawa sawetara wilayah tartamtu, lan break sawetara tetanggan. Mulane, rencana Terraform kudu digawe kanggo kabeh infrastruktur lan nuduhake owah-owahan apa sing direncanakake.

Sampeyan bisa nindakake kanthi cara sing cerdas. Contone, kita nulis skrip Python sing ngrampungake dependensi. Lan gumantung apa wis diganti: modul Terraform utawa mung komponen tartamtu, iku ndadekake plans kanggo kabeh folder gumantung.

Rencana Terraform kudu ditindakake miturut panyuwunan. Saora-orane apa sing kita lakoni.

Tes, mesthi, apik kanggo nindakake saben owah-owahan, kanggo saben komitmen, nanging rencana iku cukup larang. Lan kita ngomong ing panjalukan narik: "Mangga menehi kula rencana." Robot diwiwiti. Lan ngirim menyang komentar utawa kanggo masang kabeh plans sing samesthine saka owah-owahan Panjenengan.

Rencana iku barang sing rada larang. Perlu wektu amarga Terraform menyang Amazon lan takon, "Apa conto iki isih ana? Apa skala otomatis iki duwe paramèter sing padha?". Lan kanggo nyepetake, sampeyan bisa nggunakake parameter kayata refresh=false. Iki tegese Terraform bakal deflate negara S3. Lan bakal percaya yen negara kasebut bakal cocog karo apa sing ana ing Amazon.

Rencana Terraform kasebut luwih cepet, nanging negara kudu cocog karo infrastruktur sampeyan, yaiku, ing endi wae, kadhangkala refresh Terraform kudu diwiwiti. Refresh Terraform nindakake persis, supaya negara kasebut cocog karo apa sing ana ing infrastruktur nyata.

Lan aku kudu ngomong babagan safety. Iki ngendi iku kudu wis diwiwiti. Ing ngendi sampeyan mbukak Terraform lan Terraform bisa digunakake karo infrastruktur sampeyan, ana kerentanan. Yaiku, sampeyan pancen nglakokake kode. Lan yen panjaluk narik ngemot sawetara jinis kode angkoro, mula bisa ditindakake ing infrastruktur sing duwe akses akeh banget. Mula, ati-ati ing ngendi sampeyan miwiti rencana Terraform.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Bab sabanjure sing arep dakkandhakake yaiku tes data pangguna.

Apa pangguna-data? Ing Amazon, nalika kita nggawe conto, kita bisa ngirim sawetara jinis layang saka conto - meta data . Nalika conto diwiwiti, biasane awan init tansah ana ing kedadeyan kasebut. Cloud init maca layang iki lan ujar: "Oke, dina iki aku dadi penyeimbang beban." Lan miturut prentah kasebut, dheweke nindakake sawetara tumindak.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Nanging, sayangé, nalika kita nindakake rencana Terraform lan aplikasi Terraform, data pangguna katon kaya slurry nomer iki. Yaiku, dheweke mung ngirim hash. Lan kabeh sing bisa dideleng ing rencana kasebut yaiku apa bakal ana owah-owahan utawa hash bakal tetep padha.

Lan yen sampeyan ora nggatekake iki, banjur sawetara file teks sing diantemi bisa menyang Amazon, menyang infrastruktur nyata.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Utawa, sampeyan ora bisa nemtokake kabeh infrastruktur sajrone eksekusi, nanging mung cithakan. Lan ing kode, ucapake: "Mangga nampilake cithakan iki kanggo aku." Lan minangka asil, sampeyan bisa njaluk printout saka apa data sampeyan bakal katon ing Amazon.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Pilihan liyane yaiku nggunakake modul kanggo ngasilake data pangguna. Sampeyan bakal ngetrapake modul iki. Entuk file ing disk. Bandhingake karo referensi. Dadi, yen sawetara jun mutusake kanggo ndandani data pangguna sing sithik, mula tes sampeyan bakal ujar: "Oke, ana sawetara owah-owahan ing kene - iki normal."

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Babagan sabanjure sing dakkarepake yaiku nglamar otomatis Terraform.

Mesthi, iku cukup medeni apa Terraform aplikasi ing mode otomatis, amarga sing ngerti owah-owahan apa wis teka lan carane ngrugekake padha bisa kanggo infrastruktur urip.

Kanggo lingkungan tes, iki kabeh apik. Yaiku, proyek sing nggawe lingkungan tes yaiku sing dibutuhake kabeh pangembang. Lan ekspresi kaya "kabeh bisa digunakake kanggo aku" dudu meme sing lucu, nanging bukti yen ana wong bingung, ngunggahake tumpukan, ngluncurake sawetara tes ing tumpukan iki. Lan dheweke mesthekake yen kabeh ana ing kono lan ujar: "Oke, kode sing diluncurake wis diuji."

Ing produksi, kothak wedhi, lan lingkungan liyane sing luwih kritis bisnis, aman nggunakake sebagian sumber daya amarga ora nyebabake wong mati. Iki yaiku: klompok skala otomatis, klompok keamanan, peran, rute53 lan ing kana dhaptar bisa uga akeh. Nanging priksa apa sing kedadeyan, maca laporan aplikasi otomatis.

Ing ngendi iku mbebayani utawa medeni kanggo nggunakake, contone, yen iki sawetara sumber daya ngengkel, saka database, banjur njaluk laporan sing ana owah-owahan unapplied ing sawetara Piece saka infrastruktur. Lan engineer wis ngawasi mlaku proyek kanggo aplikasi utawa nindakake saka console kang.

Amazon duwe barang kaya proteksi Terminate. Lan bisa nglindhungi ing sawetara kasus saka owah-owahan sing ora dibutuhake kanggo sampeyan. Dadi Terraform menyang Amazon lan ujar "Aku kudu mateni conto iki kanggo nggawe liyane". Lan Amazon ujar, "Nyuwun sewu, ora dina iki. Kita duwe perlindungan Terminate.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Lan icing ing kue yaiku optimasi kode. Nalika kita bisa karo kode Terraform, kita kudu pass nomer akeh banget paramèter kanggo modul. Iki minangka paramèter sing perlu kanggo nggawe sawetara jinis sumber daya. Lan kode dadi dhaptar gedhe saka paramèter sing kudu liwati saka modul kanggo modul, saka modul kanggo modul, utamané yen modul nested.

Lan angel banget kanggo maca. Iku angel banget kanggo mriksa iki. Lan asring banget ternyata sawetara paramèter ditinjau lan ora cukup sing dibutuhake. Lan biaya wektu lan dhuwit kanggo ndandani iku mengko.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Mulane, aku saranake sampeyan nggunakake barang kasebut minangka parameter kompleks sing kalebu wit nilai tartamtu. Yaiku, sampeyan butuh sawetara jinis folder ing ngendi sampeyan duwe kabeh nilai sing sampeyan pengin duwe ing sawetara jinis lingkungan.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Lan kanthi nelpon modul iki, sampeyan bisa entuk wit sing digawe ing siji modul umum, yaiku, ing modul umum sing bisa digunakake kanggo kabeh infrastruktur.

Ing modul iki, sampeyan bisa nindakake sawetara petungan nggunakake fitur anyar ing Terraform minangka warga lokal. Banjur ing siji output, ngetokake sawetara jinis parameter kompleks, sing bisa uga kalebu hash, array, lsp.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Ing babagan iki, kabeh temuan paling apik sing wis dakpungkasi. Lan aku pengin crita babagan Columbus. Nalika dheweke nggoleki dhuwit kanggo ekspedisi nemokake India (kaya sing dipikirake), ora ana sing percaya lan percaya yen ora mungkin. Banjur ngandika: "Pasthekake yen endhog ora tiba." Kabeh bankir, sugih banget lan mbokmenawa wong pinter, nyoba kanggo nyelehake endhog ing sawetara cara, lan ambruk kabeh wektu. Banjur Columbus njupuk endhog, dipencet sethithik. Cangkang crumpled lan endhog tetep ora obah. Padha kandha, "Oh, iku gampang banget!" Lan Columbus mangsuli: "Ya, gampang banget. Lan nalika aku mbukak India, kabeh wong bakal nggunakake rute perdagangan iki.

Lan apa sing wis dakcritakake iki mbokmenawa cukup prasaja lan ora pati penting. Lan nalika sampeyan sinau babagan lan miwiti nggunakake, iku ing urutan saka iku. Dadi gunakake. Lan yen iki cukup normal kanggo sampeyan, paling ora sampeyan ngerti carane nyelehake endhog supaya ora tiba.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Ayo ngringkes:

  • Coba supaya snowflakes. Lan luwih sithik kepingan salju, luwih sithik sumber daya sing dibutuhake kanggo ngowahi kabeh infrastruktur gedhe sampeyan.
  • owah-owahan pancet. Yaiku, nalika sawetara owah-owahan wis kedadeyan ing kode kasebut, sampeyan kudu nggawe prasarana sampeyan selaras karo owah-owahan kasebut sanalika bisa. Aja ana kahanan nalika wong teka ing loro utawa telung sasi kanggo dipikir Elasticsearch, nggawe rencana Terraform, lan ana akeh owah-owahan sing ora nyana. Lan njupuk akeh wektu kanggo sijine kabeh bali ing urutan.
  • Tes lan otomatisasi. Sing liyane kode dijamin karo tes lan Kripik, liyane kapercayan sing sampeyan nindakake kabeh tengen. Lan pangiriman otomatis bakal nambah kapercayan sampeyan kaping pirang-pirang.
  • Kode kanggo lingkungan tes lan produksi kudu meh padha. Praktis, amarga sawise kabeh, produksi rada beda lan isih bakal ana sawetara nuansa sing bakal ngluwihi lingkungan test. Nanging, plus utawa minus bisa diwenehake.
  • Lan yen sampeyan duwe akeh kode Terraform lan mbutuhake wektu akeh supaya kode iki dianyari, mula ora kasep kanggo refactor lan ngowahi kanthi apik.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

  • infrastruktur sing ora owah. pangiriman AMI ing jadwal.
  • Struktur kanggo route53 nalika sampeyan duwe akeh entri lan pengin supaya ing urutan konsisten.
  • Perang nglawan watesan tarif API. Iki nalika Amazon ujar, "Iki, aku ora bisa nampa panjaluk maneh, ngenteni." Lan setengah saka kantor ngenteni nganti bisa mbukak infrastruktur.
  • kedadean titik. Amazon dudu acara sing murah lan papan ngidini sampeyan ngirit akeh. Lan ing kana sampeyan bisa ngandhani kabeh laporan babagan iki.
  • Keamanan lan peran IAM.
  • Telusuri sumber daya sing ilang, yen sampeyan duwe kedadeyan sing ora dingerteni ing Amazone, dheweke mangan dhuwit. Sanajan biaya instan $100-150 saben wulan, luwih saka $1 saben taun. Nemokake sumber daya kasebut minangka bisnis sing nguntungake.
  • Lan kedadean dilindhungi undhang-undhang.

Pola ing Terraform kanggo nglawan kekacauan lan rutinitas manual. Maxim Kostrikin (Ixtens)

Iku kabeh kanggo kula. Terraform keren banget, gunakake. Matur nuwun!

Pitakonan

Matur nuwun kanggo laporan! Sampeyan duwe file negara ing S3, nanging carane ngatasi masalah sing sawetara wong bisa njupuk file negara iki lan nyoba kanggo nyebarke?

Kaping pisanan, kita ora kesusu. Kapindho, ana panji, ing ngendi kita nglaporake manawa kita nggarap sawetara potongan kode. Tegese, sanajan prasarana kasebut gedhe banget, iki ora ateges ana wong sing terus nggunakake apa wae. Lan nalika ana fase aktif, iki dadi masalah, kita nyimpen file negara ing Git. Iki penting, yen ora ana wong sing nggawe file negara, lan kita kudu ngumpulake kanthi manual ing tumpukan supaya bisa terus maju. Saiki ora ana masalah kaya ngono. Umumé, Terraform ngatasi masalah iki. Lan yen ana sing saya ganti, sampeyan bisa nggunakake kunci sing nyegah apa sing sampeyan ucapake.

Apa sampeyan nggunakake open source utawa perusahaan?

Ora ana perusahaan, yaiku, kabeh sing bisa didownload lan didownload kanthi gratis.

Jenengku Stanislav. Aku pengin nggawe tambahan cilik. Sampeyan ngomong babagan fitur Amazon sing ngidini sampeyan nggawe conto sing ora bisa ditindakake. Iki uga ana ing Terraform dhewe, ing blok Life Second, sampeyan bisa menehi resep larangan kanggo owah-owahan, utawa larangan ngrusak.

Watesan wektu. Biji apik.

Aku uga pengin takon rong perkara. Pisanan, sampeyan ngomong babagan tes. Apa sampeyan wis nggunakake alat tes? Aku krungu babagan plugin Test Kitchen. Mbok menawa ana liyane. Lan aku arep takon babagan Nilai Lokal. Kepiye carane padha beda-beda saka Variabel Input? Lan kenapa aku ora bisa parametrize soko mung liwat Nilai Lokal? Aku nyoba kanggo menehi hasil karo topik iki, nanging piye wae aku ora ngerti dhewe.

Kita bisa ngomong luwih rinci ing mburi bale iki. Alat pangujian yaiku digawe kanthi lengkap. Ora ana sing bisa dites. Umumé, ana opsi nalika tes otomatis ngunggahake infrastruktur ing endi wae, priksa manawa OK, banjur numpes kabeh kanthi laporan yen infrastruktur sampeyan isih apik. Kita ora duwe amarga tumpukan tes mlaku saben dina. Lan wis cukup. Lan yen ana sing wiwit rusak, mula bakal rusak tanpa kita mriksa ing papan liya.

Ngenani Nilai Lokal, ayo diterusake pacelathon ing njaba penonton.

Hello! Matur nuwun kanggo laporan! informatif banget. Sampeyan ujar manawa sampeyan duwe akeh jinis kode sing padha kanggo nggambarake infrastruktur kasebut. Apa sampeyan wis mikir nggawe kode iki?

Pitakonan gedhe, matur nuwun! Intine yaiku yen kita nggunakake infrastruktur minangka kode, kita nganggep yen kita ndeleng kode kasebut lan ngerti apa jenis infrastruktur sing ana ing mburi kode iki. Yen kode kasebut digawe, mula kita kudu mbayangake kode apa sing bakal diasilake kanggo ngerti apa jenis infrastruktur sing bakal ana. Utawa kita ngasilake kode kasebut, nindakake lan, nyatane, kita entuk perkara sing padha. Mulane, kita tindak cara kita nulis, kita entuk. Plus, generator muncul sethitik mengko, nalika kita miwiti nggawe. Lan wis kasep kanggo ngganti.

Apa sampeyan krungu babagan jsonnet?

Ora Ana

Delengen, iki pancen apik banget. Aku ndeleng kasus tartamtu ing ngendi sampeyan bisa ngetrapake lan ngasilake struktur data.

Generators apik nalika sampeyan duwe, kaya ing guyon bab mesin cukur. Tegese, sepisanan pasuryane beda, nanging saben wong duwe pasuryan sing padha. Generator banget kelangan. Nanging, sayangé, pasuryan kita rada beda. Iki masalah.

Delengen wae. Matur nuwun!

Jenengku Maxim, aku saka Sberbank. Sampeyan ngandika sethitik sing nyoba kanggo nggawa Terraform menyang analog saka basa program. Apa ora luwih gampang nggunakake Ansible?

Iki pancen beda banget. Ansible bisa nggawe sumber daya, lan Wayang bisa nggawe sumber daya ing Amazon. Nanging Terraform pancen diasah.

Apa sampeyan mung duwe Amazon?

Ora mung kita duwe Amazon. Kita meh mung duwe Amazon. Nanging fitur utama yaiku Terraform ngelingi. Ing Ansible, yen sampeyan ngomong: "Angkat kula munggah 5 kedadean", banjur bakal mundhakaken, lan banjur ngomong: "Lan saiki aku kudu 3". Lan Terraform bakal ngomong: "Ok, aku bakal mateni 2", lan Ansible bakal ngomong: "Ok, iki 3 kanggo sampeyan." Total 8.

Hello! Matur nuwun kanggo laporan sampeyan! Iku banget menarik kanggo krungu bab Terraform. Aku mung pengin nggawe komentar cilik babagan kasunyatan sing Terraform isih ora duwe release stabil, supaya ati-ati banget karo Terraform.

Sendok sing apik kanggo nedha bengi. Yaiku, yen sampeyan butuh solusi, mula sampeyan bisa nundha apa sing ora stabil, lsp, nanging bisa digunakake lan mbantu kita.

Pitakonan yaiku. Sampeyan nggunakake backend Remote, sampeyan nggunakake S 3. Apa sampeyan ora nggunakake backend resmi?

Resmi?

Awan Terraform.

Nalika dheweke muncul?

4 sasi kepungkur.

Yen wis muncul 4 taun kepungkur, mesthine, aku bakal mangsuli pitakon sampeyan.

Ana wis dibangun ing fungsi lan kunci, lan sampeyan bisa nyimpen file negara. Cobanen. Nanging aku uga durung nyoba.

We are ing Sepur gedhe sing obah ing kacepetan dhuwur. Lan sampeyan ora bisa mung njupuk lan uncalan metu sawetara mobil.

Sampeyan ngomong babagan kepingan salju, kenapa sampeyan ora nggunakake cabang? Kenging punapa mboten saged kados makaten?

Kita duwe pendekatan sing kabeh infrastruktur ana ing siji repositori. Terraform, Wayang, kabeh skrip sing ana hubungane karo iki, kabeh ana ing siji gudang. Kanthi cara iki kita bisa mesthekake yen owah-owahan tambahan diuji siji-siji. Yen ana akeh cabang, mula proyek kasebut meh ora bisa ditindakake. Enem sasi liwati, lan padha beda-beda dadi mung sawetara jinis paukuman. Iki sing aku pengin mlayu saka sadurunge refactoring.

i.e. ora bisa?

Iku ora bisa ing kabeh.

Ing cabang, aku Cut metu folder geser. Yaiku, yen sampeyan nindakake kanggo saben tumpukan tes, contone, tim A duwe bapak dhewe, tim B duwe bapak dhewe, mula iki uga ora bisa. Kita nggawe kode lingkungan tes terpadu sing cukup fleksibel kanggo cocog karo kabeh wong. Sing, kita ngawula siji kode.

Hello! Jenengku Yura! Matur nuwun kanggo laporan! Pitakonan babagan modul. Sampeyan ngomong sampeyan nggunakake modul. Kepiye carane ngatasi masalah kasebut yen owah-owahan digawe ing siji modul sing ora cocog karo owah-owahan wong liya? Piye wae versi modul utawa nyoba nggawa prodigy kanggo ketemu loro syarat?

Iki minangka masalah tumpukan salju sing gedhe. Iki sing kita nandhang sangsara nalika sawetara owah-owahan innocuous bisa break sawetara bagéan saka infrastruktur. Lan bakal katon mung sawise sawetara wektu.

Tegese, durung diputusake?

Sampeyan nggawe modul universal. Ngindhari kepingan salju. Lan kabeh bakal bisa. Separuh kapindho laporan babagan carane nyingkiri.

Hello! Matur nuwun kanggo laporan! Aku arep njlentrehake. Ing mburine ana tumpukan gedhe, sing dakkarepake. Kepiye distribusi Wayang lan peran digabungake?

data panganggo.

Yaiku, apa sampeyan mung ngidoni file kasebut lan piye wae nglakokake?

Data pangguna minangka cathetan, yaiku nalika nggawe klon gambar, banjur Daemon munggah ing kana lan nyoba ngerteni sapa dheweke, maca cathetan yen dheweke minangka penyeimbang beban.

Sing, iku sawetara jinis proses kapisah sing diwenehake?

Kita ora nyipta. Kita nggunakake.

Hello! Aku mung duwe pitakonan babagan Panganggo - data. Sampeyan ngandika sing ana masalah ana, sing wong bisa ngirim soko menyang panggonan salah. Apa ana sawetara cara kanggo nyimpen data pangguna ing Git sing padha, supaya tansah jelas apa sing dimaksudake data pangguna?

We generate User-data saka cithakan. Yaiku, sawetara variabel resor ana. Lan Terraform ngasilake asil pungkasan. Mulane, sampeyan ora bisa mung katon ing cithakan lan ngomong apa mengkono, amarga kabeh masalah sing gegandhengan karo kasunyatan sing pangembang mikir sing liwat senar ing variabel iki, lan banjur Uploaded digunakake. Lan dheweke - bang lan aku - dadi-lan-lan-lan-lan-lan-lan-lan-lan-lan-lan-lan-lan, baris sabanjuré, lan kabeh pecah. Yen iki sumber anyar lan wong mundhakaken iku, weruh sing soko ora bisa, banjur iki cepet ditanggulangi. Lan yen grup autoscale iki wis dianyari, banjur ing sawetara titik kedadean ing grup autoscale wiwit diganti. Lan clap, ana sing ora bisa digunakake. Nyeri.

Pranyata metu sing mung solusi kanggo nyoba?

Ya, sampeyan ndeleng masalah, sampeyan nambah langkah-langkah tes ing kana. Sing, output uga bisa dites. Mungkin ora trep, nanging sampeyan uga bisa menehi tandha - priksa manawa data pangguna dipaku ing kene.

Jenengku Timur. Apik banget yen ana laporan babagan carane ngatur Terraform kanthi bener.

Aku malah ora miwiti.

Aku mikir yen ing konferensi sabanjure, bisa uga ana. Aku duwe pitakonan prasaja. Napa sampeyan hardcode nilai ing modul sing kapisah tinimbang nggunakake tfvars, yaiku modul kanthi nilai sing luwih apik tinimbang tfvars?

Yaiku, aku kudu nulis ing kene (slide: Produksi / lingkungan / setelan.tf): domain = variabel, domain vpcnetwork, variabel vpcnetwork lan stvars - entuk perkara sing padha?

We nindakake persis sing. Kita waca modul sumber setelan, contone,.

Nyatane, iki tfvars kuwi. Tfvars banget Handy ing lingkungan testing. Aku duwe tfvars kanggo kedadean gedhe, kanggo cilik. Lan aku mbuwang siji file menyang folder kasebut. Lan entuk apa sing dakkarepake. Nalika kita ndeleng infrastruktur, kita pengin bisa ndeleng lan langsung ngerti kabeh. Lan dadi metu sing kudu katon kene, banjur katon ing tfvars.

Pranyata kabeh ana ing sak panggonan?

Ya, tfvars nalika sampeyan duwe kode siji. Lan digunakake ing pirang-pirang panggonan kanthi nuansa sing beda. Banjur sampeyan bakal uncalan tfvars lan njaluk nuansa Panjenengan. Lan kita infrastruktur minangka kode ing wangun murni. Dideleng lan dimangerteni.

Hello! Apa sampeyan wis nemoni kahanan sing panyedhiya awan ngganggu apa sing wis ditindakake karo Terraform? Ayo kita nyunting meta-data. Ana tombol ssh. Lan Google terus-terusan ngeculake meta-data, kuncine ana ing kono. Lan Terraform tansah nyerat manawa ana owah-owahan. Sawise saben mlayu, sanajan ora ana owah-owahan, dheweke mesthi ujar manawa bakal nganyari lapangan iki saiki.

Kanthi tombol, nanging - ya, bagean saka infrastruktur kena pengaruh kaya ngono, yaiku Terraform ora bisa ngganti apa-apa. Kita uga ora bisa ngganti apa-apa nganggo tangan. Anggere kita manggon karo.

Sing, sampeyan ketemu iki, nanging ora teka munggah karo apa-apa, carane nindakake lan nindakaken piyambak?

Sayang ya.

Hello! Jenengku Stanislav Starkov. layang. en Grup. Kepiye cara ngatasi masalah kanthi nggawe tag ing ..., kepiye carane sampeyan mlebu? Nalika aku ngerti, liwat User - data, kanggo nemtokake jeneng host, incite Wayang? Lan bagean kapindho pitakonan. Kepiye carane ngatasi masalah iki ing SG, yaiku nalika sampeyan ngasilake SG, satus conto saka jinis sing padha, kepiye jenenge kanthi bener?

Kasus sing penting banget kanggo kita, kita bakal menehi jeneng kanthi apik. Sing ora perlu, ana postscript sing iki grup autoscale. Lan ing teori bisa dipaku, lan entuk sing anyar.

Kanggo masalah karo tag, ora ana masalah, nanging ana tugas kasebut. Lan kita nggunakake tag banget, banget, amarga infrastruktur gedhe lan larang. Lan kita kudu ndeleng apa dhuwit sing digunakake, supaya tag ngidini kita ngurutake apa lan menyang ngendi. Lan, miturut, panelusuran kanggo soko kene iku akèh dhuwit ngginakaken.

Apa maneh pitakonan kasebut?

Nalika SG nggawe satus kedadean, apa padha kudu dibedakake piye wae?

Ora, aja. Saben conto duwe agen sing ngandhani yen aku duwe masalah. Yen agen kasebut nglaporake, mula agen kasebut ngerti babagan dheweke lan, paling ora, alamat IP dheweke ana. Sampeyan wis bisa mbukak. Kapindho, kita nggunakake Konsul kanggo Discovery, sing ora ana Kubernetes. Lan Konsul uga nuduhake alamat IP saka conto kasebut.

Yaiku, sampeyan nargetake persis IP, lan dudu jeneng host?

Ora bisa navigasi kanthi jeneng host, yaiku akeh. Ana pengenal Kayata - AE, etc. Sampeyan bisa nemokake iku nang endi wae, sampeyan bisa uncalan menyang panelusuran.

Hello! Aku temen maujud sing Terraform iku apik, selaras karo mega.

Ora mung.

Iki pitakonan sing narik kawigaten kula. Yen sampeyan arep kanggo pindhah, ngandika, Bare Metal massal karo kabeh kedadean Panjenengan? Apa bakal ana masalah? Utawa sampeyan isih kudu nggunakake produk liyane, contone, Ansible padha sing kasebut ing kene?

Ansible rada babagan liyane. Yaiku, Ansible wis mlaku nalika instance wis diwiwiti. Lan Terraform bisa digunakake sadurunge conto diwiwiti. Ngalih menyang Bare Metal ora.

Ora saiki, nanging bisnis bakal teka lan ngomong: "Ayo."

Ngalih menyang awan liyane - ya, nanging ana fitur sing rada beda ing kene. Sampeyan kudu nulis kode Terraform kanthi cara sing bisa ngalih menyang awan liyane kanthi kurang getih.

Kaping pisanan, tugas kasebut yaiku kabeh infrastruktur kita agnostik, yaiku awan apa wae, nanging ing sawetara titik bisnis kasebut nyerah lan ujar: "Oke, ing N taun sabanjure, kita ora bakal lunga menyang endi wae, sampeyan bisa nggunakake layanan saka Amazon ".

Terraform ngidini sampeyan nggawe proyek Front-End, ngatur PagerDuty, data docs, etc. Wis akeh buntut. Dheweke praktis bisa ngontrol kabeh jagad.

Matur nuwun kanggo laporan! Aku uga wis Spinning Terraform kanggo 4 taun saiki. Ing tataran saka transisi Gamelan kanggo Terraform, kanggo infrastruktur, kanggo gambaran declarative, kita padha ngadhepi karo kahanan ing ngendi wong nindakake soko dening tangan, lan sampeyan nyoba kanggo nggawe rencana. Lan aku entuk sawetara kesalahan ing kana. Piyé carané nanggulangi masalah kuwi? Kepiye carane nemokake sumber daya sing ilang sing dituduhake?

Biasane nganggo tangan lan mata, yen kita ndeleng sing aneh ing laporan kasebut, mula kita nganalisa apa sing kedadeyan ing kana, utawa mung mateni. Umumé, panjaluk narik minangka perkara sing umum.

Yen ana kesalahan, apa sampeyan muter maneh? Apa sampeyan wis nyoba nindakake iki?

Ora, iki minangka keputusane wong nalika ndeleng masalah kasebut.

Source: www.habr.com