stone-payments.mongodb

stone-payments.mongodb

Estado de la construcción

Rol para Ansible que gestiona MongoDB en una configuración independiente o en un conjunto de réplicas.

Sistemas soportados

Para conservar esfuerzos en el desarrollo, decidimos que una distribución soportada debe:

  • estar actualmente soportada por el creador de la distribución (es decir, no estar en EOL);
  • estar actualmente soportada por MongoDB.org (este requisito probablemente se eliminará pronto);
  • estar basada en systemd;
  • tener una base de usuarios suficientemente amplia.

Por lo tanto, la lista actual de sistemas soportados es:

  • Linux empresarial (tanto CentOS como RHEL)
    • 7.3
    • 7.4
    • 7.5
  • Ubuntu
    • 16.04

Se pueden agregar otras distribuciones a pedido, siempre que se cumplan los requisitos.

Uso

Comienzo rápido

No se necesita ninguna variable para configurar una instalación básica de MongoDB sin contraseña y solo para bucle invertido. Simplemente inclúyelo en un play:

- name: instalar mongodb
  hosts: all
  roles: stone-payments.mongodb

Configuración de conjunto de réplicas

Para construir un conjunto de réplicas, necesitas informar al maestro que es un maestro, y a una réplica a la que el maestro debe conectarse. Puedes hacer todo esto con el siguiente fragmento:

- name: instalar conjunto de réplicas mongodb
  host: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_bindIp: "0.0.0.0"
    mongodb_replSet_enabled: true
    mongodb_replSet_name: "nombreDelConjuntoDeRéplicas"
    mongodb_replSet_master: "1.2.3.4" #debe ser una dirección IP
    mongodb_replSet_key: "unaClaveLarga" #opcional, clave de autenticación entre réplicas
    mongodb_replSet_member: "{{ ansible_eth1['ipv4']['address'] }}" #opcional, especifica una IF diferente para replicación
    mongodb_replSet_arbiter: "{{ true if inventory_hostname == 'hostQueEsArbitro' else false }}"

Autenticación

Puedes habilitar la autenticación y crear una cuenta de administrador de la siguiente manera:

- name: instalar mongodb con autenticación
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_auth: true
    mongodb_admin_user: "admin"
    mongodb_admin_password: "algunaContraseña"

Registro

Puedes establecer cualquier opción de systemLog proporcionando un diccionario mongodb_conf_logging:

- name: instalar mongodb con registro de depuración de red
  host: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_logging:
      verbosity: 0
      component:
        network:
          verbosity: 5
      destination: file
      path: /var/log/mongodb/mongod.log

Firewall

Esta regla configurará ya sea ufw o firewalld para habilitar conexiones entrantes por defecto. Puedes personalizar esto con las siguientes opciones (que son específicas de la solución de firewall que estés utilizando):

- name: instalar mongodb con configuraciones de firewall personalizadas
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_firewall_zone: "public" #solo firewalld
    mongodb_firewall_interface: "eth0" #solo ufw
    mongodb_firewall_source: "192.168.0.0/24" #solo ufw

También puedes suprimir la configuración del firewall estableciendo mongodb_install_firewall: false.

Módulos de Seguridad de Linux

Este rol configurará los LSM de forma predeterminada (actualmente solo se admite SELinux). Puedes deshabilitar esto estableciendo: mongodb_install_lsm: false.

Otras configuraciones

Creo que casi todas las demás configuraciones son autoexplicativas o están directamente relacionadas con una característica central de MongoDB. Simplemente anula las configuraciones en defaults/main.yml y se aplicarán (con suerte) a tu sistema.

Pruebas

Este rol implementa la mayoría de las pruebas unitarias con Molecule en Docker. Ten en cuenta que solo admitimos Molecule 2.0 o superior. Algunas pruebas se implementan en Vagrant con VirtualBox para poder probar aspectos que requieren una VM completa. Sin embargo, para las pruebas que requieren Vagrant, no hay integración de CI ya que no hay una CI pública que admita virtualización anidada.

Los siguientes escenarios están presentes:

Nombre del escenario Controlador Descripción
default docker Pruebas básicas de funcionalidad del rol en una instalación individual
replica-set docker Instalación mixta en un conjunto de réplicas
security vagrant VM completa para probar la configuración de LSM y firewall

Configuración del entorno de Docker

Puedes instalar Molecule y la biblioteca de interacción de Docker dentro de un entorno virtual con los siguientes comandos. Ten en cuenta que necesitamos docker-py tanto dentro como fuera del virtualenv.

sudo pip install docker-py
virtualenv .venv
.venv/bin/activate
pip install molecule docker-py

La instalación y configuración de Docker está fuera de alcance.

Si tienes un host con SELinux habilitado, también debes tener instalada la biblioteca libselinux-python. Hay una adición especial en el playbook de Molecule al delegar tareas a localhost para usar el intérprete de python del host en lugar del python del virtualenv para acceder correctamente a los enlaces de SELinux. Puedes instalar este paquete tanto en Fedora como en CentOS con:

sudo yum install python2-libselinux

Configuración del entorno de Vagrant

Puedes instalar Molecule dentro de un entorno virtual con los siguientes comandos:

virtualenv .venv
.venv/bin/activate
pip install molecule

La instalación y configuración de Vagrant y VirtualBox está fuera de alcance.

Ejecutando la prueba

Después de haber configurado Molecule dentro del virtualenv, puedes ejecutar las pruebas con:

molecule converge [-s nombre_del_escenario]

Donde nombre_del_escenario es el nombre de un caso de prueba bajo molecule. El caso de prueba predeterminado se ejecuta si no se pasa ningún parámetro.

Contribuir

Solo abre un PR. ¡Nos encantan los PRs!

Lista de tareas

Aquí hay algunas sugerencias sobre qué hacer:

  • Soportar el uso de MongoDB empaquetado por la distribución.
  • Escribir más pruebas independientes con serverspec o testinfra.
  • Mejorar el caso de prueba para el conjunto de réplicas.

Licencia

Este rol se distribuye bajo la licencia MIT.

Acerca del proyecto

Role for installing MongoDB with clustering support

Instalar
ansible-galaxy install stone-payments.mongodb
Licencia
mit
Descargas
405
Propietario
Pensar fora da máquina só é possível quando se trabalha com tecnologia humana de ponta.