Patrząc na próbę zbudowania pewnej odporności w naszej konfiguracji Ansible, która zajmuje się obsługą administracyjną i konfiguracją.
Rozumiem kilka metod testowania po stronie konfiguracji rzeczy, ale zastanawiam się, jak najlepiej wdrożyć testowanie po stronie udostępniania rzeczy i czy istnieją jakieś narzędzia, które mogą pomóc w tego typu implementacji.
Obecnie wiele naszych testów przeprowadzanych jest szeregowo podczas podręcznika, co ma sens dla takich rzeczy, jak: „pojawiła się usługa; jest dostępny vip; czy to zadanie asynchroniczne zostało zakończone”, ale to, co naprawdę mnie martwi, to nasza zdolność do zarządzania dryfowaniem konfiguracja zarówno w warstwie aplikacji, jak i na poziomie udostępniania (np. konfiguracja maszyny wirtualnej). Wiem, że Ansible nie jest najlepszym narzędziem do pracy ze zmianami konfiguracji, ale ciekawi mnie twoje własne opinie.
Jeśli masz coś, aby w pełni zautomatyzować proces jeszcze lepiej. (mamy kilka brzydkich skryptów, które codziennie zgłaszają się luzem).
Uwaga : w tej chwili mamy kilka warunków, w których może wystąpić poprawka (np. Przebudowa z kopii zapasowej, problem z krytycznymi systemami), ale zazwyczaj po prostu wykonuje ona pętle przez niektóre zadania konfiguracyjne i już o tym nie myśli.
I'm aware Ansible isn't the best tool for working with configuration drift
Proszę wytłumacz.Odpowiedzi:
Niektóre opcje tam ..
Narzędzia testowe: Posortowane według gwiazd github
Główne różnice między nimi:
Ostatecznie proponuję spędzić dzień na eksperymentowaniu z nimi wszystkimi, aby poczuć ich przed podjęciem decyzji.
Testy ciągłe / rozbieżności:
Testowanie uprzęży dla rozwoju:
Pełne ujawnienie: Jestem autorem plotek
AKTUALIZACJA: InSpec 4.x lub nowsza używa mieszanej licencji komercyjnej / open source - patrz komentarze.
źródło
Dwa narzędzia, które widziałem w tym celu, to InSpec i ServerSpec . Serverspec to oparte na Ruby narzędzie oparte na RSpec . InSpec jest inspirowany RSpec i ServerSpec.
Użyłem ServerSpec. Jest fajny, ale może nie w 100% stabilny. Mam problemy z testowaniem określonych wersji oprogramowania na Ubuntu.
Przeczytałem dokumenty InSpec, ale nie sięgnąłem głęboko. Robi to zasadniczo to samo, co Serverspec.
Sądząc po zobowiązaniach Github, wygląda na to, że praca na ServerSpec nieco się skończyła, podczas gdy InSpec dopiero się rozwija.
AKTUALIZACJA: InSpec 4.x lub nowsza używa mieszanej licencji komercyjnej / open source - patrz komentarze.
źródło
Podczas korzystania z narzędzi do zarządzania konfiguracją, takich jak Ansible, samo narzędzie będzie odpowiedzialne za zapobieganie przesunięciom konfiguracji. Gdy użyjesz Ansible do ustawienia określonej konfiguracji, powtarzalne wykonanie Ansible zapewni, że konfiguracja będzie taka, jak ją zdefiniowałeś. Wymaga to również napisania kodu Ansible w sposób idempotentny.
Biorąc pod uwagę powyższe, testowanie można wykonać, wykonując podręczniki Ansible w pętli z jakiegoś serwera. Na przykład zadanie crona lub Jenkins może wykonywać podręczniki co 30 minut i zgłaszać wszelkie awarie. Brak awarii oznacza, że konfiguracja jest sprawdzana, awarie oznaczają, że wystąpił problem z doprowadzeniem serwerów do pożądanego stanu .
W przypadku, gdy nie można ufać, że kod zostanie napisany jako idempotent, a tym samym nie można tak naprawdę wykonać Ansible powtarzalnie w pętli z automatycznego serwera, istnieje obejście. Możesz zrobić to samo, co powyżej (uruchomić Ansible w pętli), ale użyć trybu suchego uruchamiania . Za każdym razem, gdy Ansible zgłasza, że zmiany są wymagane, zadanie Jenkins (lub zadanie cron) może powiadomić cię, że skonfigurowana konfiguracja została zmieniona i serwery nie są w pożądanym stanie .
Aby upewnić się, że Twój kod Ansible faktycznie robi to, co Twoim zdaniem powinno robić, obowiązują rozwiązania wymienione przez Dave'a Swersky'ego. Zarówno InSpec, jak i Serverspec to narzędzia, które w inny sposób weryfikują, czy twoje poradniki rzeczywiście robią to, co masz na myśli. Świetnym sposobem na wykonanie tego rodzaju narzędzi w środowiskach testowych (nawet kontenerów dokerów) jest użycie kitchen.ci, który obsługuje cały klej między różnymi narzędziami do testowania w podczerwieni oraz wykonywanie podręczników / modułów / książek kucharskich.
Kitchen.ci był pierwotnie używany do testowania książek kucharskich Chef, ale istnieją również wtyczki do Ansible i innych narzędzi CM.
źródło
Test Kitchen ma wtyczkę Provider-ansible Provider do testowania kodu Ansible. Nie jest tak głęboka jak integracja szefa kuchni, ale w większości przypadków wykonuje zadanie. Istnieje również najnowszy projekt Molecule, który jest dedykowanym systemem testowania Ansible.
źródło
Możesz śledzić rozbieżności w konfiguracji / infrastrukturze / dryf za pomocą Outthentic , łatwo jest stworzyć zestaw testowy, aby „naprawić” pożądany stan i uruchomić go ponownie za każdym razem, gdy potrzebujesz śledzić niepożądane zmiany.
źródło