Ansible w praktyce. Automatyzacja konfiguracji i proste instalowanie system - Helion
Tytuł oryginału: Ansible: Up and Running: Automating Configuration Management and Deployment the Easy Way, 3rd Edition
ISBN: 978-83-8322-152-6
okładka: mi
Księgarnia: Helion
Książka będzie dostępna od stycznia 2023
Zobacz także:
- Windows Media Center. Domowe centrum rozrywki 66,67 zł, (8,00 zł -88%)
- Ruby on Rails. Ćwiczenia 18,75 zł, (3,00 zł -84%)
- Przywództwo w świecie VUCA. Jak być skutecznym liderem w niepewnym środowisku 58,64 zł, (12,90 zł -78%)
- Scrum. O zwinnym zarządzaniu projektami. Wydanie II rozszerzone 58,64 zł, (12,90 zł -78%)
- Od hierarchii do turkusu, czyli jak zarządzać w XXI wieku 58,64 zł, (12,90 zł -78%)
Spis treści
Ansible w praktyce. Automatyzacja konfiguracji i proste instalowanie systemów. Wydanie III -- 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