Bavili jsme se nedávno s kolegou na Slacku a mimo jiné jsme se dostali k tématu, co by se dalo na Roští udělat, aby se posunulo trochu dopředu a zároveň to nestálo moc času. Po chvíli jsme narazili na koncept Rostifile, o kterém jsme uvažovali už před dvěma lety. Tehdy jsme k tomu ale neměli funkční API. Dneska ale funkční API máme, tak proč si nedat malý hackathon jako za starých časů.

Jsme teď uprostřed migrace, ale protože se ženou každým dnem čekáme nové mimčo a nechceme shodit systém v době, kdy budu muset v neznámý čas opustit stůl a běžet do porodnice, rozhodli jsem se rozvinou naši konverzaci a zkusit, jak by mohl vypadat takový Rostifile.

Z konceptu se postupně stal funkční nástroj a tak vám teď budu povídat o tom, co si na konci tohoto blogpostu můžete už stáhnout. Pokud znáte Vagrant nebo Docker, máte už asi tušení, o čem Rostifile je. Je to soubor, který umístíte ke svému projektu a do něj napíšete informace, které administrace potřebuje znát, aby mohla váš projekt spustit. Když tak učiníte, zavoláte rostictl up, chvíli počkáte a aniž byste sáhli do administrace, je váš projekt online.

Z výsledku mám ohromnou radost a práce na tomto projektu mi připomněla naše začátky na Roští. Za relativně krátký čas totiž vzniklo něco, co má potenciál dát nový rozměr naší službě.

Rostictl je napsané v Golang. Připravili jsme pro vás binárky pro Linux, Mac OS X a Windows, i když u Windows doporučujeme používat spíše linuxovou verzi s Windows Subsystem for Linux. Všechno potřebné jsme integrovali do této binárky a není tu závislost ani na žádné externí utilitě. Rostictl funguje s naším API, které již nějaký čas existuje a kromě toho používá SSH, aby zkonfiguroval kontejner pro potřeby vašich aplikací.

Snahou bylo co nejvíce zjednodušit nasazení nové aplikace. Zjednodušit ho až tak, že čistý projekt můžete nasadit zavoláním těchto dvou příkazů:

rostictl init
rostictl up

První příkaz vás provede konfigurací vašeho projektu, resp. vygeneruje pro něj nový Rostifile. Druhý příkaz pak použije tento Rostifile k tomu, aby vytvořil novou aplikaci v administraci, nakopíroval do ní data a pokusil se aplikaci zprovoznit. Na konci dostanete výstup se stavem aplikace. Pokud se náhodou něco nepovede nebo aplikace potřebuje manuální zásah, je Roští pořád stejné jak ho znáte. Můžete se připojit přes SSH do aplikace a udělat co je potřeba.

Když kód změníte a aplikace potřebuje aktualizovat, znovu zavoláte:

rostictl up

Budeme moc rádi, když rostictl vyzkoušíte a dáte nám vědět, jak se vám s ním pracovalo. Dokumentaci k rostictl najdete zde.

Úvodní fotka patři MustangJoe a je k nalezení na Pixabay.