sql >> Base de Datos >  >> NoSQL >> MongoDB

Implementación y mantenimiento de MongoDB usando Ansible

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

  1. Coordinación complicada entre los miembros del equipo.
  2. Altas posibilidades de repetición de tareas
  3. Susceptible a muchos errores y errores humanos
  4. Inquieto por superar la complejidad
  5. Reducción de la colaboración e insatisfacción laboral
  6. Lleva mucho tiempo
  7. 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

  1. 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.

  2. 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.

  3. vars

    Como cualquier otro lenguaje de programación, necesitará variables. Con esta etiqueta, puede definir las variables que usará en su libro de jugadas.

  4. 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

  1. 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 ********************************************************************
  2. Seleccionar hosts y usuarios en mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Agregar tareas a ejecutar

    Las tareas se ejecutan secuencialmente, por lo que debemos delinearlas de manera secuencial, es decir,

    1. 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
    2. 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
    3. 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
    4. Administración de servicios, uso del controlador para iniciar y reiniciar servicios
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Varios nueves Conviértase en un administrador de bases de datos de MongoDB - Llevando MongoDB a la producción Obtenga información sobre lo que necesita saber para implementar, monitorear, administrar y escalar MongoDBDescargar gratis

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.