Terraform

Book description

Jeszcze do niedawna praca administratora systemu polegała na ręcznym przygotowywaniu infrastruktury do działania. Mozolne konfigurowanie serwerów, baz danych i elementów sieci niosło za sobą ryzyko przestojów środowiska produkcyjnego i wprowadzenia błędnych ustawień, a wdrożenia przebiegały powoli i łączyły się z nieuchronnym poszukiwaniem błędów. Dziś do tego rodzaju prac służy Terraform, narzędzie open source przeznaczone do tworzenia i wdrażania kodu infrastruktury, a także zarządzania nim; rozwiązanie stosowane w takich platformach jak Amazon Web Services, Google Cloud, Azure i wiele innych.

To trzecie, wzbogacone i uzupełnione wydanie praktycznego samouczka, dzięki któremu błyskawicznie rozpoczniesz pracę z Terraform. Zapoznasz się z językiem programowania Terraform i zasadami tworzenia kodu. Szybko zaczniesz wdrażać infrastrukturę i zarządzać nią za pomocą zaledwie kilku poleceń. Istotną częścią książki jest pokazanie metodologii DevOps w działaniu, a także wyjaśnienie zasad kodowania infrastruktury. Dziesiątki jasnych przykładów kodu, które można samodzielnie wypróbować w akcji, ułatwią zrozumienie podstaw. Nie musisz być weteranem DevOps ani doświadczonym administratorem systemów - z tym podręcznikiem nawet początkujący programiści sprawnie przygotują pełny stos, który zapewni obsługę ogromnego ruchu sieciowego w rzeczywistych środowiskach produkcyjnych.

Dzięki książce:

zrozumiesz, kiedy używać Terraform, a kiedy innych narzędzi
wdrożysz klastry serwerów, mechanizmy równoważenia obciążenia i bazy danych
nauczysz się tworzyć infrastrukturę Terraform
przetestujesz moduły Terraform wieloma metodami
skonfigurujesz potoki CI/CD i zaczniesz się posługiwać zaawansowaną składnią Terraform
nauczysz się pracować w środowiskach chmurowych

Infrastruktura jako kod: od sukcesu dzieli Cię kilka poleceń!

