Komentáře k článku

SaltStack – sůl pro vaše servery

SaltStack je nástroj pro provozování infrastructure-as-a-code (tedy Infrastruktury jako kódu). Nástroje podobného typu jsou například Chef nebo Puppet. SaltStack je z této skupiny nejmladší, což přináší výhody i nevýhody. Oboje se vám pokusím ukázat v následujícím článku.

Zpět na článek

7 komentářů k článku SaltStack – sůl pro vaše servery:

  1. paja

    jazyk pro konfiguraci
    Prijde mi skoda, ze prestoze je software napsany v pythonu, tak na konfiguraci je pouzit YAML. Python sam o sobe je dost silny jazyk, aby se dala konfigurace provest primo v nem.

    Dokonce je-li vyzdvihovan koncept infrastructure-as-a-code, proc je ten „code“ YAML a ne python samotny?

    1. Tomáš FejfarAutor příspěvku

      Re: jazyk pro konfiguraci
      Nemůžu mluvit za autory, ale osobně to vítám. Tím, že je většina konfigurace v human-readable formátu, tak je možné se saltem začít bez znalosti Pythonu. K Pythonu se člověk poprvé dostane, když buď něco debuguje a nebo pokud si píše vlastní modul. Ale bez toho se dá vystačit dlouho. Pro práci s Puppetem nebo Chefem se člověk neobejde bez znalosti Ruby, resp. se musí naučit nějaké jejich proprietární DSL pseudojazyky. Já bych si troufl říct, že saltem se dá udělat jednoduchý LAMP bez znalosti čehokoli krom YAMLu – a naučit se YAML je zálěžitost na 15 minut (plus znalost toho, jak se instaluje ten samotný LAMP).

      Tedy python to IMO není ne proto, že by něco neuměl nebo to nebyl dost silý jazyk, ale protože je naopak moc silný a umí toho moc. Velká výhoda YAMLu je také to, že se dá snadno generovat z nějakého toolu, pokud je třeba. Takže máš volnost – napsat si to v YAMLu, v YAMLu oživeném Jinjou nebo si to napsat třeba v PHP, Ruby nebo třeba Haskelu :) Jakýkoli jazyk, který umí generovat YAML (ověřil jsem c++, c#, python, ruby, php) může generovat konfiguraci. Mě to přijde ideální. U nás to zatím máme YAML+Jinja, ale myslím, že velmi rychle přejdeme na PHP generovaný YAML nebo aspoň PHP generované pillars, protože je zbytečné držet tu konfiguraci na dvou místech (naše projektová DB + pillars).

      1. PrymekM

        Re: jazyk pro konfiguraci

        osobně to vítám. Tím, že je většina konfigurace v human-readable formátu

        Ono ani tak nejde o human-readable (to je python celkem taky), ale o to, ze YAML je deklarativni, coz je hrozne dulezity kdyz bych chtel ty konfigurace nejak porovnavat, auditovat, validovat apod.

        Jinak Salt nema jeden format, ale pluginy pro ruzne formaty (daji se napsat i vlastni) a jeden z nich je „PyDsl“ – DSL zalozeny na Pythonu a druhy je cisty python, ve kterem se proste napise funkce, ktera musi vracet data v definovanem formatu. Jak si je vyvori, to je ciste na ni.
        Vsechny pluginy jsou v namespacu salt.renderers a daji se proklikat treba tady: http://docs.saltstack.com/salt-modindex.html

        velmi rychle přejdeme na PHP generovaný YAML

        To mi neprijde jako moc dobry napad. Samozrejme zalezi na implementaci a use case, ale podle me to zbytecne prinasi dalsi vrstvu, ktera se da obvykle vyresit jinak. Generovani pillaru je v pohode, to delame taky.

        Btw, uz je i nejaka integrace s hiera, to by taky mohlo nekoho zajimat.

        1. Tomáš FejfarAutor příspěvku

          Re: jazyk pro konfiguraci
          Díky za upřesnění. Na ten PyDSL jsem narazil dřív při čtení dokumentace, ale úplně jsem na něj zapomněl.

          Ohledně generování v PHP – jde tam především o to, že máme různé věci už v PHP vyřešeny. Máme v PHP+Phing např. one click deploy. Různé helper metody, které určují co je co a co se kam má dát. A jsem si v něm mnohem jistější v tom, co píšu. Třeba připojit se k MySQL, něco tam naparsovat (např. to, který server má jakou roli) a na základě toho něco ladit – prostě business logika – to mi přijde lepší udělat v PHP především proto, že většinou někde udělám nějakou chybu – myšleno logickou chybu (zapomenu závislost atp.) a když ladím tohle, python syntaxi a salt syntaxi, tak je toho fakt hodně najednou. Být v Pythonu zběhlejší, tak bych to asi psal v něm. Ale právě ta lehkost generování a parsování YAMLu se mi líbí – že je to o jednu věc méně o kterou je potřeba se starat.

    1. Tomáš FejfarAutor příspěvku

      Re:
      Záleží, kdo co vnímá jako chyby – mě třeba vadí, že u puppetu se defaultně refreshuje state furt dokola. Takže pokud potřebuju něco vyzkoušet a přepsat, tak musím killnout puppet demona a pak ho nezapomenout zapnout. U Chefu mi zas nevyhovuje způsob zápisu kuchařek – víc se mi líbí deklarativní zápis. U obou zmíněných se mi moc nelíbí DSL a to, že se neobejde člověk bez Ruby a obecně je to víc proprietární – salt je na tom podobně jako Symfony v poslední době – místo aby měli všechno vlastní používají hotové – ZMQ, msgpack, YAML. Ale jak říkám – to, že mě to vadí neznamená, že to musí být chyba :) Někdo může vnímat jako výhodu to, že může běžet master-less (tj. mužeš si nasaltovat samotný server) nebo to, že se dá použít k vzdálenému volání příkazů – např. když potřebuješ hromadně změnit v hosts IP adresu na některých ze svých 80ti serverů. To pokud vím třeba v puppetu tak snadno nejde (ale tak moc ho zas projitý nemám), v chefu to jde IMO přes knife.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=9712