Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Görünür ki, Terraform tərtibatçıları AWS infrastrukturu ilə işləmək üçün olduqca əlverişli ən yaxşı təcrübələr təklif edirlər. Yalnız bir nüans var. Zaman keçdikcə mühitlərin sayı artır, hər birində xüsusiyyətlər görünür. Qonşu bölgədə tətbiq yığınının demək olar ki, bir nüsxəsi görünür. Və Terraform kodunu diqqətlə kopyalamaq və yeni tələblərə uyğun olaraq redaktə etmək və ya qar dənəciyi etmək lazımdır.

Hesabatım böyük və uzun layihələrdə xaosla mübarizə aparmaq üçün Terraform-dakı nümunələr və əl işləri haqqındadır.

Video:

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

40 yaşım var, 20 ildir ki, IT sahəsindəyəm. 12 ildir ki, Ixtens-də işləyirəm. Biz e-ticarətə əsaslanan inkişafla məşğuluq. Və mən 5 ildir DevOps təcrübələri ilə məşğulam.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Hekayəm, adını deməyəcəyim bir şirkətdə gizli müqavilənin arxasında gizlənən bir layihədəki təcrübə haqqında olacaq.

Slayddakı rəqəmlər layihənin əhatə dairəsini başa düşmək üçün verilmişdir. Və bundan sonra deyəcəyim hər şey Amazonla bağlıdır.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Mən bu layihəyə 4 il əvvəl qoşulmuşam. Və infrastrukturun refaktorinqi tam sürətlə gedirdi, çünki layihə böyümüşdü. Və istifadə olunan naxışlar artıq uyğun gəlmir. Və layihənin bütün planlaşdırılan artımını nəzərə alaraq, yeni bir şey ortaya qoymaq lazım idi.

Dünən bizə Dodo Pizzada baş verənləri danışan Matveyə təşəkkür edirəm. Bu, 4 il əvvəl başımıza gələn hadisədir.

Tərtibatçılar gəldi və infrastruktur kodu yaratmağa başladılar.

Bunun tələb olunmasının ən bariz səbəbləri bazara çıxma vaxtı idi. DevOps komandasının işə salınması zamanı darboğaz olmadığına əmin olmaq lazım idi. Və digər şeylər arasında, Terraform və Kukla ilk səviyyədə istifadə edilmişdir.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Terraform HashiCorp-un açıq mənbəli layihəsidir. Və ümumiyyətlə nə olduğunu bilməyənlər üçün növbəti slaydlar.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Kod olaraq infrastruktur o deməkdir ki, biz infrastrukturumuzu təsvir edə bilərik və bəzi robotlardan təsvir etdiyimiz resursları əldə etməyimizi xahiş edə bilərik.

Məsələn, bizə virtual maşın lazımdır. Təsvir edəcəyik, bir neçə tələb olunan parametr əlavə edəcəyik.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Bundan sonra biz konsolda Amazon-a girişi konfiqurasiya edəcəyik. Və Terraform planını soruşun. Terraform planı deyəcək: "Yaxşı, resursunuz üçün bunları edə bilərik." Və ən azı bir resurs əlavə olunacaq. Və heç bir dəyişiklik gözlənilmir.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Hər şey sizə uyğun olduqdan sonra siz Terraformdan müraciət edə bilərsiniz və Terraform sizin üçün bir nümunə yaradacaq və siz buludunuzda virtual maşın əldə edəcəksiniz.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Bundan əlavə, layihəmiz inkişaf edir. Orada bəzi dəyişikliklər əlavə edirik. Daha çox nümunə tələb edirik, 53 giriş əlavə edirik.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Və təkrar edirik. Zəhmət olmasa planlaşdırın. Hansı dəyişikliklərin planlaşdırıldığını görürük. Müraciət edin. Beləliklə, infrastrukturumuz inkişaf edir.

Terraform dövlət faylları kimi bir şeydən istifadə edir. Yəni, o, Amazon-a gedən bütün dəyişiklikləri bir faylda saxlayır, burada təsvir etdiyiniz hər resurs üçün Amazon-da yaradılmış müvafiq resurslar var. Beləliklə, bir resursun təsvirini dəyişdirərkən, Terraform Amazonda nəyi dəyişdirmək lazım olduğunu dəqiq bilir.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Bu dövlət faylları əvvəlcə sadəcə fayllar idi. Və biz onları Git-də saxladıq, bu son dərəcə əlverişsiz idi. Daim kimsə dəyişikliklər etməyi unudub və çoxlu münaqişələr olub.

İndi backenddən istifadə etmək mümkündür, yəni Terraform hansı kovada, hansı düymə ilə dövlət faylının saxlanmalı olduğu göstərilir. Və Terraform özü bu vəziyyət faylını əldə etmək, bütün sehrləri etmək və son nəticəni geri qaytarmaq üçün qayğı göstərəcək.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

İnfrastrukturumuz inkişaf edir. Budur kodumuz. İndi biz sadəcə virtual maşın yaratmaq istəmirik, test mühitinə sahib olmaq istəyirik.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Terraform sizə modul kimi bir şey yaratmağa, yəni eyni şeyi hansısa qovluqda təsvir etməyə imkan verir.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Məsələn, test zamanı bu modula zəng edin və Terraform tətbiqini modulun özündə etdiyimiz kimi eyni şeyi əldə edin. Test üçün kod buradadır.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

İstehsal üçün biz ora bəzi dəyişikliklər göndərə bilərik, çünki sınaq zamanı bizə böyük instansiyalar lazım deyil, istehsalda böyük instansiyalar lazımlı olacaq.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Və sonra layihəyə qayıdacağam. Çətin iş idi, infrastruktur çox böyük planlaşdırılmışdı. Və bütün kodu birtəhər yerləşdirmək lazım idi ki, hamı üçün əlverişli olsun: bu kodda texniki xidmət göstərənlər və dəyişiklik edənlər üçün. Və planlaşdırıldı ki, istənilən tərtibatçı gedib platformanın öz hissəsi üçün lazım olan infrastrukturu düzəldə bilər.

Bu, HashiCorp tərəfindən tövsiyə olunan kataloq ağacıdır ki, əgər sizin böyük bir layihəniz varsa və bütün infrastrukturu bir neçə kiçik hissəyə bölmək və hər bir parçanı ayrıca qovluqda təsvir etmək mənasızdır.

