Ansible w praktyce. Automatyzacja konfiguracji i proste instalowanie systemów. Wydanie III - ebook
Ansible w praktyce. Automatyzacja konfiguracji i proste instalowanie systemów. Wydanie III - ebook
Ansible służy do automatyzacji wdrożeń oprogramowania i zarządzania jego konfiguracjami. Inżynierowie cenią ten framework za minimalne rozmiary, brak konieczności instalowania czegokolwiek na serwerach i prostotę użytkowania. Oferuje on proste i bardzo przydatne funkcje przeznaczone do automatyzacji wielowarstwowych środowisk, przydaje się też do obsługi ciągłej integracji i ciągłego wdrażania oprogramowania (CI/CD) bez żadnego przestoju. Może służyć do różnych celów: przygotowania infrastruktury jako kodu, wdrożeń aplikacji czy automatyzacji codziennych, czasochłonnych zadań administracyjnych.
Ta książka jest przeznaczona dla programistów i administratorów, którzy poszukują wydajnej metody zarządzania systemami. Pokazano w niej, w jaki sposób działa Ansible i jak należy przygotować go do pracy. Omówiono sposoby tworzenia scenariuszy (są to skrypty do zarządzania konfiguracją), zasady zarządzania zewnętrznymi serwerami, a także zaprezentowano najciekawsze funkcjonalności tego oprogramowania: wbudowane deklaratywne moduły . W tym wydaniu uwzględniono zmiany wynikające z dynamicznego rozwoju Ansible, dodano też kilka rozdziałów poświęconych kontenerom, platformie Molecule, kolekcjom Ansible, obrazom i infrastrukturze chmurowej. Wszystkie kody zostały zaktualizowane, a całość została wzbogacona o praktyczne wskazówki dotyczące dobrych praktyk programistycznych na platformach do weryfikowania kodu.
W książce:
- zarządzanie konfiguracją i wdrożeniami systemów za pomocą Ansible
- dobre praktyki pracy z Ansible
- formaty kolekcji, moduły i wtyczki
- generowanie obrazów kontenerów i instancji chmurowych
- tworzenie infrastruktury chmurowej
- automatyzacja procesów CI/CD w środowisku programistycznym
- platforma Ansible Automation w metodyce DevOps
Minimalne rozmiary, prostota i wyjątkowa skuteczność — poznaj Ansible!
Spis treści
Wstęp do trzeciego wydania
1. Wprowadzenie
- Uwaga do wersji
- Do czego nadaje się Ansible?
- Jak działa Ansible?
- Na czym polega wielkość Ansible?
- Prostota
- Użyteczność
- Bezpieczeństwo
- Czy Ansible nie jest zbyt proste?
- Co musisz wiedzieć?
- Czego tu nie znajdziesz?
- Co dalej?
2. Instalacja i konfiguracja
- Instalacja Ansible
- Luźne zależności
- Uruchomienie Ansible w kontenerze
- Rozwijanie Ansible
- Konfiguracja serwera testowego
- Konfiguracja serwera testowego za pomocą narzędzia Vagrant
- Wprowadzanie do Ansible informacji o serwerze
- Ułatwienia dzięki plikowi ansible.cfg
- Nie miej litości
- Przydatne opcje konfiguracyjne środowiska Vagrant
- Przekazywanie portów i prywatne adresy IP
- Włączanie przekazywania agentów
- Prowizjoner Docker
- Lokalny prowizjoner Ansible
- Kiedy uruchamiany jest prowizjoner?
- Wtyczki Vagrant
- Hostmanager
- VBGuest
- Dostosowywanie maszyny wirtualnej VirtualBox
- Plik Vagrantfile to kod Ruby
- Konfiguracja produkcyjna
- Podsumowanie
3. Scenariusze - pierwsze kroki
- Wstępne wymagania
- Bardzo prosty scenariusz
- Tworzenie pliku konfiguracyjnego Nginx
- Tworzenie strony WWW
- Definiowanie grupy serwerów WWW
- Uruchomienie scenariusza
- Scenariusz to plik YAML
- Początek pliku
- Koniec pliku
- Komentarze
- Wcięcia i białe znaki
- Ciągi znaków
- Wartości logiczne
- Listy
- Słowniki
- Dzielenie wierszy
- Czysty YAML zamiast argumentów tekstowych
- Anatomia scenariusza
- Akcje
- Zadania
- Moduły
- Korzystanie z dokumentacji Ansible
- Wszystko razem
- Czy coś się zmieniło? Śledzenie stanu serwera
- Coś ciekawszego: szyfrowanie TLS
- Tworzenie certyfikatu TLS
- Zmienne
- Cudzysłowy w ciągach znaków
- Tworzenie szablonu konfiguracyjnego Nginx
- Pętle
- Procedury
- Kilka cech procedur, o których należy pamiętać
- Testy
- Weryfikacja
- Scenariusz
- Uruchomienie scenariusza
- Podsumowanie
4. Ewidencja: opisywanie serwerów
- Plik ewidencyjny
- Wstępne wymagania: kilka maszyn Vagrant
- Funkcjonalne parametry ewidencji
- Zmienianie domyślnych wartości parametrów funkcjonalnych
- Grupy, grupy i jeszcze raz grupy
- Przykład: instalacja aplikacji Django
- Aliasy i porty
- Grupy grup
- Serwery numerowane (zwierzaki kontra stado)
- Zmienne serwerowe i grupowe w pliku ewidencyjnym
- Zmienne serwerowe i grupowe w osobnych plikach
- Dynamiczna ewidencja
- Wtyczki ewidencyjne
- Amazon EC2
- Azure Resource Manager
- Interfejs skryptu dynamicznej ewidencji
- Tworzenie skryptu dynamicznej ewidencji
- Podział ewidencji na kilka plików
- Dodawanie wpisów w trakcie działania scenariusza za pomocą modułów add_host i group_by
- Moduł add_host
- Moduł group_by
- Podsumowanie
5. Zmienne i fakty
- Definiowanie zmiennych w scenariuszu
- Definiowanie zmiennych w oddzielnych plikach
- Układ katalogów
- Wyświetlanie wartości zmiennych
- Interpolacja zmiennych
- Rejestrowanie zmiennych
- Fakty
- Wyświetlanie wszystkich faktów skojarzonych z serwerem
- Wyświetlanie podzbioru faktów
- Fakty i informacje może zwracać każdy moduł
- Fakty lokalne
- Definiowanie nowej zmiennej za pomocą modułu set_fact
- Wbudowane zmienne
- hostvars
- inventory_hostname
- groups
- Definiowanie zmiennych w wierszu poleceń
- Priorytety
- Podsumowanie
6. Mezzanine: nasza testowa aplikacja
- Dlaczego wdrażanie aplikacji produkcyjnych jest skomplikowane?
- Baza danych: PostgreSQL
- Serwer aplikacyjny: Gunicorn
- Serwer WWW: Nginx
- Menedżer procesów: Supervisor
- Podsumowanie
7. Instalacja Mezzanine za pomocą Ansible
- Wyświetlanie zadań scenariusza
- Układ zainstalowanych plików
- Zmienne jawne i poufne
- Instalowanie wielu pakietów
- Instrukcja become w zadaniu
- Aktualizacja rejestru apt
- Sprawdzenie projektu za pomocą modułu git
- Instalacja Mezzanine i innych pakietów w środowisku wirtualnym
- Krótka dygresja: skomplikowane argumenty w zadaniach
- Konfiguracja bazy danych
- Tworzenie pliku local_settings.py na podstawie szablonu
- Polecenia django-manage
- Uruchamianie własnych skryptów Pythona w kontekście aplikacji
- Utworzenie plików konfiguracyjnych usług
- Aktywacja konfiguracji serwera Nginx
- Instalacja certyfikatów TLS
- Instalacja zadania Twitter w harmonogramie cron
- Cały scenariusz
- Uruchomienie scenariusza na maszynie wirtualnej Vagrant
- Diagnostyka
- Brak dostępu do repozytorium GitHub
- Brak dostępu do adresu 192.168.33.10.nip.io
- Komunikat Bad Request (400)
- Podsumowanie
8. Diagnozowanie scenariuszy
- Czytelne komunikaty o błędach
- Diagnozowanie połączenia SSH
- Typowe wyzwania związane z usługą SSH
- PasswordAuthentication no
- Połączenie z użyciem innego konta
- Błąd weryfikacji klucza
- Sieci prywatne
- Moduł debug
- Debuger scenariuszy
- Moduł assert
- Sprawdzenie scenariusza przed uruchomieniem
- Sprawdzenie składni
- Wyświetlenie listy serwerów
- Wyświetlenie listy zadań
- Tryb weryfikacji
- Różnice (wyświetlenie zmian w plikach)
- Tagi
- Limity
- Podsumowanie
9. Skalowanie scenariuszy: role
- Podstawowa struktura roli
- Przykład: role database i mezzanine
- Stosowanie ról w scenariuszach
- Zadania wstępne i końcowe
- Rola database instalująca bazę danych
- Rola mezzanine instalująca aplikację Mezzanine
- Tworzenie plików i katalogów ról za pomocą narzędzia ansible-galaxy
- Role zależne
- Repozytorium Ansible Galaxy
- Interfejs WWW
- Interfejs wiersza poleceń
- Wymagania ról w praktyce
- Udostępnianie własnej roli
- Podsumowanie
10. Zaawansowane scenariusze
- Obsługa błędnie działających poleceń
- Filtry
- Filtr default
- Filtry zarejestrowanych zmiennych
- Filtry ścieżek plików
- Tworzenie własnych filtrów
- Wyszukiwarki
- file
- pipe
- env
- password
- template
- csvfile
- dig
- redis
- Utworzenie własnej wyszukiwarki
- Zaawansowane pętle
- Wyszukiwarki with
- with_lines
- with_fileglob
- with_dict
- Wyszukiwarki jako pętle
- Sterowanie pętlami
- Określanie nazwy zmiennej iteracyjnej
- Umieszczanie etykiet w wynikach
- Importowanie i dołączanie plików
- Dynamiczne dołączanie plików
- Dołączanie ról
- Sterowanie realizacją roli
- Bloki
- Obsługa błędów za pomocą bloków
- Szyfrowanie poufnych danych
- Kilka sejfów z różnymi hasłami
- Podsumowanie
11. Dostosowywanie serwerów, przebiegów i procedur
- Wzorce specyfikowania serwerów
- Określanie grupy serwerów
- Wykonywanie zadania na komputerze sterującym
- Jawne gromadzenie faktów
- Odczytywanie adresu IP serwera
- Wykonywanie zadania na innym komputerze niż serwer
- Wykonywanie zadania na kolejnych serwerach
- Wykonywanie zadania w grupie serwerów
- Jednokrotne wykonanie zadania
- Selektywne wykonywanie zadań
- step
- start-at-task
- Tagi wykonywane
- Tagi pomijane
- Strategie przebiegów
- Strategia linear
- Strategia free
- Zaawansowane procedury
- Procedury w zadaniach wstępnych i końcowych
- Procedury natychmiastowe
- Metapolecenia
- Procedury powiadamiające inne procedury
- Procedury nasłuchujące
- Procedury nasłuchujące: konfiguracja certyfikatów SSL
- Podsumowanie
12. Zarządzanie serwerami Windows
- Połączenie z systemem Windows
- PowerShell
- Moduły Windows
- Nasza maszyna programistyczna Java
- Tworzenie lokalnych kont użytkowników
- Funkcje Windows
- Instalacja oprogramowania za pomocą menedżera Chocolatey
- Konfiguracja środowiska Java
- Aktualizacja systemu Windows
- Podsumowanie
13. Ansible i kontenery
- Kubernetes
- Proces uruchamiania aplikacji kontenerowej
- Rejestry
- Ansible i Docker
- Połączenie z demonem Docker
- Przykładowa aplikacja: Ghost
- Uruchomienie kontenera Docker na lokalnym komputerze
- Utworzenie obrazu na podstawie pliku Dockerfile
- Wysłanie obrazu do rejestru
- Konfigurowanie kontenerów na lokalnym komputerze
- Uzyskiwanie informacji o lokalnym obrazie
- Wdrożenie aplikacji kontenerowej
- Utworzenie maszyny MySQL
- Wdrożenie bazy danych dla aplikacji Ghost
- Fronton
- Fronton: Ghost
- Fronton: NGINX
- Usunięcie kontenerów
- Podsumowanie
14. Kontrola jakości przy użyciu platformy Molecule
- Instalacja i konfiguracja
- Konfigurowanie sterowników Molecule
- Utworzenie roli Ansible
- Scenariusze Molecule
- Żądany stan
- Konfigurowanie scenariusza Molecule
- Zarządzanie maszynami wirtualnymi
- Zarządzanie kontenerami
- Polecenia Molecule
- Lintowanie
- YAMLlint
- ansible-lint
- ansible-later
- Weryfikatory
- Ansible
- Goss
- TestInfra
- Podsumowanie
15. Kolekcje
- Instalacja kolekcji
- Wyświetlenie listy kolekcji
- Stosowanie kolekcji w scenariuszu
- Tworzenie kolekcji
- Podsumowanie
16. Tworzenie obrazów
- Tworzenie obrazów za pomocą narzędzia Packer
- Tworzenie maszyny wirtualnej w środowisku Vagrant VirtualBox
- Połączenie narzędzi Packer i Vagrant
- Obrazy chmurowe
- Google Cloud Platform
- Azure
- Amazon EC2
- Scenariusz
- Obraz Docker: GCC 11
- Podsumowanie
17. Infrastruktura chmurowa
- Terminologia
- Instancja
- Obraz AMI
- Etykieta
- Definiowanie poświadczeń
- Zmienne środowiskowe
- Pliki konfiguracyjne
- Wymagania: biblioteka Python Boto3
- Dynamiczne ewidencjonowanie instancji
- Buforowanie ewidencji
- Inne opcje konfiguracyjne
- Definiowanie dynamicznych grup zasobów za pomocą etykiet
- Przypisywanie etykiet do istniejących zasobów
- Czytelne nazwy grup
- Wirtualne chmury prywatne
- Przygotowanie pliku ansible.cfg
- Uruchamianie nowych instancji
- Pary kluczy EC2
- Utworzenie nowego klucza
- Grupy zabezpieczeń
- Dozwolone adresy IP
- Porty w grupach zabezpieczeń
- Uzyskiwanie najnowszego obrazu AMI
- Utworzenie nowej instancji i dodanie jej do grupy
- Oczekiwanie na gotowość instancji
- Wszystko razem
- Konfiguracja chmury VPC
- Dynamiczne ewidencjonowanie i chmura VPC
- Podsumowanie
18. Wtyczki zwrotne
- Wtyczki standardowego wyjścia
- ARA
- debug
- default
- dense
- json
- minimal
- null
- oneline
- Wtyczki powiadomień i agregacji
- Moduły Pythona
- foreman
- jabber
- junit
- log_plays
- logentries
- logstash
- profile_roles
- profile_tasks
- say
- slack
- splunk
- timer
- Podsumowanie
19. Własne moduły
- Przykład: sprawdzenie, czy zewnętrzny serwer jest dostępny
- Użycie modułu script zamiast tworzenia własnego modułu
- Skrypt can_reach jako moduł
- Czy trzeba tworzyć własne moduły?
- Gdzie umieszczać własne moduły?
- Jak Ansible uruchamia moduły?
- Utworzenie niezależnego skryptu Pythona z argumentami (tylko Python)
- Skopiowanie modułu do serwera
- Utworzenie pliku argumentów na serwerze (inne języki)
- Wywołanie modułu
- Oczekiwane wyniki
- Zmienne wynikowe oczekiwane przez Ansible
- Tworzenie modułów w języku Python
- Analiza argumentów
- Odczytywanie argumentów
- Import klasy pomocniczej AnsibleModule
- Opcje argumentów
- Parametry konstruktora klasy AnsibleModule
- Zwracanie informacji o pomyślnym lub niepomyślnym wykonaniu modułu
- Wywoływanie zewnętrznych programów
- Tryb weryfikacji (suchy przebieg)
- Dokumentowanie modułu
- Diagnozowanie modułu
- Implementowanie modułu jako skryptu Bash
- Określanie alternatywnego położenia powłoki Bash
- Podsumowanie
20. Przyspieszanie Ansible
- Zwielokrotnienie sesji SSH (opcja ControlPersist)
- Ręczne włączenie zwielokrotnienia sesji SSH
- Opcje zwielokrotniania sesji SSH
- Dodatkowe strojenie sesji SSH
- Zalecenia dotyczące algorytmów
- Potokowanie
- Włączenie potokowania
- Konfigurowanie potokowania na serwerze
- Mitogen dla Ansible
- Zapamiętywanie faktów
- Zapamiętywanie faktów w plikach JSON
- Zapamiętywanie faktów w bazie Redis
- Zapamiętywanie faktów w bazie Memcached
- Równoległe połączenia
- Równoległe wykonywanie zadań za pomocą instrukcji async
- Podsumowanie
21. Sieci i bezpieczeństwo
- Zarządzanie siecią
- Obsługiwane urządzenia
- Komunikacja Ansible z urządzeniami sieciowymi
- Tryb uprzywilejowany
- Ewidencja sieci
- Zastosowania automatyzacji operacji sieciowych
- Bezpieczeństwo
- Czy trzeba przestrzegać norm?
- Zabezpieczony, ale nie bezpieczny
- Szare IT
- Jasne IT
- Zero zaufania
- Podsumowanie
22. Procesy CI/CD i Ansible
- Ciągła integracja oprogramowania
- Elementy systemu ciągłej integracji oprogramowania
- Jenkins i Ansible
- Uruchomienie procesu CI dla ról Ansible
- Testy
- Wtyczka Ansible
- Wtyczka Ansible Tower
- Podsumowanie
23. Ansible Automation Platform
- Modele subskrypcyjne
- Wersja próbna platformy Ansible Automation Platform
- Do czego służy platforma Ansible Automation?
- Kontrola dostępu
- Projekty
- Zarządzanie ewidencją
- Uruchamianie zadań według szablonów
- Interfejs REST API
- Kolekcja awx.awx
- Instalacja
- Zdefiniowanie organizacji
- Utworzenie ewidencji
- Uruchamianie scenariusza za pomocą szablonu zadania
- Uruchamianie Ansible za pomocą kontenerów
- Tworzenie środowisk wykonawczych
- Podsumowanie
24. Dobre praktyki
- Prostota, modułowość i kompozycyjność
- Porządkowanie treści
- Oddzielenie ewidencji od projektów
- Oddzielenie ról od kolekcji
- Scenariusze
- Styl kodu
- Oznaczanie i testowanie wszystkiego
- Żądany stan
- Ciągłe dostarczanie oprogramowania
- Bezpieczeństwo
- Wdrażanie
- Wskaźniki wydajności
- Ocenianie skuteczności dobrych praktyk
- Słowo końcowe
Bibliografia
Kategoria: | Sieci komputerowe |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-8322-153-3 |
Rozmiar pliku: | 4,8 MB |