Technologia zmienia się z dnia na dzień, a nowoczesne aplikacje muszą wprowadzić poważne zmiany, aby spełnić oczekiwania swoich organizacji w zakresie szybkiej dostawy. Niestety sprawia to, że są one bardziej złożone, bardziej wyrafinowane i trudniejsze w utrzymaniu.
Jeśli chodzi o zarządzanie bazą danych, struktury danych wewnątrz MongoDB zmieniają się z czasem zgodnie z potrzebami aplikacji i może to być dość kosztowne (lub raczej ryzykowne).
Na dłuższą metę musimy mieć wydajną bazę danych łatwo konfigurowaną i zapewnić kompetentne dostarczanie oprogramowania. Osiągnięcie tego wszystkiego w sposób ręczny wiąże się z szeregiem niepowodzeń, takich jak
- Skomplikowana koordynacja między członkami zespołu.
- Wysokie szanse na powtórzenie zadania
- Podatny na wiele ludzkich błędów i błędów
- Niełatwo przezwyciężyć złożoność
- Zmniejszona współpraca i niezadowolenie z pracy
- Czasochłonne
- Słaba odpowiedzialność i zgodność
Trudności w administrowaniu bazami danych koncentrują się głównie na
- Wdrażanie
- Konserwacja
- Aktualizacja, która może wpłynąć na koszty operacyjne do 95% redukcji.
Osiągnięcie tego może zająć MongoDB dużo czasu i wysiłku ręcznego. Aby zapewnić sukces, będziesz potrzebować prostego systemu, dzięki któremu wszystkie wymienione powyżej niepowodzenia będą mogły zostać rozwiązane z jednej platformy w odpowiednim czasie, to znaczy w jakiś sposób zautomatyzowany system. Istnieje wiele opcji, ale w tym artykule omówimy, jak wykorzystać Ansible.
Co to jest Ansible
Ansible to po prostu uniwersalny język, który odkrywa tajemnicę wykonywania pracy. Innymi słowy, jest to silnik orkiestracji IT, który automatyzuje wdrażanie aplikacji, zarządzanie konfiguracją i koordynuje bardziej zaawansowane zadania IT, takie jak zapewnienie zerowych przestojów aktualizacji kroczących i ciągłych wdrożeń.
Maszynami można łatwo zarządzać bez użycia agentów, z większym naciskiem na bezpieczeństwo i niezawodność dzięki użyciu języka zaprojektowanego z myślą o „możliwości audytu” przez ludzi.
Chociaż wdrażanie MongoDB może nie być takie trudne, konserwacja, tworzenie kopii zapasowych i monitorowanie stają się z czasem coraz większymi problemami. Ponadto nie jest to takie proste, gdy jesteś nowicjuszem w zarządzaniu bazami danych. Dzięki temu, że programiści Ansible mogą z łatwością wdrażać i konfigurować aplikacje, umożliwia to również szybką dostawę na dowolną platformę hostingową.
Ponieważ Ansible nie jest częścią systemu klastra bazy danych, można go zainstalować na dowolnym zdalnym komputerze, a konfigurację przeprowadzić na hoście bazy danych. Sprawdź instrukcję instalacji, aby dowiedzieć się, która wersja jest odpowiednia dla Twojego systemu operacyjnego.
Ansible domyślnie łączy się z hostem bazy danych przez protokół SSH.
Poradniki Ansible
Playbooki to szablony, w których napisany jest kod Ansible, dlatego sam Ansible wskazuje, co ma wykonać w taki sposób, jak lista rzeczy do zrobienia. Są napisane w formacie YAML (Yet Another Markup Language). Każda zawiera operacje wykonywane krok po kroku przez użytkownika na określonej maszynie, które są uruchamiane sekwencyjnie. Na ich strukturę składa się jedna lub więcej sztuk. Play to w zasadzie blok kodu, który mapuje zestaw instrukcji zdefiniowanych dla konkretnego hosta.
Powszechnie używane tagi YAML w Ansible
-
imię
To jest tag, który definiuje nazwę podręcznika Ansible. Wskazane jest, aby ustawić nazwę, która dokładnie określa, co będzie robił.
-
hosty
Definiuje grupę hostów lub listę hostów, na których mają być uruchamiane zdefiniowane zadania. Jest to obowiązkowy znacznik, który informuje Ansible, na których hostach ma uruchamiać wymienione zadania. Ponieważ zadania mogą być wykonywane na wielu komputerach, zarówno tych samych, jak i zdalnych, w tym znaczniku można zdefiniować grupę hostów.
-
różne
Jak każdy inny język programowania, będziesz potrzebować zmiennych. Za pomocą tego tagu możesz zdefiniować zmienne, których będziesz używać w swoim podręczniku.
-
zadania
Ten tag pozwoli Ci wyświetlić listę zadań do wykonania. Zadania to właściwie czynności, które trzeba wykonać. Pole zadania definiuje nazwę zadania, które zasadniczo pomaga tekstowi użytkownikowi podczas debugowania podręcznika. Fragment kodu zdefiniowany jako moduł jest wewnętrznie połączony z każdym zadaniem, a wszelkie argumenty, które mają być użyte w module, są przekazywane przez tag zadań.
Prosta struktura podręcznika wygląda mniej więcej tak...
---
name: install and configure DB
hosts: testServer
become: yes
vars:
mongoDB_Port : 27017
tasks:
-name: Install the mongodb
yum: <code to install the DB>
-name: Ensure the installed service is enabled and running
service:
name: <your service name>
Pisanie prostego podręcznika, aby zainstalować i uruchomić MongoDB
-
Włączanie głównego dostępu SSH
Niektóre konfiguracje węzłów zarządzanych mogą zniechęcać do logowania się jako użytkownik root, dlatego należy zdefiniować podręcznik, aby rozwiązać ten problem. Stworzymy playbook enable-root-access.yml, który będzie wyglądał tak
--- - hosts: ansible-test remote_user: ubuntu tasks: - name: Enable root login shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/
Po uruchomieniu polecenia
$ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml
Powinieneś zobaczyć coś takiego
PLAY [ansible-test] *********************************************************** GATHERING FACTS *************************************************************** TASK: [Enable root login] ***************************************************** PLAY RECAP ********************************************************************
-
Wybieranie hostów i użytkowników w mongodbInstall.yaml
--- - hosts: ansible-test remote_user: root become: yes
-
Dodawanie zadań do wykonania
Zadania są wykonywane sekwencyjnie, więc musimy je opisać w sekwencyjny sposób, tj.
- apt_key, aby dodać klucze repozytorium. Publiczny klucz GPG MongoDB należy najpierw zaimportować
- name: Import the public key used by the package management system apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
- Dodawanie MongoDB apt_repository
- name: Add MongoDB repository apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
- Instalowanie pakietów i uruchamianie mongod, a następnie ponowne załadowanie lokalnej bazy danych pakietów
- name: install mongodb apt: pkg=mongodb-org state=latest update_cache=yes notify: - start mongodb
- Zarządzanie usługami, używanie programu obsługi do uruchamiania i restartowania usług
handlers: - name: start mongodb service: name=mongod state=started
- apt_key, aby dodać klucze repozytorium. Publiczny klucz GPG MongoDB należy najpierw zaimportować
Ogólny kod podręcznika powinien wyglądać tak
---
- hosts: ansible-test
remote_user: root
become: yes
tasks:
- name: Import the public key used by the package management system
apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
- name: Add MongoDB repository
apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
- name: install mongodb
apt: pkg=mongodb-org state=latest update_cache=yes
notify:
- start mongodb
handlers:
- name: start mongodb
service: name=mongod state=started
Następnie możemy uruchomić ten plik za pomocą ansible za pomocą polecenia
ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml
Jeśli Playbook został pomyślnie wykonany, powinieneś zobaczyć to w swoim terminalu
PLAY [ansible-test] ***********************************************************
GATHERING FACTS ***************************************************************
ok: [12.20.3.105]
ok: [12.20.3.106]
TASK: [Import the public key used by the package management system] ***********
changed: [12.20.3.105]
changed: [12.20.3.106]
TASK: [Add MongoDB repository] ************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]
TASK: [install mongodb] *******************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]
NOTIFIED: [start mongodb] *****************************************************
ok: [12.20.3.106]
ok: [12.20.3.105]
PLAY RECAP ********************************************************************
12.20.3.105 : ok=5 changed=3 unreachable=0 failed=0
12.20.3.106 : ok=5 changed=3 unreachable=0 failed=0
Jeśli teraz uruchomisz mongo, zostaniesz przekierowany do powłoki mongo
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("07c88442-0352-4b23-8938-fdf6ac66f253") }
MongoDB server version: 4.0.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Wniosek
Ansible to prosty silnik IT typu open source, który automatyzuje wdrażanie aplikacji, orkiestrację usług i udostępnianie chmury.
Działa poprzez łączenie węzłów bazy danych i wypychanie do nich instrukcji znanych jako moduły, domyślnie wykonuje je przez SSH, a następnie pozbywa się ich po zakończeniu. Nie uruchamia żadnych demonów ani serwerów, dlatego można go uruchomić z dowolnej zdalnej maszyny. W następnym samouczku omówimy, jak utrzymywać replikę MongoDB w chmurze za pomocą Ansible.