Geniş resurs kitabxanasına sahib olmaqla siz həm sınaqda, həm də istehsalda eyni şey haqqında zəng edə bilərsiniz.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Bizim vəziyyətimizdə bu, tamamilə uyğun deyildi, çünki tərtibatçılar və ya sınaq üçün test yığınını bir qədər sadələşdirmək lazım idi. Və mən qovluqlardan keçmək və düzgün ardıcıllıqla müraciət etmək istəmədim və bazanın yüksələcəyindən və sonra bu bazadan istifadə edən nümunənin yüksələcəyindən narahat oldum. Buna görə də, bütün sınaqlar bir qovluqdan başladı. Eyni modullar orada çağırıldı, lakin hər şey bir qaçışda keçdi.

Terraform bütün asılılıqların qayğısına qalır. Və o, həmişə həmin ardıcıllıqla resurslar yaradır ki, siz məsələn, yeni yaradılmış instansiyadan bir IP ünvanı əldə edə biləsiniz və marşrut53 girişində bu IP ünvanını əldə edə biləsiniz.

Bundan əlavə, platforma çox böyükdür. Bir saatlıq, hətta 8 saatlıq da olsa, sınaq yığınını idarə etmək olduqca bahalı bir işdir.

Və biz bu işi avtomatlaşdırmışıq. Və Jenkins işi yığının işləməsinə icazə verdi. Tərtibatçının sınaqdan keçirmək istədiyi bütün lazımi variantları, komponentləri və ölçüləri təyin etmək istədiyi dəyişikliklərlə bir çəkmə sorğusunu işə salmaq lazım idi. Performans testi istəyirsə, daha çox nümunə götürə bilər. Sadəcə hansısa formanın açıldığını yoxlamaq lazımdırsa, minimum əmək haqqı ilə başlaya bilər. Həm də klasterə ehtiyac olub-olmadığını və s.

Və sonra Jenkins Terraform qovluğunda kodu bir az dəyişdirən bir qabıq skriptini itələdi. Lazımsız fayllar silindi, lazım olan fayllar əlavə edildi. Və sonra, bir Terraform tətbiqi ilə yığın yüksəldi.

Və sonra başqa addımlar da oldu ki, onlara getmək istəmirəm.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Sınaq üçün istehsalda olduğundan bir az daha çox seçimə ehtiyacımız olduğuna görə modulların surətlərini çıxarmalı olduq ki, bu nüsxələrə yalnız sınaq zamanı lazım olan xüsusiyyətləri əlavə edək.

Və elə oldu ki, sınaq zamanı siz nəhayət istehsala gedəcək dəyişiklikləri sınaqdan keçirmək istəyirsiniz. Ancaq əslində bir şey sınaqdan keçirildi və istehsalda bir az fərqli istifadə edildi. Və modeldə kiçik bir fasilə var idi ki, istehsalda bütün dəyişikliklər əməliyyat qrupu tərəfindən tətbiq edildi. Və bəzən sınaqdan istehsala keçməli olan dəyişikliklərin başqa versiyada qaldığı ortaya çıxdı.

Bundan əlavə, elə bir problem yarandı ki, bəzi mövcud xidmətlərdən bir qədər fərqli olan yeni bir xidmət əlavə edildi. Və mövcud modulu dəyişdirmək əvəzinə, onun surətini çıxarıb lazımi dəyişiklikləri əlavə etməli idiniz.

Əslində, Terraform əsl dil deyil. Bu bir bəyannamədir. Əgər bir şeyi bəyan etmək lazımdırsa, deməli, bəyan edirik. Və hamısı işləyir.

Nə vaxtsa mənim çəkmə xahişlərimdən birini müzakirə edərkən həmkarlarımdan biri dedi ki, qar dənəcikləri istehsal etmək lazım deyil. Onun nə demək istədiyini düşündüm. Belə bir elmi həqiqət var ki, dünyada iki eyni qar dənəciyi yoxdur, hamısı bir az, lakin fərqlidir. Və bunu eşidən kimi dərhal Terraform kodunun tam ağırlığını hiss etdim. Çünki versiyadan versiyaya keçmək tələb olunduqda, Terraform qırılma zənciri dəyişikliyi tələb edirdi, yəni kod artıq növbəti versiya ilə uyğun gəlmirdi. Və infrastrukturu Terraformun növbəti versiyasına çatdırmaq üçün infrastrukturdakı faylların demək olar ki, yarısını əhatə edən bir çəkmə sorğusu verməli oldum.

Və belə bir qar dənəciyi göründükdən sonra böyük, böyük bir qar yığınına çevirdiyimiz bütün Terraform kodu.

Əməliyyatdan kənarda olan xarici bir tərtibatçı üçün onun üçün çox əhəmiyyət kəsb etmir, çünki o, çəkmə sorğusu etdi, onun resursu başladı. Və bu, onun narahatlığı deyil. Və hər şeyin qaydasında olduğuna əmin olan DevOps komandası bütün bu dəyişiklikləri etməlidir. Və bu dəyişikliklərin dəyəri hər əlavə qar dənəciyi ilə çox, çox artdı.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Seminarda bir tələbənin lövhədə təbaşirlə iki mükəmməl dairə çəkməsi haqqında bir hekayə var. Müəllim isə heyrətlənir ki, o, kompas olmadan belə rəvan çəkməyi necə bacarıb. Tələbə cavab verir: “Çox sadədir, mən orduda iki il ətçəkən maşın çevirmişəm”.

Və bu layihədə olduğum dörd ildən təxminən iki ildir ki, Terraform ilə məşğul oluram. Və təbii ki, mənim bəzi fəndlərim, Terraform kodunu necə sadələşdirmək, onunla bir proqramlaşdırma dili kimi işləmək və bu kodu aktual saxlamalı olan tərtibatçıların üzərinə düşən yükü azaltmaq barədə bəzi tövsiyələr var.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Başlamaq istədiyim ilk şey Symlinksdir. Terraformun çoxlu təkrarlanan kodu var. Məsələn, bir infrastruktur parçası yaratdığımız demək olar ki, hər bir nöqtədə bir provayderə zəng etmək eynidir. Və onu ayrı bir ataya qoymaq məntiqlidir. Və provayderin bu fayla Symlinks etməsi tələb olunduğu yerdə.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Məsələn, siz bəzi xarici Amazon hesabına giriş hüquqlarını əldə etməyə imkan verən istehsalda assum rolundan istifadə edirsiniz. Bir faylı dəyişdirməklə, resurs ağacında qalanların hamısı tələb olunan hüquqlara sahib olacaq ki, Terraform hansı Amazon seqmentinə daxil olacağını bilsin.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Symlinks harada işləmir? Dediyim kimi, Terraformda dövlət sənədləri var. Və çox, çox gözəldirlər. Ancaq fakt budur ki, Terraform ilk olaraq arxa planı işə salır. Və bu parametrlərdə heç bir dəyişən istifadə edə bilməz, onları həmişə mətndə yazmaq lazımdır.