Table of contents

  1. Wprowadzenie
    1. Dla kogo jest przeznaczona ta książka?
    2. Dlaczego napisałem tę książkę?
    3. Co znajduje się w książce?
    4. Zmiany wprowadzone w wydaniu trzecim względem wydania drugiego
    5. Zmiany wprowadzone w wydaniu drugim względem wydania pierwszego
    6. Czego nie znajdziesz w książce?
    7. Przykładowe fragmenty kodu udostępnione jako open source
    8. Użycie przykładowych kodów
    9. Konwencje zastosowane w książce
    10. Podziękowania
  2. Rozdział 1. Dlaczego Terraform?
    1. Powstanie ruchu DevOps
    2. Infrastruktura jako kod
      1. Skrypty tymczasowe
      2. Narzędzia zarządzania konfiguracją
      3. Narzędzia szablonów serwera
      4. Narzędzia instrumentacji
      5. Narzędzia provisioningu
    3. Korzyści płynące z infrastruktury jako kodu
    4. Jak działa Terraform?
    5. Porównanie Terraform z innymi narzędziami IaC
      1. Zarządzanie konfiguracją kontra provisioning
      2. Infrastruktura niemodyfikowalna kontra modyfikowalna
      3. Język proceduralny kontra deklaratywny
      4. Język ogólnego przeznaczenia kontra język specjalizowany
      5. Serwer główny kontra jego brak
      6. Agent kontra jego brak
      7. Rozwiązanie płatne kontra bezpłatne
      8. Duża społeczność kontra mała
      9. Rozwiązanie dojrzałe kontra najnowsze
      10. Używanie razem wielu narzędzi
        1. Provisioning plus zarządzanie konfiguracją
        2. Provisioning plus szablony serwerów
        3. Provisioning plus szablony serwerów plus instrumentacja
    6. Podsumowanie
  3. Rozdział 2. Rozpoczęcie pracy z Terraform
    1. Utworzenie konta AWS
    2. Instalacja Terraform
    3. Wdrożenie pojedynczego serwera
    4. Wdrożenie pojedynczego serwera WWW
    5. Wdrażanie konfigurowalnego serwera WWW
    6. Wdrażanie klastra serwerów WWW
    7. Wdrożenie mechanizmu równoważenia obciążenia
    8. Porządkowanie
    9. Podsumowanie
  4. Rozdział 3. Zarządzanie informacjami o stanie Terraform
    1. Czym są informacje o stanie Terraform?
    2. Współdzielony magazyn danych dla plików informacji o stanie
    3. Ograniczenia backendu Terraform
    4. Izolowanie plików informacji o stanie
      1. Izolacja za pomocą przestrzeni roboczych
      2. Izolacja za pomocą układu plików
    5. Źródło danych terraform_remote_state
    6. Podsumowanie
  5. Rozdział 4. Zastosowanie modułów do tworzenia infrastruktury Terraform wielokrotnego użycia
    1. Podstawy modułów
    2. Dane wejściowe modułu
    3. Wartości lokalne modułu
    4. Dane wyjściowe modułu
    5. Problemy z modułami
      1. Ścieżki dostępu do pliku
      2. Osadzony blok kodu
    6. Wersjonowanie modułu
    7. Podsumowanie
  6. Rozdział 5. Sztuczki i podpowiedzi dotyczące Terraform — pętle, konstrukcje if, wdrażanie i problemy
    1. Pętle
      1. Pętla za pomocą parametru count
      2. Pętla za pomocą wyrażenia for_each
      3. Pętla za pomocą wyrażenia for
      4. Pętla za pomocą dyrektywy for ciągu tekstowego
    2. Wyrażenie warunkowe
      1. Wyrażenie warunkowe z użyciem parametru count
        1. Konstrukcja if utworzona za pomocą parametr count
        2. Konstrukcja if-else za pomocą parametru count
      2. Definiowanie warunku za pomocą for_each i wyrażeń
      3. Wyrażenia warunkowe wraz z dyrektywą if ciągu tekstowego
    3. Wdrożenie bez przestoju
    4. Problemy związane z Terraform
      1. Ograniczenia parametru count i wyrażenia for_each
      2. Ograniczenia wdrożenia bez przestoju
      3. Awarie poprawnych planów
      4. Trudności podczas refaktoryzacji
    5. Podsumowanie
  7. Rozdział 6. Zarządzanie danymi poufnymi za pomocą Terraform
    1. Podstawy zarządzania danymi poufnymi
    2. Narzędzia przeznaczone do zarządzania danymi poufnymi
      1. Rodzaje przechowywanych danych poufnych
      2. Przechowywanie danych poufnych
      3. Interfejs używany w celu dostępu do danych poufnych
      4. Porównanie narzędzi przeznaczonych do zarządzania danymi poufnymi
    3. Narzędzia przeznaczone do zarządzania danymi poufnymi w Terraform
      1. Dostawcy
        1. Użytkownicy
        2. Urządzenia
      2. Zasoby i źródła danych
        1. Zmienne środowiskowe
        2. Szyfrowane pliki
        3. Magazyn danych poufnych
      3. Pliki informacji o stanie i pliki planu
        1. Pliki informacji o stanie
        2. Pliki planu
    4. Podsumowanie
  8. Rozdział 7. Praca z wieloma dostawcami
    1. Praca z pojedynczym dostawcą
      1. Czym jest dostawca?
      2. Jak odbywa się instalacja dostawcy?
      3. W jaki sposób używać dostawców?
    2. Praca z wieloma kopiami tego samego dostawcy
      1. Praca z wieloma regionami AWS
      2. Praca z wieloma kontami AWS
      3. Tworzenie modułów, które mogą działać z wieloma dostawcami
    3. Praca z wieloma różnymi dostawcami
      1. Krótkie wprowadzenie do Dockera
      2. Krótkie wprowadzenie do Kubernetes
      3. Wdrażanie kontenerów Dockera w AWS za pomocą Elastic Kubernetes Service
    4. Podsumowanie
  9. Rozdział 8. Produkcyjny kod Terraform
    1. Dlaczego przygotowanie infrastruktury o jakości produkcyjnej trwa tak długo?
    2. Lista rzeczy do zrobienia podczas tworzenia infrastruktury o jakości produkcyjnej
    3. Moduły infrastruktury o jakości produkcyjnej
      1. Małe moduły
      2. Moduły łączone z innymi
      3. Moduły możliwe do testowania
        1. Weryfikacja
        2. Bloki precondition i postcondition
        3. Kiedy używać bloków validation, precondition i postcondition?
      4. Moduły wersjonowane
      5. Moduły wykraczające poza Terraform
        1. Blok provisioner
        2. Blok provisioner wraz z null_resource
        3. Zewnętrzne źródło danych
    4. Podsumowanie
  10. Rozdział 9. Testowanie kodu Terraform
    1. Testy ręczne
      1. Podstawy ręcznego przeprowadzania testów
      2. Uporządkowanie środowiska po zakończeniu testów
    2. Testy zautomatyzowane
      1. Testy jednostkowe
        1. Testy jednostkowe kodu Terraform
        2. Wstrzykiwanie zależności
        3. Jednoczesne wykonywanie testów
      2. Testy integracji
        1. Etapy wykonywania testu
        2. Ponowne próby
      3. Testy typu E2E
      4. Inne podejścia w zakresie testów
        1. Analiza statyczna
        2. Testowanie planu
        3. Testowanie serwera
    3. Podsumowanie
  11. Rozdział 10. Używanie Terraform w zespołach
    1. Adaptacja infrastruktury jako kodu przez zespół
      1. Przekonanie szefa do pomysłu
      2. Stopniowe wprowadzanie zmian
      3. Zapewnienie zespołowi czasu na naukę
    2. Sposób pracy podczas wdrażania kodu aplikacji
      1. Użycie systemu kontroli wersji
      2. Lokalne uruchomienie kodu
      3. Wprowadzenie zmian w kodzie
      4. Przekazanie zmian do zatwierdzenia
      5. Uruchomienie testów zautomatyzowanych
      6. Połączenie kodu istniejącego z nowym i wydanie produktu
      7. Wdrożenie
        1. Narzędzia wdrażania
        2. Strategie wdrażania
        3. Serwer wdrożenia
        4. Stosowanie produktu w różnych środowiskach
    3. Sposób pracy podczas wdrażania kodu infrastruktury
      1. Użycie systemu kontroli wersji
        1. Repozytoria live i modules
        2. Złota reguła Terraform
        3. Problemy z gałęziami
      2. Lokalne uruchomienie kodu
      3. Wprowadzenie zmian w kodzie
      4. Przekazanie zmian do zatwierdzenia
        1. Dokumentacja
        2. Testy zautomatyzowane
        3. Układ plików
        4. Przewodnik po stylu
      5. Uruchomienie testów zautomatyzowanych
      6. Połączenie kodu istniejącego z nowym i wydanie produktu
      7. Wdrożenie
        1. Narzędzia wdrażania
        2. Strategie wdrażania
        3. Serwer wdrożenia
        4. Stosowanie produktu w różnych środowiskach
    4. Zebranie wszystkiego w całość
    5. Podsumowanie
  12. Dodatek A Polecane zasoby
    1. Książki
    2. Blogi
    3. Prelekcje
    4. Newslettery
    5. Fora internetowe
    6. O autorze
    7. Kolofon

Product information

  • Title: Terraform
  • Author(s): Yevgeniy Brikman
  • Release date: March 2023
  • Publisher(s): Helion
  • ISBN: 9788383223476