Na začátku semestru jsem volil předměty a zaujal mě předmět s názvem Distribuovaná výpočetní prostředí. V sylabu byla klíčová slova jako Docker, CI/CD, edge computing a další. Předmět byl sice doporučen až do druhého ročníku, ale vzhledem k tomu, že v jednom ze svých projektů právě tato témata aktivně řeším, zapsal jsem si tento předmět už v prváku.
Původně jsem to řešil oldschoolově
Původně jsem infrastrukturu všech projektů řešil ručně – zakoupil server na hostingu, nastavil základní zabezpečení virtuálního serveru, nainstaloval aktualizace balíčků, nainstaloval Docker… Vzhledem k tomu, že všechny projekty řeším pomocí kontejnerizace, měly všechny stejné kroky. Už vím, že to jde časově efektivněji.
Infrastruktura jako kód
Infrastrukturu jako kód bych popsal jako deklarativní popis požadovaného stavu infrastruktury. Pro definování hardware či celé infrastruktury se používá nástroj Terraform, který umožňuje vytvářet servery a provádět jednoduchý provisioning – například vytváření uživatelů nebo základní nastavení serverů. Hlavní nevýhoda provisionerů v Terraformu je, že změny v nich se při aktualizaci infrastruktury neaplikují, pokud nedojde k jejímu kompletnímu přeinstalování. To je však úplě v pořádku, protože na tento účel existuje jiný nástroj – Ansible.
Ansible pro konfiguraci
Ansible je mocný nástroj pro konfiguraci serverů, který se často používá právě v kombinaci s Terraformem. Základní jednotkou v Ansible je inventář – seznam spravovaných serverů. Na inventář se pak odkazujeme při definování tzv. playbooků, které obsahují konkrétní kroky (role). Typickým příkladem role je třeba instalace Dockeru: zahrnuje příkazy jako instalaci balíčků, vytváření adresářů pro klíče, instalaci GPG klíče Dockeru a další.
Pomocí těchto nástrojů není potřeba manuálně kupovat, nastavovat a instalovat servery. Stačí jednoduše spustit Terraform a poté Ansible playbook, a celou infrastrukturu můžete mít hotovou za pár minut. Aby to nebylo všechno jen růžové, je důležité zvážit, jak často takovou infrastrukturu budete potřebovat reinstalovat – někdy může být časově výhodnější tuto infrastrukturu manuálně nastavit a brát ji jako pevnou. Pokud ale používáte Kubernetes, mohou pro vás tyto nástroje být naopak přínosem. Co kdybych vám řekl, že přidání dalšího nódu do clusteru spustíte dvěma příkazy a zbytek se provede sám?
Praktická ukázka
Rozhodl jsem se sdílet svou seminární práci ze zmíněného předmětu. V této práci popisuji instalaci jednoho LoadBalanceru a nakonfigurovatelného počtu backendů v univerzitním prostředí pro poskytování cloudových služeb, OpenNebula. Více informací naleznete v README souboru v příslušném repozitáři.