Və nəticədə kimsə yeni resurs yaratdıqda kodun bir hissəsini başqa qovluqlardan köçürür. Və açarla və ya vedrə ilə səhv edə bilər. Məsələn, qum qutusundan sandbox əşyası düzəldir, sonra istehsalda edir. Və beləliklə, istehsaldakı vedrənin qum qutusundan istifadə ediləcəyi ortaya çıxa bilər. Təbii ki, tez tapacaqlar. Bunu birtəhər düzəltmək mümkün olacaq, lakin buna baxmayaraq, bu, vaxt və müəyyən dərəcədə resurslar itkisidir.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Bundan sonra nə edə bilərik? Terraform ilə işləməzdən əvvəl onu işə salmalısınız. Başlama zamanı Terraform bütün plaginləri yükləyir. Bir anda onlar monolitdən daha mikroservis arxitekturasına keçdilər. Siz həmişə Terraform init-i etməlisiniz ki, o, bütün modulları, bütün plaginləri çıxarsın.

Və siz, ilk növbədə, bütün dəyişənləri əldə edə bilən bir qabıq skriptindən istifadə edə bilərsiniz. Shell skripti məhdudiyyətsizdir. Və ikincisi, yol. Həmişə depoda olan yolu dövlət faylının açarı kimi istifadə etsək, müvafiq olaraq səhv burada istisna ediləcəkdir.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Məlumatı haradan əldə etmək olar? JSON faylı. Terraform sizə infrastrukturu təkcə hcl (HashiCorp Konfiqurasiya Dili) ilə deyil, həm də JSON-da yazmağa imkan verir.

JSON-u qabıq skriptindən oxumaq asandır. Müvafiq olaraq, bir yerə bir vedrə ilə bir konfiqurasiya faylı qoya bilərsiniz. Bu vedrədən həm Terraform kodunda, həm də başlanğıc üçün shell skriptində istifadə edin.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Terraform vedrəsinin olması niyə vacibdir? Çünki uzaq dövlət faylları kimi bir şey var. Yəni, mən bəzi resurs toplayanda Amazona: “Lütfən, nümunəni qaldırın” demək üçün bir çox tələb olunan parametrləri qeyd etməliyəm.

Və bu identifikatorlar başqa bir qovluqda saxlanılır. Mən onu götürüb deyə bilərəm: "Terraform, lütfən, həmin resursun dövlət faylına daxil olun və mənə bu identifikatorları gətirin." Beləliklə, müxtəlif bölgələr və ya mühitlər arasında bir növ birləşmə var.

Uzaq dövlət faylını istifadə etmək həmişə mümkün deyil. Məsələn, əl ilə VPC yaratdınız. Və VPC-ni yaradan Terraform kodu o qədər fərqli VPC yaradır ki, bu, çox uzun vaxt aparır və siz birini digərinə uyğunlaşdırmalısınız, beləliklə, aşağıdakı hiylədən istifadə edə bilərsiniz.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Yəni, VPC-ni düzəldən və sizə identifikatorlar verən bir modul etmək, amma əslində eyni nümunəni yaratmaq üçün istifadə edilə bilən kodlanmış dəyərləri olan bir fayl var.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Dövlət faylını buludda saxlamaq həmişə lazım deyil. Məsələn, modulları sınaqdan keçirərkən, faylın sınaq zamanı yalnız diskdə saxlanacağı zaman backend inisializasiyasından istifadə edə bilərsiniz.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

İndi bir az test haqqında. Terraform-da nə sınana bilər? Yəqin ki, çox şey mümkündür, amma bu 4 şey haqqında danışacağam.

HashiCorp Terraform kodunu necə formatlaşdırmaq barədə anlayışa malikdir. Terraform fmt isə redaktə etdiyiniz kodu həmin inanca uyğun formatlaşdırmağa imkan verir. Müvafiq olaraq, testlər formatlaşdırmanın HashiCorp-un vəsiyyət etdiyinə uyğun olub-olmadığını mütləq yoxlamalıdır ki, mötərizələrin yerini dəyişməyə ehtiyac qalmasın və s.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Növbəti Terraform təsdiqidir. Bu, sintaksis yoxlamasından bir az daha çox şey edir - ala, bütün mötərizələr qoşalaşmışdır. Burada vacib olan nədir? Bizim çox incə infrastrukturumuz var. Onun çoxlu müxtəlif qovluqları var. Və hər birində Terraform validate-i işə salmalısınız.

Müvafiq olaraq, testi sürətləndirmək üçün paralel istifadə edərək paralel olaraq bir neçə prosesi icra edirik.

Paralellik çox gözəl şeydir, istifadə edin.

Lakin hər dəfə Terraform işə salındıqda HashiCorp-a gedir və soruşur: “Ən son plaginlər hansılardır? Keş yaddaşımda olan plagin - birdir, yoxsa bir deyil? Və hər addımda yavaşladı.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Terraform sizə plaginlərin harada olduğunu söyləsə, Terraform deyəcək: “Yaxşı, bu, yəqin ki, orada olan ən təzə şeydir. Mən heç yerə getməyəcəyəm, dərhal Terraform kodunuzu təsdiqləməyə başlayacağam."

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Qovluğu lazımi plaginlərlə doldurmaq üçün bizdə sadəcə işə salınması lazım olan çox sadə Terraform kodu var. Burada, əlbəttə ki, kodunuzda bir növ iştirak edən bütün provayderləri göstərməlisiniz, əks halda Terraform deyəcək: "Mən heç bir provayder tanımıram, çünki o, keşdə deyil."

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Növbəti plan Terraform planıdır. Dediyim kimi, inkişaf tsiklikdir. Dəyişikliklərlə kodu düzəldirik. Və sonra infrastruktur üçün hansı dəyişikliklərin planlaşdırıldığını öyrənməlisiniz.

