La technologie change de jour en jour et les applications modernes doivent procéder à de sérieux ajustements afin de répondre aux attentes de livraison rapide de leurs organisations. Malheureusement, cela les rend plus complexes, plus sophistiqués et plus difficiles à maintenir.
En termes de gestion de base de données, les structures de données à l'intérieur de MongoDB changent en fonction des besoins de l'application au fil du temps et cela peut être assez coûteux (ou plutôt risqué).
À long terme, nous devons disposer d'une base de données efficace configurée facilement et assurer une livraison de logiciels compétente. Réaliser tout cela de manière manuelle s'accompagne d'un certain nombre de revers tels que
- Coordination compliquée entre les membres de l'équipe
- Fortes chances de répétition des tâches
- Susceptible à beaucoup d'erreurs et d'erreurs humaines
- Pas facile de surmonter la complexité
- Réduction de la collaboration et de l'insatisfaction au travail
- Cela prend du temps
- Redevabilité et conformité médiocres
Les difficultés d'administration de la base de données sont principalement centrées sur
- Déploiement
- Maintenance
- Mise à niveau pouvant affecter les frais généraux opérationnels jusqu'à 95 % de réduction.
Atteindre cela peut prendre beaucoup de temps et d'efforts manuels pour MongoDB. Pour assurer le succès, vous aurez besoin d'un système simple avec lequel vous pouvez vous assurer que tous les revers énumérés ci-dessus peuvent être résolus à partir d'une seule plate-forme en temps opportun, c'est-à-dire, en quelque sorte, un système automatisé. Il existe un certain nombre d'options, mais dans cet article, nous allons discuter de l'utilisation d'Ansible.
Qu'est-ce qu'Ansible
Ansible est simplement un langage universel qui dévoile le mystère de la façon dont le travail est effectué. En d'autres termes, il s'agit d'un moteur d'orchestration informatique qui automatise le déploiement des applications, la gestion de la configuration et orchestre des tâches informatiques plus avancées telles que la garantie de mises à jour continues sans interruption et de déploiements continus.
Les machines peuvent facilement être gérées sans agent en mettant davantage l'accent sur la sécurité et la fiabilité grâce à l'utilisation d'un langage conçu autour de la "vérification" par les humains.
Bien que le déploiement de MongoDB ne soit pas si difficile, la maintenance, la sauvegarde et la surveillance deviennent des facteurs de préoccupation accrus au fil du temps. De plus, ce n'est pas si facile lorsque vous débutez dans la gestion de bases de données. Avec Ansible, les développeurs peuvent facilement déployer et configurer des applications, cela permet également une livraison rapide sur n'importe quelle plate-forme d'hébergement.
Comme Ansible ne fait pas partie du système de cluster de base de données, il peut être installé sur n'importe quel ordinateur distant et une configuration effectuée sur votre hôte de base de données. Veuillez consulter le guide d'installation pour savoir quelle version convient à votre système d'exploitation.
Ansible, par défaut, se connecte à un hôte de base de données via un protocole SSH.
Livres de lecture Ansible
Les playbooks sont des modèles dans lesquels le code Ansible est écrit, ce qui explique à Ansible ce qu'il doit exécuter d'une manière similaire à une liste de tâches. Ils sont écrits au format YAML (Yet Another Markup Language). Chacun contient des opérations pas à pas qui sont suivies par l'utilisateur sur une machine particulière qui s'exécutent de manière séquentielle. Leur structure est constituée d'un ou plusieurs Jeux. Un jeu est essentiellement un bloc de code qui mappe un ensemble d'instructions définies sur un hôte particulier.
Balises YAML couramment utilisées dans Ansible
-
nom
Il s'agit de la balise qui définit le nom du playbook Ansible. Il est conseillé de définir un nom qui définit précisément ce qu'il va faire.
-
hôtes
Cela définit un groupe d'hôtes ou une liste d'hôtes sur lesquels les tâches définies doivent être exécutées. Il s'agit d'une balise obligatoire qui indique à Ansible sur quels hôtes exécuter les tâches répertoriées. Étant donné que les tâches peuvent être effectuées sur plusieurs machines, qu'elles soient identiques ou distantes, vous pouvez définir un groupe d'entrées d'hôtes dans cette balise.
-
vars
Comme tout autre langage de programmation, vous aurez besoin de variables. Avec cette balise, vous pouvez définir les variables que vous utiliserez dans votre playbook.
-
tâches
Cette balise va vous permettre de lister un ensemble de tâches à exécuter. Les tâches sont en fait des actions que l'on doit effectuer. Un champ de tâche définit le nom de la tâche qui aide essentiellement le texte pour l'utilisateur lors du débogage du playbook. Un morceau de code défini comme un module est lié en interne par chaque tâche et tous les arguments qui doivent être utilisés dans le module sont passés par la balise des tâches.
Une structure de playbook simple ressemble à ceci...
---
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>
Écrire un manuel simple pour installer et démarrer MongoDB
-
Activation de l'accès SSH racine
Certaines configurations de nœuds gérés peuvent vous dissuader de vous connecter en tant qu'utilisateur root, vous devez donc définir un playbook pour résoudre ce problème. Nous allons créer un playbook enable-root-access.yml qui ressemblera à ceci
--- - hosts: ansible-test remote_user: ubuntu tasks: - name: Enable root login shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/
Lorsque vous exécutez la commande
$ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml
Vous devriez voir quelque chose comme
PLAY [ansible-test] *********************************************************** GATHERING FACTS *************************************************************** TASK: [Enable root login] ***************************************************** PLAY RECAP ********************************************************************
-
Sélection des hôtes et des utilisateurs dans mongodbInstall.yaml
--- - hosts: ansible-test remote_user: root become: yes
-
Ajout de tâches à exécuter
Les tâches sont exécutées de manière séquentielle, nous devons donc les décrire de manière séquentielle, c'est-à-dire
- apt_key pour ajouter des clés de référentiel. La clé GPG publique MongoDB doit être importée en premier
- name: Import the public key used by the package management system apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
- Ajout de MongoDB apt_repository
- name: Add MongoDB repository apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
- Installer les packages et démarrer mongod, puis recharger la base de données locale des packages
- name: install mongodb apt: pkg=mongodb-org state=latest update_cache=yes notify: - start mongodb
- Gestion des services, utilisation du gestionnaire pour démarrer et redémarrer les services
handlers: - name: start mongodb service: name=mongod state=started
- apt_key pour ajouter des clés de référentiel. La clé GPG publique MongoDB doit être importée en premier
Le code général du playbook devrait ressembler à ceci
---
- 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
Nous pouvons ensuite exécuter ce fichier avec ansible en utilisant la commande
ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml
Si le playbook a été exécuté avec succès, vous devriez le voir dans votre 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
Si maintenant vous exécutez mongo, vous serez dirigé vers 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
Conclusion
Ansible est un moteur informatique open source simple qui automatise le déploiement des applications, l'orchestration des services et la fourniture du cloud.
Il fonctionne en connectant des nœuds de base de données et en leur envoyant des instructions définies appelées modules, en les exécutant via SSH par défaut, puis en les supprimant une fois terminé. Il n'exécute aucun démon ou serveur et peut donc être exécuté à partir de n'importe quelle machine distante. Dans le prochain didacticiel, nous allons discuter de la façon de maintenir un ensemble de réplicas MongoDB dans le cloud à l'aide d'Ansible.