Ansible Galaxy to po prostu najłatwiejszy sposób na znalezienie już napisanych ról Ansible, tworzenie i udostępnianie swoich ról oraz skok do galaktyki treści Ansible!
====================Ogłoszenie o premierze ! =============
FOSDEM PGDay 2016 odbędzie się 29 stycznia przed FOSDEM, największym wydarzeniem open source w Europie, a PostgreSQL Devroom odbędzie się 31 stycznia w FOSDEM w Brukseli.
Jeśli interesuje Cię zarządzanie konfiguracją, orkiestracja serwerów, automatyczne wdrażanie (dlatego właśnie czytasz ten wpis na blogu, prawda?) i lubisz pracować z PostgreSQL (na pewno) na AWS (opcjonalnie), to możesz dołączyć do mojego wykładu „Managing PostgreSQL with Ansible” 29 stycznia, 12:30-13:20.
Sprawdź niesamowity harmonogram obu wydarzeń! Mam nadzieję, że zobaczymy się w Brukseli w tym tygodniu!
====================Ogłoszenie o premierze ! =============
Witaj galaktyko Ansible!
Ansible ma potężną społeczność, co czyni ich jeszcze potężniejszymi. Deweloperzy, którzy współtworzą Ansible, chętnie wnoszą swój wkład, a użytkownicy, którzy używają Ansible do własnych systemów, chętnie z niego korzystają.
Treść Ansible, o której mówili na swojej stronie internetowej, to w zasadzie role Ansible. Kontynuujmy pracę z rolami w tym poście na blogu i spróbujmy zrozumieć, co oznacza rola Ansible i jakie są różnice między rolami, podręcznikami i zadaniami.
Co to jest rola ansibla?
Bezwzględnie powinieneś używać ról. Role są świetne. Używaj ról. Role! Czy powiedzieliśmy to wystarczająco? Role są świetne.
Zanim zaczniemy mówić o rolach, przypomnijmy sobie definicję zadania i poradnika w terminologii Ansible.
Zadanie
Zadania są odpowiedzialne za wywołanie modułu z określonym zestawem parametrów.
Możesz przeczytać mój poprzedni wpis na blogu, aby dowiedzieć się więcej o modułach Ansible i sprawdzić moduły Ansible Postgres z przykładami.
Każde zadanie Ansible zawiera nazwę, moduł do wywołania, parametry modułu i opcjonalnie warunki wstępne i końcowe. Pozwalają nam wywoływać moduły Ansible i przekazywać informacje do kolejnych zadań.
Poniższe zadanie wywołuje moduł plików, dostarczając 4 parametry.
- name: Ensure the data folder has right ownership
file: path="/var/lib/postgresql" state=directory owner=postgres group=postgres
Zapewnia, że spełnione są 3 warunki:
- /var/lib/postgresql istnieje jako katalog
- właścicielem /var/lib/postgresql jest „postgres”
- grupa /var/lib/postgresql to „postgres”
Jeśli nie istnieje, Ansible tworzy katalog i przypisuje właściciela i grupę. Jeśli tylko właściciel jest inny, Ansible czyni go „postgresem”.
Poradnik
Playbooki zawierają sztuki, a sztuki zawierają zadania. Zadania wywołują moduły i mogą (opcjonalnie) procedury obsługi wyzwalaczy (uruchom raz, uruchom na końcu) .
Teraz możemy sprawdzić bardzo prosty przykład z poradnika poniżej:
- name: Ensure all virtual machines are ready
hosts: 127.0.0.1
connection: local
vars_files: # load default variables from YAML files below
- 'defaults/postgresql.yml'
- 'defaults/aws.yml'
tasks:
- include: 'tasks/provision.yml' # load infrastructure setup tasks
- name: Ensure all required PostgreSQL dependencies ready
hosts: postgresql-all # manage all PostgreSQL servers
sudo: yes
sudo_user: root
vars_files:
- 'defaults/postgresql.yml'
- 'defaults/aws.yml'
tasks:
- include: 'tasks/postgresql.yml' # load PostgreSQL setup tasks
W tym poradniku mamy dwie sztuki:
Pierwsza gra zapewnia, że wszystkie maszyny wirtualne są gotowe i działają na hoście lokalnym. Ładuje domyślne zmienne z plików YAML o nazwach postgresql.yml i aws.yml. Możesz myśleć o tych plikach jako o plikach konfiguracyjnych dla ról PostgreSQL i AWS (w naszym przykładzie) i playbookach, jak widać, że obie sztuki używają tych plików jako domyślnych zmiennych. Ta gra wywołuje zadanie provision.yml, które zawiera zadania konfiguracji infrastruktury.
Druga gra zapewnia gotowość wszystkich wymaganych zależności PostgreSQL i działa na serwerach Postgres, które są zdefiniowane w pliku inwentarza. Ta gra wywołuje zadanie postgresql.yml, które zawiera zadania konfiguracji PostgreSQL.
Jeśli chcesz zobaczyć pełny podręcznik, możesz sprawdzić moje repozytorium i dodać je, aby było lepsze.
Aby lepiej zrozumieć koncepcję podręcznika, możesz zapoznać się z przykładowymi podręcznikami sugerowanymi w dokumentacji Ansible.
Wróćmy do rozmowy o rolach. W Ansible;
- Poradniki organizować zadania
- Role organizować poradniki
Wyobraź sobie, że mamy do zarządzania wiele niezależnych zasobów (np. serwery WWW, serwery PostgreSQL, logowanie, monitoring, AWS). Umieszczenie wszystkiego w jednym podręczniku może skutkować niemożliwym do utrzymania rozwiązaniem.
Aby zmniejszyć taką złożoność, role pomagają nam w:
Dzielenie zadań na znacznie mniejsze podręczniki
Pozwala nam to na samodzielne skupienie się na zasobach. Ułatwia to konserwację i debugowanie. Również znacznie łatwiej będzie zrozumieć strukturę.
Ponowne użycie konfiguracji, plików, szablonów, zadań
W ten sposób możemy łatwo udostępniać te komponenty między podręcznikami, bez przepisywania w kółko.
Obsługa zależności w playbooku
Kiedy wykonujemy rolę, możemy być pewni, że wszystkie warunki wstępne dla tej roli są spełnione.
Tutaj możesz zobaczyć wykres zależności i odpowiednią strukturę katalogów ról:
Role PostgreSQL w Ansible Galaxy
Podczas pisania tego posta na blogu było 146 ról, które są wynikiem postgresql i postgres filtrowanie wyszukiwania.
Osobiście sugeruję sprawdzenie kilku z tych ról i użycie ich w twojej architekturze, jeśli są wystarczająco dobre i spełniają twoje potrzeby; jeśli nie, zarejestruj się w Ansible Galaxy i stwórz własne role.
Miłego hakowania!
Aby uzyskać więcej informacji o Ansible:
- Sprawdź ich dobrze napisane dokumenty.
- Obejrzyj krótki film o Ansible, który jest naprawdę pomocnym samouczkiem.
- Podążaj za ich harmonogramem webinarów, na liście jest kilka fajnych nadchodzących webinariów.