Powrót do bloga

Automatyzacja konfiguracji serwera za pomocą Ansible i Ubuntu 20.04

Automatyzacja konfiguracji serwera za pomocą Ansible i Ubuntu 20.04

Wprowadzenie

W dzisiejszych czasach serwery muszą być tworzone i usuwane bardzo często. Dzieje się tak dlatego, że czasami serwery są bardzo obciążone, podczas gdy w innych momentach obciążenie spada, co powoduje marnowanie zasobów systemowych. Typowym przykładem są witryny e-commerce w okresie świątecznym, które przyciągają duży ruch. Gdy aplikacja ma charakter skalowalny, zawsze istnieje potrzeba posiadania narzędzi do zarządzania konfiguracją, aby ułatwić ogólny proces tworzenia serwerów. Ansible to świetne narzędzie do zarządzania konfiguracją, które automatyzuje tworzenie serwerów przy użyciu standardowych procedur, redukując błędy ludzkie.

Ansible nie wymaga instalowania specjalnego oprogramowania na węzłach serwerów. Posiada wszystkie narzędzia niezbędne do pisania, budowania i ułatwiania automatyzacji skryptów. Ten samouczek szczegółowo opisuje, jak używać Ansible do automatyzacji kroków zawartych w naszym Jak skonfigurować serwer Ubuntu samouczku.

Wymagania wstępne

Aby ukończyć ten przewodnik, będziemy używać Ubuntu 20.04. Ponadto będziesz również potrzebować:

  • Węzeł kontrolny Ansible: Maszyna z systemem Ubuntu z uruchomioną najnowszą wersją Ubuntu. Główny plik binarny Ansible musi być zainstalowany i uruchomiony na tej maszynie. Maszyna ta powinna być w stanie połączyć się z węzłami Ansible. Do tych połączeń należy użyć kluczy SSH. Aby uniknąć problemów podczas łączenia, upewnij się, że węzeł kontrolny Ansible ma włączoną zaporę sieciową. Jeśli potrzebujesz pomocy, zapoznaj się z naszym wpisem na blogu Instalacja i konfiguracja Ansible na Ubuntu 20.04.

  • Hosty Ansible: Do połączenia wymagany jest jeden lub więcej hostów. Hosty to zasadniczo zarządzane węzły w Ansible. Muszą to być serwery Ubuntu.

Funkcje playbooka Ansible

Możesz ręcznie wykonać wszystkie poniższe kroki. My jednak zautomatyzujemy to wykonanie. Po uruchomieniu tego playbooka wykona on następujące operacje na Twojej maszynie:

  1. Zainstaluje aptitude, który jest preferowany przez Ansible jako menedżer pakietów.

  2. Utworzy grupę administracyjną wheel z uprawnieniami sudo bez hasła.

  3. Utworzy nowego użytkownika sudo.

  4. Skopiuje lokalny klucz SSH do authorized_keys. Ma on być używany dla nowego użytkownika administracyjnego na zdalnym hoście.

  5. Wyłączy uwierzytelnianie oparte na haśle dla użytkownika root.

  6. Zainstaluje niezbędne pakiety.

  7. Skonfiguruje zaporę sieciową UFW tak, aby zezwalała tylko na połączenia SSH. Wszelkie inne połączenia zostaną zablokowane.

Po zakończeniu wykonywania playbooka dostępny będzie nowy użytkownik. Możesz użyć tego użytkownika do zalogowania się do systemu.

Używanie playbooka Ansible

Aby skonfigurować serwer, będziesz potrzebować playbooka do wstępnej konfiguracji serwera oraz jego zależności. Jeśli używasz go po raz pierwszy, musisz sklonować repozytorium za pomocą poniższego linku:

Jeśli repozytorium już istnieje w Twoim systemie, uruchom poniższe polecenie, aby pobrać najnowsze aktualizacje:

Na swojej maszynie otrzymasz poniższą strukturę plików:

Poniżej znajduje się opis plików:

  • vars/default.yml: Ten plik zawiera zmienne do konfiguracji węzła Ansible.

  • playbook.yml: Ten plik zawiera zadania, które mają zostać wykonane na serwerze.

Plik vars/default.yml wygląda mniej więcej tak:

Poniżej znajduje się opis tych zmiennych. Jeśli chcesz je edytować, możesz zastąpić ich wartości własnymi:

  1. create_user: To jest użytkownik, który zostanie utworzony. Ten użytkownik posiada uprawnienia sudo.

  2. copy_local_key: Zawiera ścieżkę do lokalnego klucza publicznego SSH. Zostanie on skopiowany na serwer zdalny jako authorized_key.

  3. sys_packages: Jeśli chcesz zainstalować jeden lub więcej pakietów na swoim serwerze, wymień je tutaj jako tablicę.

Po edycji tego pliku zapisz jego zawartość. Następnie w programie nano naciśnij CTRL+X , Y. Następnie, ENTER, aby zapisać zawartość pliku.

Teraz możesz uruchomić ten playbook na wielu serwerach. Domyślnie playbooki są gotowe do wykonania na serwerach znajdujących się w Twoim pliku inventory. Jeśli chcesz użyć playbooka na określonych serwerach, możesz użyć flagi -l. Załóżmy teraz, że serwer zdalny ma wielu użytkowników, możesz użyć flagi -u, aby wskazać, z którym użytkownikiem ma nastąpić połączenie.

Jeśli nazwa Twojego serwera to my_server, a nazwa użytkownika to my_user, uruchom poniższe polecenie, aby wykonać je na węzłach Ansible:

Otrzymasz wynik podobny do poniższego:

Po zakończeniu tego wykonywania możesz połączyć się za pomocą poniższego polecenia:

Pamiętaj, że my_user to nazwa, której użyliśmy w pliku vars/default.yml. W powyższym poleceniu musisz również zmienić adres IP serwera na adres IP swojego serwera. Jeśli podałeś zmienną copy_local_key wskazującą na niestandardowy klucz SSH, określ lokalizację za pomocą przełącznika -i:

Następnie zaloguj się na swój serwer, aby sprawdzić reguły zapory UFW:

Otrzymasz następujący wynik:

Powyższy wynik potwierdza, że zapora UFW została pomyślnie skonfigurowana. Był to ostatni krok w naszym playbooku. Jeśli został wykonany poprawnie, oznacza to, że uruchomienie zakończyło się sukcesem.

Zawartość playbooka Ansible

Pliki playbooka użyte w tym samouczku są hostowane na ansible-playbooks/setup_ubuntu1804 at master · do-community/ansible-playbooks · GitHub. Jeśli chcesz zobaczyć zawartość każdego pliku, aby go użyć lub edytować, kliknij przycisk Raw na górze każdego skryptu.

Dla szybkiego odniesienia udostępniamy pełną zawartość playbooka wraz z odpowiednimi plikami:

  • vars/default.yml

Ten plik zawiera wartości, które będą używane przez zadania playbooka. Obejmują one takie wartości jak nazwa użytkownika, uprawnienia, klucze SSH, pakiety do zainstalowania w ramach wstępnej konfiguracji i tak dalej:

  • playbook.yml

Plik playbook.yml zawiera zadania, które mają zostać wykonane. Po pierwsze, plik zawiera listę wszystkich hostów docelowych. Jeśli chcesz określić wszystkie serwery, ustaw wartość tego klucza na all. Następnie, jeśli chcesz określić zadania do wykonania z uprawnieniami sudo, ustawiasz wartość zmiennej become: true. Na koniec plik ten musi zawierać zawartość powyższego pliku vars/default.yml. Dołączamy je poniżej, aby załadować ustawienia z tego pliku:

Podsumowanie

Automatyzacja jest kluczem w IT, zapewniając, że wszystkie procesy są wolne od błędów i są zgodne ze standardowymi praktykami i procedurami. Ponieważ większość dzisiejszego oprogramowania jest dostarczana przez Internet i ma charakter rozproszony, tworzenie nowych serwerów, np. dla różnych środowisk, takich jak testowe (staging), produkcyjne, a nawet demonstracyjne, stało się codziennym zadaniem.

W tym samouczku pokazaliśmy, jak osiągnąć automatyzację serwerów za pomocą Ansible – potężnego i łatwego w użyciu narzędzia, które pozwala zaoszczędzić mnóstwo czasu.

Miłego korzystania!

author

Shreyas Patil

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.