İnfrastruktur çox, çox böyük olduqda, bir modulu dəyişdirə, bəzi test mühitini və ya müəyyən bir bölgəni düzəldə və bəzi qonşunu qıra bilərsiniz. Buna görə də bütün infrastruktur üçün Terraform planı hazırlanmalı və hansı dəyişikliklərin planlaşdırıldığını göstərməlidir.

Bunu ağıllı şəkildə edə bilərsiniz. Məsələn, biz asılılıqları həll edən Python skripti yazdıq. Və nəyin dəyişdirilməsindən asılı olaraq: Terraform modulu və ya sadəcə müəyyən bir komponent, o, bütün asılı qovluqlar üçün planlar hazırlayır.

Terraform planı tələb əsasında hazırlanmalıdır. Ən azından biz bunu edirik.

Testlər, əlbəttə ki, hər dəyişiklik, hər öhdəlik üçün etmək yaxşıdır, lakin planlar olduqca bahalı bir şeydir. Və biz çəkmə sorğusunda deyirik: "Zəhmət olmasa planları mənə verin." Robot başlayır. Və şərhlərə göndərir və ya dəyişikliklərinizdən gözlənilən bütün planları əlavə etmək üçün.

Plan olduqca bahalı bir şeydir. Bu vaxt tələb edir, çünki Terraform Amazona gedir və “Bu nümunə hələ də mövcuddurmu? Bu avtomiqyasda eyni parametrlər varmı?”. Və onu sürətləndirmək üçün siz refresh=false kimi parametrdən istifadə edə bilərsiniz. Bu o deməkdir ki, Terraform S3 vəziyyətini söndürəcək. Və dövlətin Amazonda olanlara tam uyğun olacağına inanacaq.

Belə bir Terraform planı daha sürətlidir, lakin dövlət sizin infrastrukturunuza uyğun olmalıdır, yəni haradasa, nə vaxtsa Terraform yeniləməsi başlamalıdır. Terraform yeniləməsi tam olaraq bunu edir, belə ki, dövlət real infrastrukturda olanlara uyğun gəlir.

Və təhlükəsizlik haqqında deməliyəm. Buradan başlamalı idi. Terraform və Terraformun infrastrukturunuzla işlədiyi yerdə zəiflik var. Yəni siz əslində kodu icra edirsiniz. Əgər çəkmə sorğusunda bir növ zərərli kod varsa, o, həddindən artıq girişi olan infrastrukturda icra oluna bilər. Buna görə də, Terraform planını işə saldığınız yerdə diqqətli olun.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Haqqında danışmaq istədiyim növbəti şey istifadəçi məlumatlarının testidir.

İstifadəçi məlumatları nədir? Amazonda biz instansiya yaratdıqda instansiyadan bir növ məktub göndərə bilərik - meta data. Nümunə işə salındıqda, adətən bulud başlanğıcı həmişə həmin instansiyalarda mövcuddur. Cloud init bu məktubu oxuyur və deyir: "Yaxşı, bu gün mən yük balansçısıyam." Və bu göstərişlərə uyğun olaraq bəzi əməlləri yerinə yetirir.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Təəssüf ki, biz Terraform planını etdikdə və Terraform tətbiq etdikdə, istifadəçi məlumatları bu rəqəmlər şlamına bənzəyir. Yəni o, sadəcə olaraq sizə hash göndərir. Planda görə biləcəyiniz hər hansı bir dəyişiklik olub-olmayacağı və ya hashın eyni qalacağıdır.

Əgər buna diqqət yetirməsəniz, bəzi döyülmüş mətn faylı Amazon-a, real infrastruktura gedə bilər.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Alternativ olaraq, icra zamanı bütün infrastrukturu deyil, yalnız şablonu təyin edə bilərsiniz. Və kodda deyin: "Zəhmət olmasa bu şablonu mənim üçün göstərin." Və nəticədə, məlumatlarınızın Amazonda necə görünəcəyi ilə bağlı çapı əldə edə bilərsiniz.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Başqa bir seçim istifadəçi məlumatlarını yaratmaq üçün moduldan istifadə etməkdir. Siz bu modulu tətbiq edəcəksiniz. Faylı diskə daxil edin. İstinad ilə müqayisə edin. Beləliklə, əgər bəzi jun bir az istifadəçi məlumatlarını düzəltməyə qərar verərsə, testləriniz deyəcək: "Yaxşı, burada və orada bəzi dəyişikliklər var - bu normaldır."

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Haqqında danışmaq istədiyim növbəti şey Terraform tətbiqini avtomatlaşdırmaqdır.

Əlbəttə ki, Terraform-u avtomatik rejimdə tətbiq etmək kifayət qədər qorxuludur, çünki orada hansı dəyişikliklərin baş verdiyini və onların canlı infrastruktura nə qədər zərər verə biləcəyini kim bilir.

Test mühiti üçün hər şey yaxşıdır. Yəni test mühiti yaradan iş bütün tərtibatçılara lazım olan şeydir. Və "hər şey mənim üçün işlədi" kimi bir ifadə gülməli bir mem deyil, bir insanın çaşqın olduğunun, bir yığın qaldırdığının, bu yığında bəzi testlər başlatdığının sübutudur. Və orada hər şeyin yaxşı olduğuna əmin oldu və dedi: "Yaxşı, buraxdığım kod sınaqdan keçirildi."

İstehsalatda, sandboxda və biznes baxımından daha kritik olan digər mühitlərdə bəzi resurslardan qismən istifadə etmək təhlükəsizdir, çünki bu, heç kimin ölümünə səbəb olmur. Bunlar: avtomatik miqyaslı qruplar, təhlükəsizlik qrupları, rollar, marşrut53 və orada siyahı olduqca böyük ola bilər. Ancaq baş verənlərə diqqət yetirin, avtomatlaşdırılmış tətbiqlərin hesabatlarını oxuyun.

İstifadənin təhlükəli və ya qorxulu olduğu yerlərdə, məsələn, əgər bunlar bəzi davamlı resurslardırsa, verilənlər bazasından, o zaman infrastrukturun bəzi hissələrində tətbiq olunmamış dəyişikliklərin olması barədə hesabat alın. Mühəndis artıq tətbiq etmək üçün çalışan işlərə nəzarət edir və ya bunu konsolundan edir.

