Automatizujte standardní VM image v Azure podobně jak kontejnery s cloud-init, Packer a Key Vault
Pokud si vyzkoušíte kontejnery a Kubernetes a pak potřebujete jít zpět do světa VM (třeba protože vaše aplikace nejsou ještě připravené), bude vám řada věcí chybět. Některé koncepty ale fungují s využitím správných nástrojů i pro VM! Podívejme se jak do VM v Azure předávat informace (podobně jako lze poslat kontejneru proměnné prostředí nebo Config Map v Kubernetes), jak automatizovaně vytvářet image s kompletně rozchozenou aplikací (něco jako Dockerfile) nebo jak bezpečným způsobem vyzvedávat tajnosti jako jsou hesla či certifikáty (podobně jako Kubernetes Secret).
Cloud-init: automatizace VM a předávání informací
Pokud pracujete v Linux prostředí existuje standardní mechanismus fungující hned v několika cloudových prostředích včetně Azure – cloud-init. Tomu při vytváření VM poskytnete deklarativní konfigurační soubor a první start VM zajistí vytvoření všeho potřebného. Existují různé moduly, například můžete jednoduše vytvářet uživatelské účty a skupiny, spouštět skripty, předávat konfigurační údaje, instalovat balíčky. Výhodou tohoto přístupu je, že funguje napříč různými IaaS.
Podívejte se jak na to zde: https://github.com/tkubica12/azureimage-automation#standardized-cloud-init-for-linux-in-any-cloud
Nativní automatizace a předávání informací s Azure agentem
Cloud-init je sice univerzálnější, ale Azure agent má také své zásadní výhody. Jedná se o agenta, který je součástí základních image v Azure a to jak Linux tak Windows. Je dobře integrovaný s portálem a obsahuje VM Extension, tedy automatizační rozšíření, které umí dokonfigurovat VM. Já budu používat CustomScript, který funguje jak v Linux tak Windows. Můžete jej přidat kdykoli v průběhu života VM (tedy nejen při vytváření).
Funguje to tak, že mašině předáte URL souborů ke stažení (skripty, konfigurační soubory, binárky) a agent zajistí jejich transfer do adresáře uvnitř VM. Velmi dobré je, že to lze integrovat s Azure Blob Storage včetně přihlášení, ale dá se samozřejmě namířit na libovolné URL. Jakmile jsou soubory nakopírovány spustí agent příkaz, který mu řeknete (commandToExecute). Nejčastěji tak součástí kopírovaných souborů bude nějaký skript, kterému následně předáte řízení.
Vyzkoušejte si podle mého návodu zde: https://github.com/tkubica12/azureimage-automation#azure-native-solution-with-proprietary-agent
Automatická tvorba předinstalovaných image s Packer
Open source projekt Packer z dílny firmy Hashicorp, tvůrců infrastrukturního automatizačního nástroje Terraform, vám umožňuje získat chování podobné Dockerfile z kontejnerů. V zásadě nejde o nic složitého, jen automatizaci jednoduchého workflow s cílem se snadno dostat ze základního image do stavu, kdy je ve vašem image kompletně předinstalováno co potřebujete. Můžete se tak k VM chovat stejně jako ke kontejnerům a považovat je za immutable, dalo by se také říct virtuální appliance – virtuální „bedýdnka“, kterou stačí už jen zapnout.