Ansible pozwala nam zautomatyzować zarządzanie konfiguracją systemów i dodać dowolną liczbę klientów. Czy kiedykolwiek zastanawiałeś się, jak skomplikowane może to być? Czy kiedykolwiek zastanawiałeś się, jak długie i zagmatwane mogą być podręczniki? W jaki sposób Ansible nadal sprawia, że wydaje się to bryzą? Wykorzystuje koncepcję ról Ansible i o tym będziemy rozmawiać na tym blogu.
Omówione tematy:
- Wprowadzenie do ról Ansible
- Możliwość ponownego wykorzystania ról Ansible
- Struktura katalogu ról
- Demo: Instalowanie MEAN Stack przy użyciu Ansible Roles
Jeśli chcesz opanować DevOps, ' Oczywiście byłaby twoją opcją.
Wprowadzenie do ról Ansible
Ansible Role to koncepcja, która dotyczy raczej pomysłów niż wydarzeń. Jest to w zasadzie kolejny poziom abstrakcji używany do porządkowania podręczników. Zapewniają szkielet niezależnej kolekcji zmiennych, zadań, szablonów, plików i modułów wielokrotnego użytku, które mogą być automatycznie ładowane do podręcznika. Poradniki to zbiór ról. Każda rola ma określoną funkcjonalność.
Pozwólcie, że wyjaśnię to na przykładzie. Załóżmy, że chcesz, aby Twój poradnik wykonywał 10 różnych zadań na 5 różnych systemach. Czy użyłbyś do tego jednego poradnika? Nie, korzystanie z jednego poradnika może być mylące i podatne na błędy. Zamiast tego możesz utworzyć 10 różnych ról, z których każda będzie wykonywać jedno zadanie. Następnie wszystko, co musisz zrobić, to podać nazwę roli w playbooku, aby ją nazwać. Dowiesz się dalej na tym blogu, jak używać ról.
Możliwość ponownego wykorzystania ról Ansible
Role Ansible są od siebie niezależne. Wykonywanie jednej roli nie zależy od innych, dlatego można ich użyć ponownie. Możesz nawet modyfikować i personalizować te role zgodnie ze swoimi wymaganiami. Zmniejsza to nasze zadanie polegające na przepisywaniu całej sekcji kodu za każdym razem, gdy tego potrzebujemy, upraszczając w ten sposób naszą pracę.
Wróćmy do poprzedniego przykładu. Napisałeś 10 ról i teraz musisz użyć 5 z nich do innego zestawu obsługi administracyjnej. Czy piszesz ponownie cały poradnik? Nie, po prostu ponownie wykorzystaj te 5 ról, nazywając je w tym nowym Poradniku. W razie potrzeby możesz również wprowadzić modyfikacje, ale i tak zaoszczędziłoby to dużo czasu.
Załóżmy, że musisz napisać poradnik konfigurowania stosu LAMP. Musisz stworzyć 4 role, każdą do tworzenia Linuksa, Apache, MongoDB i PHP. Jeśli w przyszłości będziesz potrzebować innego poradnika do konfigurowania stosu LAMP, a także WordPress, czy ponownie utworzysz nowe role dla stosu LAMP i WordPress? Nie! Możesz po prostu ponownie użyć starszych ról (używanych dla stosu LAMP) i dodatkowo utworzyć nową rolę dla WordPress.
Struktura katalogu ról
Korzystając z ról Ansible, oczekuj, że pliki będą miały określoną strukturę. Najbardziej zagmatwaną częścią używania ról jest zrozumienie hierarchii plików. Ansible udostępnia funkcję o nazwie Ansible Galaxy, która pomaga odgrywać role. Wiemy już, gdzie jest nasz Ansible na Ubuntu (/ etc / ansible). Czy widziałeś kiedyś katalog o nazwie role w / etc / ansible? Ten katalog istnieje właśnie z tego powodu. W tym katalogu tworzysz różne role.
Katalog będzie wyglądał następująco:
statyczna funkcja składowa c ++
Możesz utworzyć rolę za pomocą galaktyka ansibla komenda init wewnątrz / etc / ansible / roles.
$sudoansibli-galaktyka init
Zobaczysz, że zostałyby również utworzone inne katalogi ról.
Te katalogi to zadania, programy obsługi, wartości domyślne, zmienne, pliki, szablony i meta oraz plik README.mdplik.
Zadania - Zawiera główną listę zadań do wykonania przez rolę. Tozawieraplik main.yml dla tej konkretnej roli.
Handlery - Zawiera opiekunów, których może używać ta rola lub nawet poza tą rolą.
Domyślne - Zawiera domyślne zmienne, które będą używane przez tę rolę.
Którego - Ten katalog zawiera inne zmienne, które będą używane przez rolę. Te zmienne można zdefiniować w swoim poradniku, ale dobrym zwyczajem jest definiowanie ich w tej sekcji.
Akta - Zawiera pliki, które można wdrożyć za pomocą tej roli. Zawiera pliki, które należy wysłać do hostów podczas konfigurowania roli.
Meta - Definiuje metadane dla tej roli. Zasadniczo zawiera pliki, które ustanawiają zależności ról.
Każdy zadanie katalog musi składać się z pliku main.yml plik, w którym zapisany jest rzeczywisty kod dla tej konkretnej roli.
Przyjrzyjmy się teraz pracy lub rolom dzięki demonstracji instalacji MEAN Stack.
Demo: Instalowanie MEAN Stack przy użyciu Ansible Roles
Pokażę, jak zainstalować MEAN Stack przy użyciu ról Ansible, wykonując tylko jeden podręcznik. Będziemy mieć trzy role: 1) Instalowanie wymagań wstępnych, 2) Instalowanie MongoDB i 3) Instalowanie NodeJS. Zakładam, że już jesteś zainstalował Ansible i nawiązał połączenie serwer-klient w systemie Ubuntu . Zacznijmy bawić się rolami Ansible.
Krok 1 - Przejdź do katalogu / etc / ansible / roles i utwórz role dla wymagań wstępnych, MongoDB i NodeJS.
$ cd / etc / ansible / roles $ sudo ansible-galaxy init wymagania wstępne $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs
W katalogu „role” powinny być teraz widoczne trzy role.
Krok 2 - Napisz main.yml dla wymagań wstępnych, które instalują Git.
$ cd wymagania wstępne / zadania / main.yml --- - nazwa: Zainstaluj git apt: nazwa: stan git: obecny update_cache: tak
Krok 3 - Napisz main.yml dla roli MongoDB
sortuj tablicę c ++
$ cd /mongodb/tasks/main.yml --- - nazwa: MongoDB - Importuj klucz publiczny apt_key: keyserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - nazwa: MongoDB - Dodaj repozytorium apt_repository: filename: „/etc/apt/sources.list.d/mongodb-org-3.2.list” repo: „deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse” stan: obecny update_cache : tak - name: MongoDB - Zainstaluj MongoDB apt: name: mongodb-org stan: obecny update_cache: tak - name: Uruchom powłokę mongod: 'mongod &'
Krok 4 - Napisz main.yml dlanodejsrola
$ cd nodejs / jobs / main.yml --- - name: Node.js - Pobierz skrypt get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- name: Node.js - Ustaw uprawnienia do wykonywania skryptu plik: ścieżka:' {{var_node}} / nodejs.sh 'tryb:' u + x '- name: Node.js - Wykonaj powłokę skryptu instalacyjnego:' {{var_node}} / nodejs.sh '- name: Node.js - Usuń plik skryptu instalacyjnego: ścieżka:' {{var_node}} / nodejs.sh 'stan: brak - nazwa: Node.js - Zainstaluj Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - Zainstaluj bower i łyk globalnie npm: name = {{item}} state = present global = yes with_items : - altana - łyk
Krok 5 - Napisz swój główny podręcznik
$ cd /etc/ansible/mean.yml --- - hosty: węzły użytkownik_zdalny: ansible get: tak get_method: sudo vars: # zmienna wymagana podczas instalacji węzła var_node: / tmp role: - wymagania wstępne - mongodb - nodejs
Teraz, gdy zdefiniowaliśmy role do zainstalowania wymagań wstępnych, MongoDB i NodeJs, zastosujmy je. Uruchom element playbook za pomocą następującego polecenia.
$sudoansible-playbook /etc/ansible/mean.yml -K
Jak widać, wszystkie zadania zostały wykonane, a ich stan uległ zmianie. Oznacza to, że zmiany w playbooku zostały zastosowane zarówno na serwerze, jak i na hoście. Konfigurowanie stosu MEAN to tylko jeden przykład. Możesz skonfigurować dosłownie wszystko i wszystko za pomocą ról Ansible.
To prowadzi nas do końca bloga Ansible Roles. Jeśli uznasz ten artykuł za pomocny, zapoznaj się z ' oferowane przez Edureka. Obejmuje wszystkie narzędzia, które ulepszyły branżę IT.
Masz do nas pytanie? Proszę opublikuj to na a my skontaktujemy się z Tobą.