Amazonda Mühafizəni dayandırmaq kimi bir şey var. Və bəzi hallarda sizin üçün tələb olunmayan dəyişikliklərdən qoruya bilər. Beləliklə, Terraform Amazona getdi və "Başqasını etmək üçün bu nümunəni öldürməliyəm" dedi. Və Amazon deyir: “Bağışlayın, bu gün deyil. Bizdə Terminate müdafiəsi var.”

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Tortun üzərindəki buzlanma isə kodun optimallaşdırılmasıdır. Terraform kodu ilə işləyərkən modula çox sayda parametr ötürməliyik. Bunlar bir növ resurs yaratmaq üçün lazım olan parametrlərdir. Və kod moduldan modula, moduldan modula ötürülməli olan parametrlərin böyük siyahılarına çevrilir, xüsusən də modullar iç-içə olduqda.

Və oxumaq çox çətindir. Bunu nəzərdən keçirmək çox çətindir. Və çox vaxt məlum olur ki, bəzi parametrlər nəzərdən keçirilir və onlar tamamilə lazım olanlar deyil. Və sonradan onu düzəltmək üçün vaxt və pul lazımdır.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Buna görə də, belə bir şeyi müəyyən bir dəyər ağacını ehtiva edən kompleks parametr kimi istifadə etməyi təklif edirəm. Yəni, bir növ mühitdə sahib olmaq istədiyiniz bütün dəyərlərə sahib olduğunuz bir növ qovluğa ehtiyacınız var.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Və bu modulu çağırmaqla bir ümumi modulda, yəni bütün infrastruktur üçün eyni işləyən ümumi modulda yaradılan ağacı əldə edə bilərsiniz.

Bu modulda siz yerli sakinlər kimi Terraform-da yeni funksiyadan istifadə edərək bəzi hesablamalar edə bilərsiniz. Və sonra bir çıxışda heşlər, massivlər və s. daxil ola biləcək bir növ mürəkkəb parametr verin.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Bununla əlaqədar, sona çatdığım bütün ən yaxşı tapıntılar. Və mən Kolumb haqqında bir hekayə danışmaq istərdim. Hindistanı kəşf etmək üçün etdiyi ekspedisiya üçün pul axtararkən (o vaxt düşündüyü kimi) heç kim ona inanmadı və bunun qeyri-mümkün olduğuna inanmadı. Sonra dedi: “Yumurtanın düşməməsinə diqqət yetirin”. Bütün bankirlər, çox zəngin və yəqin ki, ağıllı adamlar, yumurtanı bir şəkildə qoymağa çalışdılar və o, hər zaman düşdü. Sonra Kolumb yumurtanı götürdü, bir az sıxdı. Qabıq əzildi və yumurta hərəkətsiz qaldı. Dedilər: "Ah, bu çox asandır!" Və Kolumb cavab verdi: “Bəli, çox sadədir. Mən Hindistanı açanda hamı bu ticarət yolundan istifadə edəcək”.

Sizə dediklərim yəqin ki, olduqca sadə və mənasız şeylərdir. Onlar haqqında öyrənib istifadə etməyə başlayanda hər şey qaydasındadır. Buna görə istifadə edin. Əgər bunlar sizin üçün olduqca normal şeylərdirsə, heç olmasa yumurtanın düşməməsi üçün necə qoyacağınızı bilirsiniz.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Xülasə edək:

  • Qar dənəciklərindən qaçmağa çalışın. Və nə qədər az qar dənəciyi olsa, bütün böyük infrastrukturunuzda hər hansı dəyişiklik etmək üçün bir o qədər az resursa ehtiyacınız olacaq.
  • Daimi dəyişiklik. Yəni kodda bəzi dəyişikliklər baş verdikdə, siz öz infrastrukturunuzu ən qısa zamanda bu dəyişikliklərə uyğunlaşdırmalısınız. Elə bir vəziyyət olmamalıdır ki, kimsə iki-üç aydan sonra Elasticsearch-a baxmağa gəlsin, Terraform planı qursun və onun gözləmədiyi xeyli dəyişikliklər olsun. Və hər şeyi qaydasına salmaq üçün çox vaxt lazımdır.
  • Testlər və avtomatlaşdırma. Kodunuz testlər və çiplərlə nə qədər çox əhatə olunarsa, hər şeyi düzgün etdiyinizə bir o qədər əmin olursunuz. Avtomatik çatdırılma isə inamınızı dəfələrlə artıracaq.
  • Test və istehsal mühitləri üçün kod demək olar ki, eyni olmalıdır. Praktiki olaraq, çünki istehsal bir az fərqlidir və hələ də sınaq mühitindən kənara çıxacaq bəzi nüanslar olacaq. Ancaq buna baxmayaraq, müsbət və ya mənfi təmin edilə bilər.
  • Əgər sizin çoxlu Terraform kodunuz varsa və bu kodu yeni saxlamaq çox vaxt tələb edirsə, onda refaktor etmək və onu yaxşı formaya salmaq heç vaxt gec deyil.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

  • dəyişməz infrastruktur. Cədvəl üzrə AMI çatdırılması.
  • Çoxlu girişiniz olduqda və onların ardıcıl qaydada olmasını istədiyiniz zaman marşrut53 üçün struktur.
  • API dərəcəsi məhdudiyyətlərinə qarşı mübarizə aparın. Bu zaman Amazon deyir ki, "Belədir, mən daha heç bir sorğu qəbul edə bilmərəm, xahiş edirəm gözləyin". Ofisin yarısı isə öz infrastrukturunu işə salana qədər gözləyir.
  • ləkə halları. Amazon ucuz bir hadisə deyil və ləkələr kifayət qədər qənaət etməyə imkan verir. Və orada bu barədə bütöv bir hesabat deyə bilərsiniz.
  • Təhlükəsizlik və IAM rolları.
  • İtirilmiş resursları axtarın, Amazonda mənşəyi naməlum nümunələr olduqda, onlar pul yeyirlər. Nümunələr ayda 100-150 dollara başa gəlsə belə, ildə 1 dollardan çoxdur. Belə resursları tapmaq gəlirli bir işdir.
  • Və qorunan nümunələr.

Xaos və əl işləri ilə mübarizə aparmaq üçün Terraformda naxışlar. Maksim Kostrikin (Ixtens)

