V prvej časti seriálu o nástroji Terraform v systéme OpenStack sme oba 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 tejto časti vytvoríme inštancie v systéme OpenStack pomocou nástroja Terraform.
Namiesto toho, aby sme vo webovom prostredí VDC na adrese cloud.websupport.sk ručne vyklikávali nastavenia inštancií, necháme to automatizovať Terraform za presne stanovených podmienok. Podmienky pre Terraform, podľa ktorých bude postupne automaticky vytvárať virtuálne stroje s virtuálnymi diskami a sieťami, zapíšeme do súborov vo formáte stanovenom spoločnosťou HashiCorp.
Príprava prostredia VDC
Vo webovom rozhraní VDC najskôr musíme vytvoriť a skontrolovať toto:
- V časti Compute – Key Pairs vytvoríme nový pár kľúčov, pričom verejnú časť kľúča použijeme nižšie pri konfigurácii Terraformu (v hodnote premennej
vdc_ssh_pub_key
). - Ubezpečíme sa, že máme k dispozícii verejnú IP adresu v časti Network – Floating IPs. Túto Terraform automaticky pridelí inštancii, ktorú vytvorí.
V rámci tohto návodu budeme pracovať so súbormi, ktoré sú verejne dostupné v Git repozitári na adrese github.com/tiborepcek/terraform a sú prispôsobené tak, aby čo najlepšie fungovali na VDC od WebSupportu. Po správnom vyplnení premenných v súbore terraform.tfvars
stačí cez nástroj Terraform konfiguračné súbory už iba aplikovať. Poďme si celý proces postupne ozrejmiť.
V prvom rade vyššie spomínaný Git repozitár stiahneme/naklonujeme do v prvom diele vytvorenom priečinku:
cd ~/websupport_openstack
git clone https://github.com/tiborepcek/terraform.git
Povinné premenné
V repozitári sa nachádza viacero súborov, no pre nás je podstatný predovšetkým súbor terraform.tfvars
, pretože obsahuje premenné, ktorých hodnoty <change_me>
musíme nahradiť unikátnymi pre našu inštanciu VDC. Povinné premenné sú tieto štyri:
openstack_user_name
– prihlasovacie meno (user name), ktorým sa prihlasujeme do webového rozhrania VDC od WebSupportu na adrese cloud.websupport.sk/horizon/auth/login.openstack_tenant_name
– rovnaké akoopenstack_user_name
openstack_password
– prihlasovacie heslo (password), ktorým sa prihlasujeme do webového rozhrania VDC od WebSupportu na adrese cloud.websupport.sk/horizon/auth/login.vdc_ssh_pub_key
– skopírujeme celý verejný kľúč (public key) podľa obrázku nižšie:
WebSupport VDC – verejný kľúč (public key)
Obrázok: https://tiborepcek.com/nc/index.php/s/jA6692QoZCciyrx
Ostatné premenné
Hodnotu týchto premenných teoreticky netreba meniť, určite ju však skontrolujte pri každej jednej premennej, aby ste sa uistili, že zodpovedá vašim požiadavkám.
vdc_image
– názov obrazu (operačného systému), ktorý sa aplikuje na novovytvorený virtuálny stroj (Virtual Machine, čiže VM). Všetky dostupné sú uvedené na adrese cloud.websupport.sk/horizon/project/images. V tomto návode použijeme “Ubuntu 22.04 LTS” pre všetky virtuálne stroje.vdc_lb
– počet virtuálnych strojov vytvorených pre server použitý ako Load Balancer (LB), pričom minimálny počet je 1 a maximálny 3.vdc_web
– počet virtuálnych strojov vytvorených pre server použitý ako webový server, pričom minimálny počet je 1 a maximálny 3.vdc_db
– počet virtuálnych strojov vytvorených pre server použitý ako databázový server, pričom minimálny počet je 1 a maximálny 3.vdc_flavor_lb
– počet virtuálnych procesorov (číslo za písmenom c) a veľkosť pamäte RAM v GB (číslo za písmenom m), uistite sa teda, či máte dostatok voľných prostriedkov aj po vynásobení číslom z premennej vdc_lb.vdc_flavor_web
– počet virtuálnych procesorov (číslo za písmenom c) a veľkosť pamäte RAM v GB (číslo za písmenom m), uistite sa teda, či máte dostatok voľných prostriedkov aj po vynásobení číslom z premennej vdc_web.vdc_flavor_db
– počet virtuálnych procesorov (číslo za písmenom c) a veľkosť pamäte RAM v GB (číslo za písmenom m), uistite sa teda, či máte dostatok voľných prostriedkov aj po vynásobení číslom z premennej vdc_db.vdc_volume_lb
– veľkosť virtuálneho disku v GB, čiže sa uistite, či máte dostatok voľného miesta z celkovo dostupného na adrese cloud.websupport.sk/horizon/project.vdc_volume_web
– veľkosť virtuálneho disku v GB, čiže sa uistite, či máte dostatok voľného miesta z celkovo dostupného na adrese cloud.websupport.sk/horizon/project.vdc_volume_db
– veľkosť virtuálneho disku v GB, čiže sa uistite, či máte dostatok voľného miesta z celkovo dostupného na adrese cloud.websupport.sk/horizon/project.
Vytvárame inštancie
Ak ste sa uistili, že máte dostatok virtuálnych procesorov pre všetky zamýšľané virtuálne stroje a tiež dostatok pamäte RAM a úložného priestoru, spustite v priečinku Git repozitára inicializačný príkaz nástroja Terraform:
cd ~/websupport_openstack/terraform
terraform init
Terraform inicializuje svoje prostredie a potrebné moduly (v našom prípade modul pre poskytovateľa Openstack). Teraz si necháme zobraziť, aké zmeny vlastne chceme na WebSupport VDC vykonať:
terraform plan
Okrem podrobného plánu Terraform vypíše aj zhrňujúce informácie o tom, čo sa nanovo vytvorí (add), čo sa zmení (change) a čo sa vymaže (destroy). Ak sme s plánom spokojní, môžeme ho nechať realizovať:
terrafrom apply
Terraform sa ešte naposledy opýta, či naozaj chceme navrhnutý plán realizovať. Napíšeme yes a o niekoľko desiatok sekúnd by sme mali mať vytvorené presne také virtuálne stroje, aké sme špecifikovali v premenných vyššie.
V prípade, že sa rozhodneme zrealizovaný plán zvrátiť (zničiť), stačí zadať tento príkaz a všetky virtuálne stroje spolu s virtuálnymi diskami sa vymažú:
terraform destroy
Zhrnutie
V druhej časti (poslednej) sme ukázali, ako rýchlo a jednoducho napíšeme plán, podľa ktorého nástroj Terraform vytvorí virtuálne stroje s požadovaným operačným systémom. Tiež sme definovali, koľko virtuálnych procesorov a pamäte RAM virtuálnym strojom bude pridelených. Rovnako sme nastavili veľkosť virtuálnych diskov, ktoré budú k virtuálnym strojom priradené. Získali sme tak efektívny nástroj, vďaka ktorému sa nasadzovanie virtuálnych počítačov stáva jednoduchým a rýchlym procesom.