La tecnología cambia día a día y las aplicaciones modernas necesitan realizar ajustes serios para cumplir con las expectativas de entrega rápida de sus organizaciones. Desafortunadamente, esto los hace más complejos, más sofisticados y más difíciles de mantener.
En términos de administración de bases de datos, las estructuras de datos dentro de MongoDB cambian de acuerdo con las necesidades de la aplicación a lo largo del tiempo y podría ser bastante costoso (o más bien arriesgado).
A la larga, necesitamos tener una base de datos eficiente configurada fácilmente y garantizar una entrega de software competente. Lograr todo esto de forma manual conlleva una serie de contratiempos como
- Coordinación complicada entre los miembros del equipo.
- Altas posibilidades de repetición de tareas
- Susceptible a muchos errores y errores humanos
- Inquieto por superar la complejidad
- Reducción de la colaboración e insatisfacción laboral
- Lleva mucho tiempo
- Responsabilidad y cumplimiento deficientes
Las dificultades de la administración de bases de datos se centran principalmente en
- Implementación
- Mantenimiento
- Actualización que puede afectar los gastos generales operativos hasta un 95 % de reducción.
Lograr esto puede requerir mucho tiempo y esfuerzo manual para MongoDB. Para garantizar el éxito, deberá tener un sistema simple con el que pueda asegurarse de que todos los contratiempos enumerados anteriormente puedan abordarse desde una sola plataforma de manera oportuna, es decir, de alguna manera un sistema automatizado. Hay bastantes opciones, pero en este artículo vamos a discutir cómo utilizar Ansible.
Qué es Ansible
Ansible es simplemente un lenguaje universal que desvela el misterio de cómo se hace el trabajo. En otras palabras, es un motor de orquestación de TI que automatiza la implementación de aplicaciones, la administración de la configuración y organiza tareas de TI más avanzadas, como garantizar actualizaciones continuas y actualizaciones continuas sin tiempo de inactividad.
Las máquinas se pueden administrar fácilmente sin agentes con un mayor enfoque en la seguridad y la confiabilidad mediante el uso de un lenguaje diseñado en torno a la "auditabilidad" por parte de los humanos.
Si bien la implementación de MongoDB puede no ser tan difícil, el mantenimiento, la copia de seguridad y el monitoreo se convierten en factores de mayor preocupación a medida que pasa el tiempo. Además, no es tan fácil cuando eres nuevo en la gestión de bases de datos. Con Ansible, los desarrolladores pueden implementar y configurar aplicaciones con facilidad, también permite una entrega rápida a cualquier plataforma de alojamiento.
Como Ansible no forma parte del sistema de clúster de la base de datos, se puede instalar en cualquier computadora remota y realizar una configuración en el host de la base de datos. Consulte la guía de instalación para saber qué versión es adecuada para su sistema operativo.
Ansible, de forma predeterminada, se conecta a un host de base de datos a través de un protocolo SSH.
Guías de Ansible
Los libros de jugadas son plantillas en las que se escribe el código de Ansible, por lo tanto, dirige a Ansible en sí mismo qué ejecutar de una manera similar a la lista de tareas pendientes. Están escritos en formato YAML (Yet Another Markup Language). Cada uno contiene operaciones paso a paso que son seguidas por el usuario en una máquina en particular que se ejecutan secuencialmente. Su estructura está constituida por uno o más Juegos. Un Play es básicamente un bloque de código que mapea un conjunto de instrucciones definidas contra un host en particular.
Etiquetas YAML de uso común en Ansible
-
nombre
Esta es la etiqueta que define el nombre del libro de jugadas de Ansible. Es recomendable establecer un nombre que defina con precisión lo que estará haciendo.
-
anfitriones
Esto define un grupo de hosts o una lista de hosts en los que se ejecutarán las tareas definidas. Es una etiqueta obligatoria que le dice a Ansible en qué hosts ejecutar las tareas que se han enumerado. Dado que las tareas se pueden realizar en varias máquinas, ya sea en la misma máquina o en máquinas remotas, se puede definir una entrada de grupo de hosts en esta etiqueta.
-
vars
Como cualquier otro lenguaje de programación, necesitará variables. Con esta etiqueta, puede definir las variables que usará en su libro de jugadas.
-
tareas
Esta etiqueta le permitirá listar un conjunto de tareas a ejecutar. Las tareas son en realidad acciones que uno necesita realizar. Un campo de tarea define el nombre de la tarea que esencialmente ayuda al usuario con el texto durante la depuración del libro de jugadas. Cada tarea vincula internamente un fragmento de código definido como módulo y los argumentos que se utilizarán dentro del módulo se pasan a través de la etiqueta de tareas.
La estructura de un libro de jugadas simple se parece a esto...
---
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>
Escribiendo un libro de jugadas simple para instalar e iniciar MongoDB
-
Habilitación del acceso SSH raíz
Algunas configuraciones de nodos administrados pueden impedirle iniciar sesión como usuario raíz, por lo que debe definir un libro de jugadas para resolver esto. Crearemos un libro de jugadas enable-root-access.yml que se verá así
--- - hosts: ansible-test remote_user: ubuntu tasks: - name: Enable root login shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/
Cuando ejecutas el comando
$ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml
Deberías ver algo como
PLAY [ansible-test] *********************************************************** GATHERING FACTS *************************************************************** TASK: [Enable root login] ***************************************************** PLAY RECAP ********************************************************************
-
Seleccionar hosts y usuarios en mongodbInstall.yaml
--- - hosts: ansible-test remote_user: root become: yes
-
Agregar tareas a ejecutar
Las tareas se ejecutan secuencialmente, por lo que debemos delinearlas de manera secuencial, es decir,
- apt_key para agregar claves de repositorio. La clave GPG pública de MongoDB debe importarse primero
- name: Import the public key used by the package management system apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
- Añadir MongoDB apt_repository
- name: Add MongoDB repository apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
- Instalar paquetes e iniciar mongod, luego recargar la base de datos de paquetes local
- name: install mongodb apt: pkg=mongodb-org state=latest update_cache=yes notify: - start mongodb
- Administración de servicios, uso del controlador para iniciar y reiniciar servicios
handlers: - name: start mongodb service: name=mongod state=started
- apt_key para agregar claves de repositorio. La clave GPG pública de MongoDB debe importarse primero
El código general del libro de jugadas debería verse así
---
- 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
Luego podemos ejecutar este archivo con ansible usando el comando
ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml
Si el libro de jugadas se ejecutó con éxito, debería ver esto en su 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 ahora ejecuta mongo, será dirigido a 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
Conclusión
Ansible es un motor de TI simple de código abierto que automatiza la implementación de aplicaciones, la orquestación de servicios y la provisión de la nube.
Funciona conectando los nodos de la base de datos y extrayendo instrucciones definidas conocidas como módulos para ellos, las ejecuta a través de SSH de forma predeterminada y luego se deshace de ellas cuando termina. No ejecuta ningún demonio o servidor, por lo que se puede ejecutar desde cualquier máquina remota. En el siguiente tutorial, analizaremos cómo mantener un conjunto de réplicas de MongoDB en la nube mediante Ansible.