Mənim üçün hamısı budur. Terraform çox gözəldir, istifadə edin. Çox sağ ol!

Suallar

Hesabat üçün təşəkkür edirik! S3-də dövlət faylınız var, lakin bir neçə nəfərin bu dövlət faylını götürüb yerləşdirməyə cəhd edə biləcəyi problemi necə həll edirsiniz?

Birincisi, biz tələsmirik. İkincisi, bəzi kod parçası üzərində işlədiyimizi bildirdiyimiz bayraqlar var. Yəni, infrastrukturun çox böyük olmasına baxmayaraq, bu o demək deyil ki, kimsə davamlı olaraq nədənsə istifadə edir. Və aktiv faza olanda bu problem idi, biz Git-də dövlət fayllarını saxlayırdıq. Bu vacib idi, əks halda kimsə dövlət faylı yaradacaqdı və biz daha da davam etmək üçün onları əl ilə yığın şəklində toplamalı olduq. İndi belə bir problem yoxdur. Ümumiyyətlə, Terraform bu problemi həll etdi. Və əgər bir şey daim dəyişirsə, dediklərinizə mane olan qıfıllardan istifadə edə bilərsiniz.

Açıq mənbədən və ya müəssisədən istifadə edirsiniz?

Heç bir müəssisə, yəni gedib pulsuz yükləyə biləcəyiniz hər şey.

Mənim adım Stanislavdır. Kiçik bir əlavə etmək istədim. Siz nümunəni öldürməz hala gətirməyə imkan verən Amazon xüsusiyyətindən danışdınız. Bu, Terraformun özündə də var, Life Second blokunda siz dəyişdirməyə qadağa və ya məhv etməyə qadağa təyin edə bilərsiniz.

Vaxt məhdud idi. Yaxşı fikir.

Mən də iki şey soruşmaq istədim. Əvvəlcə sınaqdan danışdınız. Hər hansı test alətindən istifadə etmisiniz? Test Mətbəxi plagini haqqında eşitdim. Bəlkə də başqa bir şey var. Mən isə Yerli Dəyərlər haqqında soruşmaq istərdim. Onlar əsasən Giriş Dəyişənlərindən nə ilə fərqlənir? Və niyə mən nəyisə yalnız Yerli Dəyərlər vasitəsilə parametrləşdirə bilmirəm? Bu mövzu ilə məşğul olmağa çalışdım, amma nədənsə özüm başa düşmədim.

Bu zalın arxasında daha ətraflı danışa bilərik. Test alətləri bizim özümüz tərəfindən hazırlanmışdır. Orada sınanacaq heç nə yoxdur. Ümumiyyətlə, avtomatik testlər infrastrukturu hardasa qaldıranda, onun qaydasında olduğunu yoxlayanda və sonra infrastrukturunuzun hələ də yaxşı vəziyyətdə olması barədə hesabatla hər şeyi məhv edəndə variantlar var. Test yığınları hər gün işlədiyi üçün bizdə buna malik deyilik. Və bu kifayətdir. Və əgər bir şey qırılmağa başlasa, o zaman biz onu başqa yerdə yoxlamadan da qırılmağa başlayacaq.

Yerli Dəyərlərə gəlincə, söhbəti auditoriyadan kənarda davam etdirək.

Salam! Hesabat üçün təşəkkür edirik! Çox məlumatlandırıcıdır. Dediniz ki, infrastrukturu təsvir etmək üçün çoxlu eyni tipli kodlarınız var. Bu kodu yaratmağı düşünmüsünüzmü?

Əla sual, təşəkkürlər! Məsələ burasındadır ki, biz infrastrukturdan kod kimi istifadə etdikdə biz koda baxdığımızı və bu kodun arxasında hansı infrastrukturun dayandığını anlayırıq. Əgər kod yaradılıbsa, o zaman orada hansı infrastrukturun olacağını başa düşmək üçün hansı kodun yaradılacağını təsəvvür etməliyik. Yaxud kodu yaradırıq, icra edirik və əslində eyni şeyi əldə edirik. Ona görə də yazdığımız yolla getdik, aldıq. Üstəlik, generatorlar bir az sonra, biz hazırlamağa başlayanda ortaya çıxdı. Və dəyişmək üçün çox gec idi.

jsonnet haqqında eşitmisiniz?

Saylı

Bax, bu, həqiqətən gözəl şeydir. Mən onu tətbiq edə və məlumat strukturu yarada biləcəyiniz xüsusi bir hal görürəm.

Generatorlar əlinizdə olanda yaxşıdır, məsələn təraş maşını haqqında zarafatda. Yəni ilk dəfə üz fərqli olur, amma sonra hamı eyni sifətə malikdir. Generatorlar çox sərindir. Amma təəssüf ki, üzümüz bir az fərqlidir. Bu problemdir.

Sadəcə bax. Çox sağ ol!

Mənim adım Maksim, mən Sberbankdanam. Bir az dedin ki, Terraformu proqramlaşdırma dilinin analoquna gətirməyə çalışmısan. Ansible-dan istifadə etmək daha asan deyilmi?

Bunlar çox fərqli şeylərdir. Ansible resursları, Kukla isə Amazonda resurslar yarada bilər. Ancaq Terraform açıq şəkildə kəskinləşdi.

Sizdə yalnız Amazon var?

Söhbət təkcə Amazonumuzun olması deyil. Bizdə demək olar ki, yalnız Amazon var. Ancaq əsas xüsusiyyət Terraformun yadda saxlamasıdır. Ansible-də: "Mənə 5 nümunə götür" desəniz, o, yüksələcək və sonra: "İndi mənə 3 nümunə lazımdır" deyirsiniz. Və Terraform deyəcək: "Yaxşı, mən 2 öldürəcəm" və Ansible deyəcək: "Yaxşı, sənin üçün 3-dür." Cəmi 8.

Salam! Hesabatınız üçün təşəkkür edirik! Terraform haqqında eşitmək çox maraqlı idi. Mən sadəcə Terraformun hələ də stabil buraxılışının olmaması haqqında kiçik bir şərh vermək istəyirəm, ona görə də Terraform ilə çox diqqətli olun.

Nahar üçün gözəl qaşıq. Yəni bir həllə ehtiyacınız varsa, onda siz bəzən qeyri-sabit olanı və s.-ni təxirə salırsınız, amma bu işləyir və bizə kömək etdi.

