Technologie verandert van dag tot dag en moderne applicaties moeten serieuze aanpassingen ondergaan om te voldoen aan de snelle leveringsverwachtingen van hun organisaties. Helaas maakt dit ze complexer, geavanceerder en moeilijker te onderhouden.
Wat databasebeheer betreft, veranderen de gegevensstructuren binnen MongoDB in de loop van de tijd in overeenstemming met de toepassingsbehoeften en dit kan behoorlijk duur (of eerder riskant) zijn.
Op de lange termijn moeten we een efficiënte database hebben die eenvoudig kan worden geconfigureerd en een competente softwarelevering garanderen. Om al deze op een handmatige manier te bereiken, brengt een aantal tegenslagen met zich mee, zoals
- Gecompliceerde coördinatie tussen teamleden.
- Hoge kansen op taakherhaling
- Veel vatbaar voor veel menselijke fouten en fouten
- Ongemakkelijk om complexiteit te overwinnen
- Verminderde samenwerking en werkontevredenheid
- Tijdrovend
- Slechte verantwoording en naleving
De moeilijkheden van databasebeheer zijn voornamelijk gericht op
- Implementeren
- Onderhoud
- Upgraden die de operationele overhead kan beïnvloeden tot 95% reductie.
Om dit te bereiken kan MongoDB veel tijd en handmatige inspanning vergen. Om succes te garanderen, moet u een eenvoudig systeem hebben waarmee u ervoor kunt zorgen dat alle bovengenoemde tegenslagen tijdig kunnen worden aangepakt vanaf één enkel platform, dat wil zeggen op de een of andere manier een geautomatiseerd systeem. Er zijn nogal wat opties, maar in dit artikel gaan we bespreken hoe je Ansible kunt gebruiken.
Wat is Ansible
Ansible is gewoon een universele taal die het mysterie van hoe werk wordt gedaan ontrafelt. Met andere woorden, het is een IT-orkestratie-engine die de implementatie van applicaties, configuratiebeheer automatiseert en meer geavanceerde IT-taken orkestreert, zoals het garanderen van zero downtime rolling updates en continue implementaties.
Machines kunnen eenvoudig worden beheerd op een agentloze manier met een grotere focus op beveiliging en betrouwbaarheid door het gebruik van een taal die is ontworpen rond "auditability" door mensen.
Hoewel het implementeren van MongoDB misschien niet zo moeilijk is, worden onderhoud, back-up en monitoring in de loop van de tijd steeds belangrijker. Bovendien is het niet zo eenvoudig als databasebeheer nieuw voor u is. Met Ansible kunnen ontwikkelaars applicaties eenvoudig implementeren en configureren, en het zorgt ook voor snelle levering aan elk hostingplatform.
Omdat Ansible geen deel uitmaakt van het databaseclustersysteem, kan het op elke externe computer worden geïnstalleerd en kan er een configuratie worden gemaakt op uw databasehost. Raadpleeg de installatiehandleiding om te weten welke versie geschikt is voor uw besturingssysteem.
Ansible maakt standaard verbinding met een databasehost via een SSH-protocol.
Ansible Playbooks
Playbooks zijn sjablonen waarin Ansible-code wordt geschreven, dus geef Ansible zelf aan wat het op een dergelijke to-do-lijst-manier moet uitvoeren. Ze zijn geschreven in YAML-indeling (Yet Another Markup Language). Elk bevat stapsgewijze bewerkingen die door de gebruiker worden gevolgd op een bepaalde machine die opeenvolgend worden uitgevoerd. Hun structuur bestaat uit een of meer toneelstukken. Een Play is in feite een codeblok dat een reeks instructies toewijst die zijn gedefinieerd voor een bepaalde host.
Veelgebruikte YAML-tags in Ansible
-
naam
Dit is de tag die de naam van het Ansible-playbook definieert. Het is raadzaam om een naam in te stellen die precies definieert wat het gaat doen.
-
hosts
Dit definieert een hostgroep of lijst van hosts waartegen de gedefinieerde taken moeten worden uitgevoerd. Het is een verplichte tag die Ansible vertelt op welke hosts de vermelde taken moeten worden uitgevoerd. Aangezien taken op meerdere machines kunnen worden uitgevoerd, op dezelfde of op externe machines, kan een groep hosts in deze tag worden gedefinieerd.
-
vars
Net als elke andere programmeertaal heb je variabelen nodig. Met deze tag kun je variabelen definiëren die je in je playbook gaat gebruiken.
-
taken
Met deze tag kunt u een reeks taken weergeven die moeten worden uitgevoerd. Taken zijn eigenlijk acties die men moet uitvoeren. Een taakveld definieert de naam van de taak die in wezen tekst voor de gebruiker helpt tijdens het opsporen van fouten in het playbook. Een stuk code dat als module is gedefinieerd, wordt intern door elke taak gekoppeld en alle argumenten die binnen de module moeten worden gebruikt, worden door de taaktag doorgegeven.
Een eenvoudige playbook-structuur ziet er ongeveer zo uit...
---
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>
Een eenvoudig draaiboek schrijven om MongoDB te installeren en te starten
-
Root SSH-toegang inschakelen
Sommige instellingen van beheerde knooppunten kunnen u ervan weerhouden in te loggen als rootgebruiker en daarom moet u een playbook definiëren om dit op te lossen. We zullen een playbook enable-root-access.yml maken die er als volgt uit zal zien
--- - hosts: ansible-test remote_user: ubuntu tasks: - name: Enable root login shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/
Wanneer u de opdracht uitvoert
$ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml
Je zou zoiets moeten zien als
PLAY [ansible-test] *********************************************************** GATHERING FACTS *************************************************************** TASK: [Enable root login] ***************************************************** PLAY RECAP ********************************************************************
-
Hosts en gebruikers selecteren in mongodbInstall.yaml
--- - hosts: ansible-test remote_user: root become: yes
-
Uit te voeren taken toevoegen
Taken worden opeenvolgend uitgevoerd, dus we moeten ze op een sequentiële manier schetsen, d.w.z.
- apt_key om repositorysleutels toe te voegen. MongoDB openbare GPG-sleutel moet eerst worden geïmporteerd
- name: Import the public key used by the package management system apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
- MongoDB apt_repository toevoegen
- name: Add MongoDB repository apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
- Pakketten installeren en mongod starten, dan de lokale pakketdatabase opnieuw laden
- name: install mongodb apt: pkg=mongodb-org state=latest update_cache=yes notify: - start mongodb
- Services beheren, handler gebruiken om services te starten en opnieuw te starten
handlers: - name: start mongodb service: name=mongod state=started
- apt_key om repositorysleutels toe te voegen. MongoDB openbare GPG-sleutel moet eerst worden geïmporteerd
De algemene playbook-code zou er zo uit moeten zien
---
- 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
We kunnen dit bestand dan uitvoeren met ansible met behulp van het commando
ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml
Als het playbook succesvol is uitgevoerd, zou je dit in je terminal moeten zien
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
Als je nu mongo uitvoert, word je doorverwezen naar 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
Conclusie
Ansible is een eenvoudige open source IT-engine die applicatie-implementatie, service-orkestratie en cloudvoorziening automatiseert.
Het werkt door databaseknooppunten met elkaar te verbinden en definieert instructies die bekend staan als modules naar hen te pushen, voert ze standaard uit via SSH en verwijdert ze wanneer ze klaar zijn. Het voert geen daemons of servers uit en kan daarom vanaf elke externe machine worden uitgevoerd. In de volgende tutorial gaan we bespreken hoe je een MongoDB-replicaset in de cloud kunt onderhouden met Ansible.