-
nowość
Terraform w praktyce. Buduj i automatyzuj infrastrukturę chmurową oraz zarządzaj nią z wykorzystaniem Dockera - ebook
Terraform w praktyce. Buduj i automatyzuj infrastrukturę chmurową oraz zarządzaj nią z wykorzystaniem Dockera - ebook
Zarządzaj infrastrukturą jak kodem
Terraform to oprogramowanie typu open source umożliwiające zarządzanie infrastrukturą IT jako kodem (IaC, ang. infrastructure as code). Pozwala deklaratywnie zdefiniować zasoby chmurowe - takie jak AWS, Azure czy Google Cloud a także zasoby lokalne przy użyciu języka HCL, a potem zautomatyzować ich wdrażanie, wersjonowanie i modyfikowanie.
To niezwykle popularne narzędzie doczekało się już wielu opracowań. Unikalną cechą tej publikacji jest wskazanie, jak można stworzyć uniwersalne laboratorium z wykorzystaniem kontenerów Docker i tym samym uniknąć problemów związanych z konfiguracją środowiska pod różnymi systemami (Windows, Mac, Linux). Pracując z tą książką, zrealizujesz szesnaście praktycznych projektów obejmujących zagadnienia od podstaw składni HCL, przez zarządzanie plikiem stanu, aż po zaawansowane testowanie kodu i bezpieczeństwo w duchu DevSecOps.
Spis treści
Wstęp: dlaczego Infrastructure as Code?
Część I. Fundamenty i środowisko
- Rozdział 1. Era Infrastructure as Code (IaC)
- 1.1. Od manualnej konfiguracji do automatyzacji
- 1.2. Filarowe zasady nowoczesnej infrastruktury
- 1. Idempotentność (idempotency)
- 2. Niezmienność (immutability)
- 3. Kontrola wersji (version control)
- 4. Podejście deklaratywne vs. imperatywne
- 1.3. Podejście deklaratywne - dlaczego Terraform wygrał rynek?
- 1.4. Krajobraz narzędzi IaC i automatyzacji
- Kluczowe różnice i jak te narzędzia współpracują
- 1.5. Architektura Terraforma: core, providerzy i komunikacja RPC
- 1.6. Sprawdź swoją wiedzę: fundamenty IaC
- Rozdział 2. Budowa uniwersalnego laboratorium domowego
- 2.1. Dlaczego Docker? Rozwiązanie problemu "it works on my machine"
- 2.2. Sprawdź swoją wiedzę: Docker
- 2.3. Instalacja i konfiguracja Docker Desktop (Windows, macOS, Linux)
- Faza 1. Instalacja Dockera
- 2.4. Pierwsze kroki: mapowanie wolumenów i uruchamianie Terraforma w kontenerze
- Faza 2. Konfiguracja projektu
- 2.5. Weryfikacja środowiska: Twój pierwszy serwer Nginx w kilka sekund
- Krok 1. Przygotowanie kodu
- Krok 2. Inicjalizacja i uruchomienie (faza 3.)
Część II. Cykl życia i składnia (core lifecycle)
- Rozdział 3. Pierwszy projekt i cykl życia (workflow)
- 3.1. Anatomia pliku .tf - język HCL w pigułce
- 3.2. Sprawdź swoją wiedzę: czy już widzisz strukturę HCL?
- 3.3. Lab 01: podstawy cyklu życia Terraform (The Terraform Core Lifecycle)
- Krok 1. Przygotowanie struktury projektu
- Krok 2. Wykonanie cyklu życia
- Krok 3. Weryfikacja i dowód idempotentności
- Krok 4. Czyszczenie (destroy)
- 3.4. Lab 02: zarządzanie wieloma zasobami i zależnościami
- Krok 1. Aktualizacja pliku main.tf
- Krok 2. Uruchomienie laboratorium
- Krok 3. Weryfikacja i analiza
- 3.5. Sprawdź swoją wiedzę: cykl życia i zależności
- 3.6. Lab 03: użycie zmiennych (variables) i wyników (outputs) w Terraformie
- Krok 1. Definicja zmiennych (plik variables.tf)
- Krok 2. Użycie zmiennych i definicja wyniku (plik main.tf)
- Krok 3. Wykonanie z własnymi wartościami
- Krok 4. Walidacja wyniku
- 3.7. Przykłady z realnego świata (AWS/Azure/GCP)
- 1. Skalowanie zasobów zależnie od środowiska
- 2. Dynamiczne tagowanie i nazewnictwo (Azure/GCP)
- 3. Bezpieczeństwo i dostęp (firewall/security groups)
- 4. Wykorzystanie wyników (outputs) do automatyzacji
- 3.8. Sprawdź swoją wiedzę: zmienne i wyniki
- Rozdział 4. Zarządzanie stanem (state management)
- 4.1. Plik terraform.tfstate - serce i pamięć systemu
- Kluczowe funkcje stanu Terraforma
- 4.2. Anatomia pliku terraform.tfstate
- 4.3. Lab 04: inspekcja pliku stanu na przykładzie kontenera Nginx
- Krok 1. Przygotowanie konfiguracji (main.tf)
- Krok 2. Uruchomienie infrastruktury
- Krok 3. Inspekcja "pamięci" Terraforma - plik stanu
- 4.4. Lab 05: wykrywanie rozbieżności (drift detection) - gdy rzeczywistość ucieka spod kontroli
- Scenariusz 1. Idempotentność w praktyce
- Scenariusz 2. Wykrywanie driftu (ręczne usunięcie)
- Scenariusz 3. Zmiana konfiguracji w kodzie
- 4.5. Zdalne przechowywanie stanu (remote backends)
- 1. AWS: S3 + DynamoDB (złoty standard)
- 2. Terraform Cloud (SaaS)
- 3. Google Cloud Platform (GCS)
- 4. Microsoft Azure (Blob Storage)
- Dlaczego warto używać zdalnego stanu?
- 4.6. Lab 06: izolowanie stanu za pomocą obszarów roboczych (workspaces)
- Krok 1. Przygotowanie dynamicznej konfiguracji (main.tf)
- Krok 2. Przygotowanie i czyszczenie
- Krok 3. Tworzenie nowego środowiska (staging)
- Krok 4. Weryfikacja i testy
- Krok 5. Sprzątanie (cleanup)
- 4.7. Sprawdź swoją wiedzę: stan, drift i workspace
- 4.1. Plik terraform.tfstate - serce i pamięć systemu
Część III. Skalowanie i zaawansowane koncepcje (advanced core)
- Rozdział 5. Logika i skalowanie kodu (loops)
- 5.1. Kiedy kopiuj-wklej to za mało - wprowadzenie do pętli
- 5.2. Lab 07: pętla count w Terraformie - proste powielanie zasobów
- Krok 1. Przygotowanie katalogu
- Krok 2. Konfiguracja main.tf
- Krok 3. Uruchomienie (skalowanie do 3)
- Krok 4. Zaawansowane skalowanie (w górę i w dół)
- 5.3. for_each w Terraformie: potężniejsza i bardziej elastyczna pętla
- 5.4. Lab 08: dynamiczne tworzenie plików za pomocą mapy
- Krok 1. Przygotuj katalog roboczy
- Krok 2. Utwórz plik main.tf
- Krok 3. Uruchom Terraform
- 5.5. Bloki dynamiczne (dynamic blocks): dynamiczna konfiguracja zagnieżdżona
- Przykład kodu z użyciem dynamic block oraz wyjaśnienie kodu
- 5.6. Lab 09: użycie bloków dynamicznych w Terraformie
- Krok 1. Przygotowanie konfiguracji (main.tf)
- Krok 2. Inicjalizacja
- Krok 3. Wdrożenie
- Krok 4. Weryfikacja
- Krok 5. Sprzątanie
- 5.7. Podsumowanie rozdziału: narzędzia pętli w Terraformie
- 5.8. Sprawdź swoją wiedzę: pętle i logika
- Rozdział 6. Modułowość - budowanie wielorazowych klocków
- 6.1. Czym są moduły i dlaczego warto je tworzyć?
- 6.2. Struktura modułu: wejścia, logika, wyjścia
- 1. variables.tf (wejścia - Twoje pokrętła)
- 2. main.tf (logika - serce modułu)
- 3. outputs.tf (wyjścia - Twoje wyniki)
- 6.3. Korzystanie z modułów: lokalne oraz Terraform Registry
- 1. Moduły lokalne
- 2. Terraform Registry (moduły zdalne)
- 6.4. Lab 10: Twój pierwszy moduł static-site na Dockerze
- Krok 1. Struktura katalogów
- Krok 2. Tworzenie modułu (wnętrze "klocka")
- Krok 3. Wywołanie modułu (główny projekt)
- Krok 4. Uruchomienie
- 6.5. Podsumowanie rozdziału: dobre praktyki tworzenia modułów
- 6.6. Sprawdź swoją wiedzę: moduły i reużywalność
Część IV. Gotowość produkcyjna i jakość (production readiness)
- Rozdział 7. Bezpieczeństwo i sekrety (security)
- 7.1. Złota zasada: nigdy nie hardkoduj haseł!
- 7.2. Lab 11: bezpieczne wdrożenie z flagą sensitive i zmiennymi środowiskowymi
- Krok 1. Przygotowanie środowiska
- Krok 2. Ustawienie zmiennej w systemie (Twój komputer)
- Krok 3. Konfiguracja main.tf
- Krok 4. Inicjalizacja i planowanie (obserwacja)
- Krok 5. Wdrożenie i weryfikacja
- Krok 6. Sprzątanie
- 7.3. Integracja z zewnętrznymi magazynami sekretów
- 7.4. Podsumowanie rozdziału: fundamenty bezpieczeństwa IaC
- 7.5. Sprawdź swoją wiedzę: bezpieczeństwo i sekrety
- Rozdział 8. Obserwowalność (observability) - logowanie i health checki
- 8.1. Trwałe logowanie (persistent logging)
- 8.2. Automatyczne testy zdrowia (health checks)
- 8.3. Lab 12: logi i health check w praktyce
- Krok 1. Przygotowanie plików
- Krok 2. Egzekucja
- Krok 3. Weryfikacja (Twój system)
- Krok 4. Test trwałości ("The Sledgehammer Test")
- 8.4. Podsumowanie rozdziału: infrastruktura świadoma i trwała
- 8.5. Sprawdź swoją wiedzę: obserwowalność i stabilność
- Rozdział 9. Testowanie i jakość kodu (testing & quality)
- 9.1. Walidacja kodu Terraforma
- 9.2. Lab 13: praktyczne testowanie błędów
- Krok 1. Przygotowanie katalogu roboczego
- Krok 2. Tworzenie main.tf z celową usterką
- Krok 3. Inicjalizacja i weryfikacja (testowanie błędu)
- Krok 4. Naprawa i sukces
- Krok 5. Finał - uruchomienie kodu
- 9.3. Estetyka i porządek: terraform fmt
- 9.4. Lab 14: wielkie sprzątanie kodu
- Krok 1. Wprowadzenie "bałaganu" do kodu
- Krok 2. Uruchomienie formatowania
- Krok 3. Weryfikacja efektów
- 9.5. Wizualizacja architektury: terraform graph
- 9.6. Lab 15: wizualizacja zależności (visual testing)
- Krok 1. Tworzenie main.tf z zależnościami
- Krok 2. Generowanie grafu (format DOT)
- Krok 3: Zobaczenie obrazu (bez instalacji narzędzi)
- 9.7. Zaawansowana analiza z TFLint
- 9.8. Lab 16: TFLint w akcji
- Krok 1. Przygotowanie katalogu
- Krok 2. Tworzenie main.tf z celowymi usterkami
- Krok 3. Uruchomienie TFLint przez Dockera
- Krok 4. Naprawa i weryfikacja
- 9.9. Podsumowanie rozdziału: co zyskaliśmy?
- 9.10. Sprawdź swoją wiedzę: testowanie i jakość kodu
- Rozdział 10. Nowy początek - Twoja droga w IaC
- 10.1. Wskazówki: co dalej?
- Ścieżka 1. Specjalizacja chmurowa
- Ścieżka 2. Skalowanie i kolaboracja
- 10.2. Słowo na pożegnanie
- 10.1. Wskazówki: co dalej?
Bibliografia i materiały źródłowe
- 1. Oficjalne źródła HashiCorp (zawsze aktualne)
- 2. Książki (głęboka wiedza teoretyczna)
- 3. Narzędzia jakościowe i analiza (rozszerzenie rozdziału 9.)
- 4. Społeczność i newsy
- 5. Spis listingów
- Ostatnia rada od autora
| Kategoria: | Programowanie |
| Zabezpieczenie: |
Watermark
|
| ISBN: | 978-83-289-4103-8 |
| Rozmiar pliku: | 5,4 MB |