sual budur. Siz Remote backend istifadə edirsiniz, siz S 3 istifadə edirsiniz. Niyə rəsmi backenddən istifadə etmirsiniz?

Rəsmi?

Terraform Bulud.

O, nə vaxt meydana çıxdı?

4 ay əvvəl.

Əgər 4 il əvvəl ortaya çıxsaydı, yəqin ki, sualınıza cavab verərdim.

Artıq daxili funksiya və kilidlər var və siz dövlət faylını saxlaya bilərsiniz. Yoxla. Amma mən də sınaqdan keçirməmişəm.

Biz yüksək sürətlə hərəkət edən böyük bir qatardayıq. Və sadəcə bir neçə maşını götürüb çölə ata bilməzsən.

Qar dənəciklərindən danışırdın, niyə budaqdan istifadə etmədin? Niyə belə alınmadı?

Bizdə elə bir yanaşma var ki, bütün infrastruktur bir depodadır. Terraform, Kukla, birtəhər bununla əlaqəli bütün skriptlər, hamısı bir depodadır. Beləliklə, artımlı dəyişikliklərin bir-bir sınaqdan keçirilməsini təmin edə bilərik. Bir dəstə filial olsaydı, belə bir layihəni saxlamaq demək olar ki, qeyri-mümkün olardı. Altı ay keçir və o qədər ayrılırlar ki, bu, sadəcə bir növ cəzadır. Refaktorinqdən əvvəl qaçmaq istədiyim budur.

yəni işləmir?

Bu heç işləmir.

Filialda qovluq slaydını kəsdim. Yəni hər bir test yığını üçün etsəniz, məsələn, A komandasının öz atası, B komandasının öz atası var, bu da işləmir. Hər kəsə uyğun olacaq qədər çevik olan vahid test mühiti kodu yaratdıq. Yəni bir kod təqdim etdik.

Salam! Mənim adım Yura! Hesabat üçün təşəkkür edirik! Modullar haqqında sual. Siz modullardan istifadə etdiyinizi deyirsiniz. Bir modulda başqa bir şəxsin dəyişməsi ilə uyğun olmayan dəyişikliklər edilibsə, problemi necə həll etmək olar? Nədənsə modulları versiyaya çevirmək və ya iki tələbə cavab vermək üçün bir möcüzə gətirməyə çalışırsınız?

Bu, böyük qar yığını problemidir. Hansısa zərərsiz dəyişiklik infrastrukturun bir hissəsini poza bildikdə əziyyət çəkdiyimiz budur. Və yalnız bir müddət sonra nəzərə çarpacaq.

Yəni hələ qərar verilməyib?

Siz universal modullar düzəldirsiniz. Qar dənəciklərindən çəkinin. Və hər şey düzələcək. Hesabatın ikinci yarısı bundan necə qaçmaq barədədir.

Salam! Hesabat üçün təşəkkür edirik! aydınlaşdırmaq istərdim. Pərdə arxasında böyük bir qalaq var idi, mən bunun üçün gəldim. Kukla və rol bölgüsü necə inteqrasiya olunur?

istifadəçi məlumatları.

Yəni, sadəcə olaraq faylı tüpürüb birtəhər icra edirsiniz?

İstifadəçi məlumatları bir qeyddir, yəni bir şəkil klonunu hazırlayanda Daemon orada yüksəlir və onun kim olduğunu anlamağa çalışır, yük balanslaşdırıcısı olduğu qeydini oxuyur.

Yəni bir növ ayrı-ayrı prosesdirmi?

Biz icad etməmişik. Biz istifadə edirik.

Salam! Sadəcə İstifadəçi məlumatları ilə bağlı sualım var. Dediniz ki, orda problemlər var, kimsə yanlış yerə nəsə göndərə bilər. İstifadəçi məlumatlarının nəyə istinad etdiyi həmişə aydın olması üçün eyni Git-də istifadəçi məlumatlarını saxlamağın bir yolu varmı?

Şablondan İstifadəçi məlumatlarını yaradırıq. Yəni müəyyən sayda dəyişən ora müraciət edir. Və Terraform son nəticəni yaradır. Buna görə də, sadəcə şablona baxıb nə baş verdiyini deyə bilməzsiniz, çünki bütün problemlər tərtibatçının bu dəyişəndə ​​bir sətir keçdiyini düşünməsi və sonra massivdən istifadə etməsi ilə əlaqədardır. Və o - bam və mən - filankəs, filankəs, növbəti sətir və hər şey qırıldı. Bu yeni bir resursdursa və insan onu qaldırırsa, bir şeyin işləmədiyini görürsə, bu tez həll olunur. Və əgər bu avtomatik miqyaslı qrup yenilənibsə, onda bir anda avtomatik miqyas qrupundakı nümunələr dəyişdirilməyə başlayır. Və əl çalın, bir şey işləmir. Bu incidir.

Belə çıxır ki, yeganə həll yolu sınaqdır?

Bəli, problemi görürsən, ora test addımlarını əlavə edirsən. Yəni çıxış da sınaqdan keçirilə bilər. Ola bilsin ki, o qədər də rahat deyil, amma siz də müəyyən işarələr qoya bilərsiniz - İstifadəçi məlumatlarının burada bağlandığını yoxlayın.

Mənim adım Timurdur. Çox gözəldir ki, Terraformu necə düzgün təşkil etmək barədə hesabatlar var.

Mən heç başlamadım.

Düşünürəm ki, növbəti konfransda bəlkə də olacaq. Sadə bir sualım var. Niyə tfvarlardan istifadə etmək əvəzinə dəyəri ayrıca modulda kodlaşdırırsınız, yəni dəyərləri tfvarlardan daha yaxşı olan moduldur?

Yəni mən bura yazmalıyam (slayd: Production/environment/settings.tf): domain = dəyişən, domain vpcnetwork, vpcnetwork dəyişəni və stvars - eyni şey alınsın?

Biz məhz bunu edirik. Məsələn, mənbənin qəbulu moduluna müraciət edirik.

Əslində, bu belə bir tfvarsdır. Tfvars sınaq mühitində çox əlverişlidir. Böyük nümunələr üçün tfvarlarım var, kiçik olanlar üçün. Və bir faylı qovluğa atdım. Və istədiyimi aldım. Biz infrastrukturu görəndə hər şeyi görmək və dərhal başa düşmək istəyirik. Və belə çıxır ki, bura baxmaq lazımdır, sonra tfvars-a baxmaq lazımdır.

