Infraštruktúra ako kód (IaC)
servery, siete a ďalšie zdroje definujeme pomocou konfiguračných súborov:
Výhody:
- automatizácia
- opakovateľnosť
- verzovanie (napr. cez Git)
- menšie riziko chýb
Ansible a Terraform
Nástroje na pridelenie a správu zdrojov pomocou konfiguračných súborov.
Ansible
open-source nástroj na automatizáciu konfigurácie a správy serverov. Umožňuje definovať požadovaný stav systému a zabezpečiť jeho dosiahnutie.
- nepouužíva dohľadové procesy na pozadí (agenty).
- jednoduchý zápis v YAML
Architektúra Ansible
- Riadiaci uzol – počítač, z ktorého spúšťame Ansible
- Spravované uzly – cieľové servery
Kľúčové komponenty
- Inventár – zoznam serverov
- Playbook – súbor s definíciou úloh
- Moduly – vykonávajú konkrétne operácie (napr. inštalácia balíka)
Príklad Ansible playbooku
- name: Inštalácia a spustenie nginx
hosts: web
become: true
tasks:
- name: Inštaluj nginx
apt:
name: nginx
state: present
- name: Spusti službu nginx
service:
name: nginx
state: started
Vysvetlenie:
hosts: na ktorých serveroch sa vykoná
tasks: zoznam úloh
apt: modul na správu balíkov
service: modul na správu služieb
Terraform
Čo je Terraform
nástroj od spoločnosti HashiCorp na správu infraštruktúry pomocou deklaratívneho jazyka (HCL).
Používa sa hlavne na:
- vytváranie cloudovej infraštruktúry (AWS, Azure, GCP)
- správu zdrojov (VM, siete, databázy)
Základné princípy
Deklaratívny prístup
Definujeme čo chceme, nie ako to dosiahnuť.
Stav (state)
Terraform si ukladá aktuálny stav infraštruktúry do súboru:
terraform.tfstate
Pracovný postup
- init – inicializácia projektu
- plan – náhľad zmien
- apply – vykonanie zmien
- destroy – odstránenie infraštruktúry
Príklad Terraform konfigurácie
provider "aws" {
region = "eu-central-1"
}
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
tags = {
Name = "web-server"
}
}
Vysvetlenie:
provider – cloudový poskytovateľ
resource – definícia zdroja (virtuálny server)
ami – obraz systému
instance_type – typ inštancie
Porovnanie Ansible vs Terraform
| Vlastnosť |
Ansible |
Terraform |
| Použitie |
konfigurácia serverov |
pridelenie zdrojov |
| Prístup |
imperatívny |
deklaratívny |
| Jazyk |
YAML |
HCL |
| Agent |
nie |
nie |