Nastavení serveru pomocí Ruby
Pro svůj nový projekt jsem potřeboval instalační skript na server, respektive na počáteční nastavení serveru. Ten se spouští pouze jednou po instalaci operačního systému, a další správa systému probíhá přes webové rozhraní.
Osvědčená řešení, jako jsou programy Puppet nebo Chef, jsem zavrhl po nějakém čase, kdy jsem si s nimi hrál. Tedy Chefa jsem si původně nechal rozmluvit sítí (hledal jsem: Puppet vs Chef) a později stejně udělal demo, které mě utvrdilo v původním rozhodnutí. Puppet je mnohem příjemnější než Chef, ale až potom, co si člověk zvykne na deklarativní styl jeho DSL. Puppet DSL a jeho špatně zdokumentovaná Ruby verze se ukázaly jako nevhodné pro jednorázovou operaci a nepřišel jsem na to, jak následně měnit nastavení v Ruby aplikaci.
Jeden nástroj, který splňuje všechny mé požadavky, existuje. Ruby gem AutomateIt je open source nástroj pro automatizaci a správu serverů, aplikací a jejich závislostí. Vývoj se u něj sice trochu zastavil, ale to co umí, dělá dobře. A umí toho docela dost.
Namodelován je tak, že se skládá z několika Managerů, interpreteru a třídy pro zapouzdření projektů, které se skládají z receptů, tagů, polí a přídavků. Toto jsou existující manageři:
- AccountManager - spravuje uživatele a skupiny
- AddressManager - stará se o sítové adresy
- DownloadManager - stahuje soubory
- EditManager - má příkazy pro editaci souborů
- FieldManager - čte konfigurační proměnné
- PackageManager - stará se o softwarové balíčky
- PlatformManager - zjišťuje platformu a verzi OS
- ServiceManage - Spravuje služby, např. OS démony
- ShellManager - spravuje soubory a provádí příkazy
- TagManager - Seskupuje spravované počítače do skupin
- TemplateManager - Tiskne šablony do souborů