Belə çıxır ki, hər şey bir yerdə idi?

Bəli, tfvars bir kodun olduğu zamandır. Və müxtəlif nüanslarla bir neçə fərqli yerdə istifadə olunur. Onda tfvar atıb nüanslarınızı alardınız. Biz isə ən təmiz formada kod kimi infrastrukturuq. Baxdı və başa düşdü.

Salam! Bulud provayderinin Terraform ilə etdiyiniz işlərə müdaxilə etdiyi vəziyyətlərlə rastlaşmısınızmı? Deyək ki, biz meta verilənləri redaktə edirik. ssh düymələri var. Və Google daim öz meta-məlumatlarını, açarlarını orada saxlayır. Terraform isə həmişə yazır ki, onun dəyişiklikləri var. Hər qaçışdan sonra heç nə dəyişməsə belə, həmişə bu sahəni indi yeniləyəcəyini deyir.

Açarlarla, amma - bəli, infrastrukturun bir hissəsi belə bir şeydən təsirlənir, yəni Terraform heç nəyi dəyişə bilməz. Biz də əlimizlə heç nəyi dəyişə bilmərik. Nə qədər ki, onunla yaşayırıq.

Yəni, sən bununla rastlaşdın, amma heç nə ağlına gətirmədin, o bunu necə edir və özü edir?

Təəssüf ki, bəli.

Salam! Mənim adım Stanislav Starkovdur. Poçt. az Qrup. ... üzərində etiket yaratmaqla problemi necə həll edirsiniz, onu içəriyə necə ötürmək olar? Mən başa düşdüyüm kimi, İstifadəçi vasitəsilə - data, host adını müəyyən etmək, Kukla təhrik? Və sualın ikinci hissəsi. SG-də bu problemi necə həll edirsiniz, yəni SG yaratdığınız zaman, eyni tipli yüzlərlə nümunə, onları necə düzgün adlandırmaq olar?

Bizim üçün çox vacib olan nümunələri gözəl adlandıracağıq. Lazım olmayanlar, bunun avtomatik miqyaslı bir qrup olduğuna dair bir yazı var. Və nəzəri olaraq, mismarlana bilər və yenisini əldə edə bilərsiniz.

Teqlə bağlı problemə gəlincə, belə bir problem yoxdur, amma belə bir tapşırıq var. İnfrastruktur böyük və bahalı olduğu üçün teqlərdən çox, çox istifadə edirik. Və biz pulun nəyə xərcləndiyinə baxmalıyıq, ona görə də etiketlər nəyin və hara getdiyini müəyyən etməyə imkan verir. Və buna uyğun olaraq, burada bir şey axtarmaq çox pul xərcləyir.

Sual başqa nə ilə bağlı idi?

SG yüz nümunə yaratdıqda, onları bir şəkildə fərqləndirmək lazımdırmı?

Yox, etmə. Hər bir instansiyada problemim olduğunu deyən agent var. Agent xəbər verirsə, agent onun haqqında bilir və ən azı onun IP ünvanı mövcuddur. Artıq qaça bilərsiniz. İkincisi, biz Kəşf üçün Konsuldan istifadə edirik, burada Kubernetes yoxdur. Konsul da instansiyanın IP ünvanını göstərir.

Yəni siz host adını deyil, məhz IP-ni hədəfləyirsiniz?

Host adı ilə naviqasiya etmək mümkün deyil, yəni onların çoxu var. Nümunə identifikatorları var - AE və s. Onu haradasa tapa bilərsiniz, axtarışa ata bilərsiniz.

Salam! Anladım ki, Terraform buludlara uyğunlaşdırılmış yaxşı bir şeydir.

Yalnız deyil.

Məni maraqlandıran sual budur. Bütün nümunələrinizlə birlikdə kütləvi şəkildə Bare Metal-ə köçmək qərarına gəlsəniz? Problemlər olacaqmı? Yoxsa hələ də başqa məhsullardan, məsələn, burada qeyd olunan Ansible-dan istifadə etməlisiniz?

Ansible bir az başqa bir şey haqqındadır. Yəni, nümunə işə salındıqda Ansible artıq işləyir. Və Terraform nümunə başlamazdan əvvəl işləyir. Bare Metal-ə keçid deyil.

İndi yox, iş gəlib deyəcək: “Buyurun”.

Başqa buluda keçid - bəli, amma burada bir az fərqli xüsusiyyət var. Terraform kodunu elə yazmalısınız ki, daha az qan tökməklə başqa buludlara keçə biləsiniz.

Əvvəlcə tapşırıq ondan ibarət idi ki, bizim bütün infrastrukturumuz aqnostikdir, yəni istənilən bulud yaxşı olmalıdır, lakin bir anda biznes imtina etdi və dedi: “Yaxşı, növbəti N ildə biz heç yerə getməyəcəyik, siz buradan xidmətlərdən istifadə edə bilərsiniz. Amazon ".

Terraform sizə Front-End işləri yaratmağa, PagerDuty-ni, data sənədlərini və s.-ni konfiqurasiya etməyə imkan verir. Onun çoxlu quyruğu var. O, praktiki olaraq bütün dünyanı idarə edə bilir.

Hesabat üçün təşəkkür edirik! Mən də artıq 4 ildir ki, Terraformun spinləri ilə məşğulam. Terraforma, infrastruktura, deklarativ təsvirə rəvan keçid mərhələsində biz elə bir vəziyyətlə qarşılaşdıq ki, kimsə əl ilə nəsə edir, siz isə plan qurmağa çalışırdınız. Və orada bir səhv aldım. Belə problemlərlə necə məşğul olursunuz? Göstərilən itirilmiş resursları necə tapırsınız?

Daha çox əlimizlə, gözümüzlə hesabatda qəribə bir şey görsək, o zaman orada baş verənləri təhlil edirik və ya sadəcə öldürürük. Ümumiyyətlə, çəkmə sorğuları ümumi bir şeydir.

Səhv olarsa, geri qaytarırsınız? Bunu etməyə cəhd etmisiniz?

Yox, bu, insanın problemi gördüyü anda verdiyi qərardır.

Mənbə: www.habr.com