Infrastruktúra kódként - Alexander bulimov - gyártás mérnök s jegyzetek

Van egy tendencia most - együttműködik az IT-infrastruktúra kódot. Nos, a cél ennek a módszert ismertet az idézet:

„Enable a rekonstrukció a vállalkozás a semmi, de a forráskód repository, kérelmet adatmentés, és a csupasz fém források”

Teljes mértékben támogatja ezt az elképzelést, és ez ebben az értelmezést.

Ha beszélünk a paradigma, hogy kínál nekünk ez a módszer, akkor itt van:

Fenntartani egy moduláris, könnyen automatizálható infrastruktúra, és írja le az infrastruktúra magas szintű nyelven.

Ez számunkra azt jelenti, mint rendszergazda, fel kell használni az összes működési idő szoftverfejlesztők, mint például:

  • Infrastruktúra leírja verzióarchiválási;
  • teljes vizsgálat leírása segítségével több szakaszban (dev, QA, stádium, Prod);
  • belső standardok „kódoló”;
  • folyamatos integrációs (folyamatos integráció).

A probléma, véleményem az, hogy sok ember érti „Infrastruktúra-Code” más értelemben - „Írjunk egy leírást az infrastruktúra segítségével Chef / Puppet, ha ez egy szabályos kódot.” És a Chef van kifejezve sokkal erősebb, mert a DSL használnak, mint egy tiszta Ruby.

Persze, programozók, semmilyen módon felelőssé válik az adminisztráció szervereket Chef, szívesen kezdenek használni ismerős eszközök (Ruby) szokásos ugyanúgy és hogy pontosan mit szoktak csinálni. Ehelyett deklaratív leírását infrastruktúrát, amelyen keltésére bármilyen eszköz konfiguráció-menedzsment, és kap egy személyre szabott infrastruktúra, a kimenet egy olyan program, egy csomó hack, több elágazást, a teljesítménye Shell kód, ami lehet fontos, hogy a rendszer a kívánt állapotot.

Erre példa lehet gyakorlatilag bármilyen szabványos kukbuk Chef. Vegyük például, lenne nginx szakácskönyvet. Ő tudja, hogyan kell tenni nginx többféleképpen, beleértve a szerelvény a forrást, és tartalmaz egy csomó változók célja, hogy felváltsa az írás az állítólagos minta nginx config feladat ez a felvétel változókat.

Ez önmagában is egy rossz megközelítés -, hogy megpróbálja teletölteni összes funkcióját nginx (és még a harmadik féltől származó modulokat) az egyik mega-sablont, és módosítsa csak azokat a változókat.

Az épület forrásból a kukbuke is számos kérdést vet fel. Miért ezt a harcot a szerver? Összeállítottunk egy csomagot építeni szerver, tesztelni, és innen terjedt el az adattárat az összes szerver - ez az általános eljárás.

Mindez ad okot, hogy sok nehézséget, sok munka van szükség írásra, tesztelése és karbantartása naprakész ezt kukbuka inkább osztja a folyamatot néhány egyszerű lépésből áll:

  • Nginx össze egy csomagot a szükséges modulokat a build-szerver, teszt, és tedd be a adattár;
  • Írja nginx config sablont az Ön igényeinek, figyelembe véve a különbségeket a jelenlegi környezetben (staging / prod);
  • Írja kukbuk / kiáltvány / szerepet, amelyet tesz ki a csomag lerakat feltölti a sablont változók különböznek a környezetében, és tegye a sablon a szerveren.

Ennyi, nem kell egy csomó kódot Ruby betétekkel a Shell, nem kell több száz változó. Van egy leírás a csomag összeszerelési folyamat (spec-fájl vagy make), és a deklaratív leírását a kívánt állapot a rendszer.

És ez tökéletes egyik elveinek Extreme Programming. amely a következőképpen szól:

Tedd a legegyszerűbb dolog, ami esetleg munka

Ez azt jelenti, meg kell győződnie arról, hogy mi kukbuk / kiáltvány / szerepe volt egyszerű ahhoz, hogy megfeleljen a jelenlegi követelményeknek. Persze, hogy vegyenek részt, és nem valami „a homlokán,” nem gondoltam, hogy helytelen lenne, hanem hozzon létre egy ál-egyetemes szörnyek csak nem éri meg. Minden szükséges intézkedést.

Mi a legrosszabb -, akik levelet Chef magát, és ezt írta kukbuk az nginx. Írásbeli is, de írt a programozók, nem pedig a rendszergazdák. És amikor sysadmins kukbuki írási ebben a stílusban alkotásaikat nélkül könnyek nem fog.

Ezért úgy döntött, hogy kezelni Ansible szerverek által létrehozott Michael DeHaan, egy ember, aki dolgozott a Puppet Labs, ő alkotta meg a Func és Cobbler, majd nagy tapasztalattal, és látta a hibákat elődei írta Ansible. Ansible sokkal könnyebb Chef vagy Bábszínház és deklaratív YAML-fájl, amely leírja a kívánt állapot a rendszer korlátozza a képességét, hogy lőni magát a láb és a felfúvódást lapsheobraznogo elengedhetetlen kódot.

Ha olvassa ezt az üzenetet, programozók, adminisztrálása szerver - megszűnik értelmezni a „Infrastruktúra-kód” a baj! Vesszük a legjobb eredményeket a világ a programozás, de ez nem egy hagyományos programozás. Nem kell újra feltalálni Bash-scripteket Ruby.