Анзибль на практике. Автоматизация конфигурации
Товар
- 0 раз купили
- 5 оценка
- 3 осталось
- 4 отзыва
Доставка
Характеристики
Описание
Ansible w praktyce. Automatyzacja konfiguracji i proste instalowanie systemów. Wydanie III
Bas Meijer, Lorin Hochstein, René Moser
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!
O autorze:
René Moser jest inżynierem systemów, zaangażowanym w projekt ASF CloudStack. Autor integracji CloudStack z 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
mail
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
Гарантии
Гарантии
Мы работаем по договору оферты и предоставляем все необходимые документы.
Лёгкий возврат
Если товар не подошёл или не соответсвует описанию, мы поможем вернуть его.
Безопасная оплата
Банковской картой, электронными деньгами, наличными в офисе или на расчётный счёт.