Tekniken förändras dag för dag och moderna applikationer måste ta allvarliga justeringar för att uppfylla de snabba leveransförväntningarna från deras organisationer. Tyvärr gör detta dem mer komplexa, mer sofistikerade och svårare att underhålla.
När det gäller databashantering förändras datastrukturerna inuti MongoDB i enlighet med applikationsbehov över tiden och det kan bli ganska dyrt (eller snarare riskabelt).
I det långa loppet måste vi ha en effektiv databas konfigurerad enkelt och säkerställa kompetent mjukvaruleverans. Att uppnå alla dessa på ett manuellt sätt kommer med ett antal motgångar som t.ex.
- Komplicerad samordning mellan teammedlemmar.
- Höga chanser att uppgiften upprepas
- Mottaglig för många mänskliga misstag och misstag
- Oktigt att övervinna komplexitet
- Minskat samarbete och missnöje på jobbet
- Tidskrävande
- Dålig ansvarighet och efterlevnad
Svårigheterna med databasadministration är främst centrerade på
- Distribuerar
- Underhåll
- Uppgradering som kan påverka driftskostnaderna med upp till 95 % minskning.
Att uppnå detta kan ta mycket tid och manuell ansträngning för MongoDB. För att säkerställa framgång måste du ha ett enkelt system med vilket du kan säkerställa att alla listade motgångar ovan kan åtgärdas från en enda plattform i tid, det vill säga på något sätt ett automatiserat system. Det finns en hel del alternativ men i den här artikeln kommer vi att diskutera hur man använder Ansible.
Vad är Ansible
Ansible är helt enkelt ett universellt språk som avslöjar mysteriet om hur arbetet går till. Det är med andra ord en IT-orkestreringsmotor som automatiserar driftsättningen av applikationer, konfigurationshantering och orkestrerar mer avancerade IT-uppgifter som att säkerställa noll rullande driftstopp och kontinuerliga driftsättningar.
Maskiner kan enkelt hanteras på ett agentlöst sätt med ett större fokus på säkerhet och tillförlitlighet genom att använda ett språk som är designat kring "hörbarhet" av människor.
Även om det kanske inte är så svårt att distribuera MongoDB, blir underhåll, säkerhetskopiering och övervakning ökade problem med tiden. Dessutom är det inte så lätt när du är ny på databashantering. Med Ansible kan utvecklare distribuera och konfigurera applikationer med lätthet, det möjliggör också snabb leverans till alla värdplattformar.
Eftersom Ansible inte är en del av databasklustersystemet kan det installeras på vilken fjärrdator som helst och en konfiguration göras till din databasvärd. Kontrollera installationsguiden för att veta vilken version som är lämplig för ditt operativsystem.
Ansible ansluter som standard till en databasvärd via ett SSH-protokoll.
Ansible Playbooks
Playbooks är mallar där Ansible-kod skrivs, vilket leder Ansible själv vad som ska utföras på ett sådant sätt att göra-lista. De är skrivna i YAML-format (Yet Another Markup Language). Var och en innehåller steg-för-steg-operationer som följs av användaren på en viss maskin som körs sekventiellt. Deras struktur består av en eller flera pjäser. En Play är i grunden ett kodblock som mappar en uppsättning instruktioner definierade mot en viss värd.
Vanligt använda YAML-taggar i Ansible
-
namn
Det här är taggen som definierar namnet på Ansible-spelboken. Det är tillrådligt att ställa in ett namn som exakt definierar vad den kommer att göra.
-
värdar
Detta definierar en värdgrupp eller lista över värdar mot vilka de definierade uppgifterna ska köras. Det är en obligatorisk tagg som talar om för Ansible på vilka värdar som ska köras de uppgifter som har listats. Eftersom uppgifter kan utföras på flera maskiner, antingen samma eller fjärranslutna maskiner, kan man definiera en grupp av värdposter i denna tagg.
-
vars
Som alla andra programmeringsspråk behöver du variabler. Med den här taggen kan du definiera variabler som du kommer att använda i din spelbok.
-
uppgifter
Den här taggen gör att du kan lista en uppsättning uppgifter som ska utföras. Uppgifter är faktiskt åtgärder man behöver utföra. Ett uppgiftsfält definierar namnet på uppgiften som i huvudsak hjälper texten för användaren under felsökning av spelboken. En kod som definieras som en modul länkas internt av varje uppgift och alla argument som ska användas inom modulen skickas via tasks-taggen.
En enkel lekboksstruktur ser ut ungefär så här...
---
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>
Skriv en enkel spelbok för att installera och starta MongoDB
-
Aktivera Root SSH Access
Vissa inställningar av hanterade noder kan avskräcka dig från att logga in som root-användare och behöver därför definiera en spelbok för att lösa detta. Vi kommer att skapa en spelbok enable-root-access.yml som kommer att se ut så här
--- - hosts: ansible-test remote_user: ubuntu tasks: - name: Enable root login shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/
När du kör kommandot
$ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml
Du borde se något liknande
PLAY [ansible-test] *********************************************************** GATHERING FACTS *************************************************************** TASK: [Enable root login] ***************************************************** PLAY RECAP ********************************************************************
-
Väljar värdar och användare i mongodbInstall.yaml
--- - hosts: ansible-test remote_user: root become: yes
-
Lägger till uppgifter som ska köras
Uppgifter utförs sekventiellt, så vi måste beskriva dem på ett sekventiellt sätt, dvs.
- apt_key för att lägga till förrådsnycklar. MongoDB public GPG Key måste importeras först
- name: Import the public key used by the package management system apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
- Lägga till MongoDB apt_repository
- name: Add MongoDB repository apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
- Installera paket och starta mongod, ladda sedan om den lokala paketdatabasen
- name: install mongodb apt: pkg=mongodb-org state=latest update_cache=yes notify: - start mongodb
- Hantera tjänster, använda hanterare för att starta och starta om tjänster
handlers: - name: start mongodb service: name=mongod state=started
- apt_key för att lägga till förrådsnycklar. MongoDB public GPG Key måste importeras först
Den allmänna spelbokskoden bör se ut så här
---
- 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
Vi kan sedan köra den här filen med ansible med kommandot
ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml
Om spelboken har körts framgångsrikt bör du se detta i din terminal
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
Om du nu kör mongo kommer du att dirigeras till mongo shell
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
Slutsats
Ansible är en enkel IT-motor med öppen källkod som automatiserar applikationsdistribution, tjänsteorkestrering och molntillhandahållande.
Det fungerar genom att ansluta databasnoder och trycka ut definierar instruktioner som kallas moduler till dem, exekverar dem genom SSH som standard och blir av med dem när de är klara. Den kör inga demoner eller servrar och kan därför köras från vilken fjärrdator som helst. I nästa handledning kommer vi att diskutera hur man underhåller en MongoDB-replikuppsättning i molnet med Ansible.