Terraform je free open source nástroj od spoločnosti HashiCorp, ktorý dokáže automatizovať nasadenie infraštruktúry (IaaS), platformy (PaaS) a softvéru (SaaS). Ide teda o nástroj ponúkajúci komplexné riešenie, no na jeho použitie nepotrebujeme vedieť programovať. Stačí napísať konfiguračný súbor v jazyku pre ľudí dobre čitateľnom a o ostatné sa už postará nástroj Terraform.
Spoločnosť HashiCorp vydala prvú verziu nástroja Terraform v roku 2014. Vtedy Terraform podporoval iba AWS a DigitalOcean. O dva roky neskôr (2016) sa však komunita prispievateľov rozšírila natoľko, že do Terraformu pribudla podpora aj všetkých ostatných najväčších poskytovateľov cloudových služieb. V roku 2017 Terraform uzavrel partnerstvo so spoločnosťou Microsoft, čím oficiálne vstúpil do komerčnej sféry.
OpenStack je free open source systém, ktorý od roku 2010 vyvíjala spoločnosť Rackspace Hosting spolu s NASA. Od roku 2012 vývoj prevzala nezisková organizácia OpenStack Foundation, ktorá sa v roku 2018 premenovala na Open Infrastructure Foundation. OpenStack sa nasadzuje v dátových centrách spôsobom infraštruktúra ako služba (Infrastructure as a Service, IaaS) a riadi tak zdroje ako siete, procesory a úložiská.
Prečo použiť Terraform
Nástroj Terraform spoločnosť HashiCorp a komunita vyvíjajú tak, aby neustále obhajovali vysokú kvalitu. Terraform má predovšetkým tieto prednosti:
- Nezávislosť na platforme a otvorenosť – Terraform je rovnako dobre použiteľný v rámci všetkých veľkých poskytovateľov cloudových riešení, či už ide o produkty spoločností ako Google, Amazon, Microsoft alebo Alibaba. Nezabúda sa však ani na otvorené riešenia ako je systém OpenStack.
- Veľká komunita s komerčnou podporou – Terraform vyvíja celosvetová početná komunita, a rovnako spoločnosť HashiCorp, ktorá v prípade potreby poskytuje komerčnú podporu. Ide teda o nástroj, ktorý môže použiť ktokoľvek na tých najmenších ako aj na najväčších projektoch.
- Neopakujete sa – Terraform vďaka modulom umožňuje už raz napísaný kód vkladať na iné miesta v iných skriptoch. Takto plní zásady princípu DRY (Don’t Repeat Yourself = neopakuj sa), ktorý prispieva k rýchlosti a jednoduchosti práce s nástrojom Terraform.
- Deklaratívny prístup – nástroju Terraform stačí opísať, ako si predstavujeme výsledok nasadenia infraštruktúry. Ako konkrétne to dosiahnuť, to už zariadi Terraform.
- Bez agenta – Terraform nepotrebuje žiadny softvér, ktorý by ste museli inštalovať ešte pred nasadením. To znamená ľahkú inštaláciu a použitie nástroja Terraform.
- Rýchlosť a jednoduchosť – prístup infraštruktúra ako kód (IaC) umožňuje nasadiť celú infraštruktúru iba spustením skriptu. O všetko ostatné sa postará samotný Terraform.
- Obnova zo zálohy – v prípade pádu celej infraštruktúry je znovunasadenie iba záležitosť spustenia vyššie spomínaného skriptu. Ručná obnova by určite trvala dlhšie už iba na jedinom serveri, nehovoriac o viacerých.
- Minimalizovanie chýb – keďže nasadenie infraštruktúry pomocou Terraformu predstavuje iba spustenie skriptu, vytvára sa minimálny priestor pre ľudskú chybu. Skôr nájdeme a odstránime chybu v niekoľkých riadkoch, ako v ručnom procese nasadzovania.
- Tímová spolupráca – na skripte ako textovom súbore môžu spolupracovať viacerí členovia tímu napríklad pomocou správcu zdrojového kódu Git. Výskyt chýb sa tak môže znížiť na takmer zanedbateľné minimum.
- Pokročilá bezpečnosť – Terraform odporúča oddeliť citlivé údaje ako napríklad prihlasovacie meno a heslo do súborov, ktoré sú zabezpečené už len tým, že sa zdieľajú iba s úzkou skupinou ľudí, ideálne sa ešte aj šifrujú.
Inštalujeme Terraform
Nástroj Terrafrom budeme inštalovať a používať na operačnom systéme Ubuntu Linux, ale rovnako je možné inštalovať a použiť ho aj na Windowse (cez Chocolatey) či MacOS (cez Homebrew).
Najskôr nainštalujeme nástroje potrebné počas inštalácie (prvý riadok), potom stiahneme a overíme GPG kľúč (ostatné riadky). Kontrolný súčet (fingerprint) kľúča sa musí zhodovať s touto hodnotou: E8A0 32E0 94D8 EB4E A189 D270 DA41 8C88 A321 9F7B
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint
Ak sa GPG kľúč podarilo overiť, pokračujeme pridaním oficiálneho repozitára spoločnosti HashiCorp do systému (prvý riadok) a následnou inštaláciou samotného nástroja Terraform (druhý riadok).
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt-get install terraform
Po úspešnej inštalácii nástroja Terraform overíme nainštalovanú verziu:
terraform -version
V čase písania tohto návodu bola aktuálna verzia 1.3.5 a ďalej teda budeme predpokladať túto verziu alebo novšiu.
Okrem samotného nástroja Terraform si doinštalujeme aj jeho rozšírenie zodpovedné za automatické dopĺňanie a následne reštartujeme shell:
touch ~/.bashrc && terraform -install-autocomplete
Sťahujeme informácie o systéme VDC
Všetky súbory budeme ukladať do priečinka websupport_openstack
, ktorý vytvoríme v domovskom priečinku aktuálne prihláseného používateľa (~
):
mkdir ~/websupport_openstack
Aby sa nástroj Terraform dokázal pripojiť do systému OpenStack, potrebuje informácie, vďaka ktorým OpenStack jednoznačne identifikujeme a odkážeme sa v ňom na konkrétny projekt určitého používateľa. Na adrese cloud.websupport.sk sa prihlásime do dátového centra spoločnosti WebSupport, vyberieme Project a v časti API access hore vpravo stiahneme súbor clouds.yaml takto:
Súbor clouds.yaml obsahuje všetky potrebné údaje, ktoré v ďalšom diele tohto seriálu použijeme na vytvorenie novej inštancie v systéme OpenStack pomocou nástroja Terraform.
Zhrnutie
V prvej časti seriálu o nástroji Terraform v systéme OpenStack sme si oba predstavili produkty predstavili. Zároveň sme uviedli dôvody, pre ktoré je vhodné použiť nástroj Terraform. Rovnako sme ukázali ako nainštalovať Terraform a ako si zo systému OpenStack stiahnuť informácie potrebné na pripojenie a použitie nástroja Terraform. V ďalšej časti si vytvorime inštanciu v systéme OpenStack pomocou nástroja Terraform.