UnderGreen.mongodb

Rol de Ansible para MongoDB

Centos Debian Ubuntu Amazon Linux 2

Rol de Ansible para instalar y gestionar MongoDB.

  • Instalar y configurar MongoDB
  • Configurar usuarios de MongoDB
  • Configurar autenticación
  • Configurar replicación
  • Configurar el agente de automatización MMS

Matriz de soporte de MongoDB:

Distribución < MongoDB 3.4 MongoDB 3.6 MongoDB 4.0 MongoDB 4.2 MongoDB 4.4
Ubuntu 16.04 :no_entry: :white_check_mark: :white_check_mark: :white_check_mark: :x:
Ubuntu 18.04 :no_entry: :white_check_mark: :white_check_mark: :white_check_mark: :x:
Ubuntu 20.04 :no_entry: :x: :x: :x: :white_check_mark:
Debian 9.x :no_entry: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Debian 10.x :no_entry: :x: :x: :white_check_mark: :white_check_mark:
RHEL 7.x :no_entry: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
RHEL 8.x :no_entry: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Amazon Linux 2 :no_entry: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
  • :white_check_mark: - completamente probado
  • :x: - no tiene soporte oficial
  • :no_entry: - MongoDB ha llegado al final de su vida útil (EOL)

Variables

# Esta variable se usa para configurar la fuente de instalación de MongoDB.
# 'mongodb' - versión proporcionada por distribuciones basadas en Debian desde sus repositorios oficiales.
# 'mongodb-org' - versión proporcionada por el repositorio de paquetes de MongoDB.
# 'mongodb' no está incluido en la matriz de pruebas del rol y su funcionamiento no está garantizado.
mongodb_package: mongodb-org

# La variable `mongodb_version` establece la versión de MongoDB.
# Debe ser '3.6', '4.0', '4.2' o '4.4'. Este rol no soporta MongoDB < 3.6.
# Se recomienda usar la última versión de MongoDB.
mongodb_version: "4.4"

mongodb_pymongo_from_pip: true # Instalar la última versión de PyMongo a través de PIP o del gestor de paquetes
mongodb_pymongo_pip_version: 3.6.1 # Elegir versión de PyMongo a instalar desde pip. Si no se establece, usar la última
mongodb_user_update_password: "on_create" # Política de actualización de contraseña de usuario de MongoDB
mongodb_manage_service: true
mongodb_manage_systemd_unit: true

# Deshabilitar transparent hugepages en instalaciones basadas en systemd debian
mongodb_disable_transparent_hugepages: false

# Puede habilitar o deshabilitar el soporte NUMA
mongodb_use_numa: true

mongodb_user: "{{ 'mongod' if ('RedHat' == ansible_os_family) else 'mongodb' }}"
mongodb_uid:
mongodb_gid:
mongodb_daemon_name: "{{ 'mongod' if ('mongodb-org' in mongodb_package) else 'mongodb' }}"
## Opciones de red
mongodb_net_bindip: 127.0.0.1 # Lista separada por comas de direcciones IP para escuchar
mongodb_net_http_enabled: false # Habilitar interfaz http
mongodb_net_ipv6: false # Habilitar soporte IPv6 (deshabilitado por defecto)
mongodb_net_maxconns: 65536 # Número máximo de conexiones simultáneas
mongodb_net_port: 27017 # Especificar número de puerto

## Opciones de gestión de procesos
mongodb_processmanagement_fork: false # Fork del proceso del servidor

## Opciones de seguridad
# Deshabilitar o habilitar la seguridad. Valores posibles: 'disabled', 'enabled'
mongodb_security_authorization: "disabled"
mongodb_security_keyfile: /etc/mongodb-keyfile # Especificar ruta al keyfile con contraseña para autenticación entre procesos

## Opciones de almacenamiento
mongodb_storage_dbpath: /data/db # Directorio para archivos de datos
mongodb_storage_dirperdb: false # Usar un directorio por DB

# El motor de almacenamiento para la base de datos mongod
mongodb_storage_engine: "wiredTiger"
# Opciones específicas de mmapv1
mongodb_storage_quota_enforced: false # Limita cada base de datos a un cierto número de archivos
mongodb_storage_quota_maxfiles: 8 # Número de archivos de cuota por DB
mongodb_storage_smallfiles: false # Muy útil para nodos que no manejan datos

mongodb_storage_journal_enabled: true # Habilitar journaling
mongodb_storage_prealloc: true # Deshabilitar la preasignación del archivo de datos

# Opciones de WiredTiger
mongodb_wiredtiger_cache_size: 1 # Tamaño de caché para wiredTiger en GB

## Opciones de registro del sistema
## El destino al que MongoDB envía toda la salida de registro. Especificar 'file' o 'syslog'.
## Si especifica 'file', también debe especificar mongodb_systemlog_path.
mongodb_systemlog_destination: "file"
mongodb_systemlog_logappend: true # Añadir al log en lugar de sobrescribir
mongodb_systemlog_path: /var/log/mongodb/{{ mongodb_daemon_name }}.log # Archivo de log al que enviar registros en lugar de stdout

## Opciones de replicación
mongodb_replication_replset: # Habilitar replicación <setname>[/<optionalseedhostlist>]
mongodb_replication_replindexprefetch: "all" # Especificar el comportamiento de precarga de índice (si es secundario) [none|_id_only|all]
mongodb_replication_oplogsize: 1024 # Especifica un tamaño máximo en megabytes para el registro de operaciones de replicación

## Opciones de setParameter
# Configurar opción setParameter.
# Ejemplo :
mongodb_set_parameters:
  {
    "enableLocalhostAuthBypass": "true",
    "authenticationMechanisms": "SCRAM-SHA-1,MONGODB-CR",
  }

## Extender configuración con valores arbitrarios
# Ejemplo :
mongodb_config:
  replication:
    - "enableMajorityReadConcern: false"

# Agente MMS
mongodb_mms_agent_pkg: https://cloud.mongodb.com/download/agent/monitoring/mongodb-mms-monitoring-agent_7.2.0.488-1_amd64.ubuntu1604.deb
mongodb_mms_group_id: ""
mongodb_mms_api_key: ""
mongodb_mms_base_url: https://mms.mongodb.com

# Rotación de logs
mongodb_logrotate: true # Rotar logs de mongodb.
mongodb_logrotate_options:
  - compress
  - copytruncate
  - daily
  - dateext
  - rotate 7
  - size 10M

# Contraseña para autenticación entre procesos
# por favor, regenere este archivo en el entorno de producción con el comando 'openssl rand -base64 741'
mongodb_keyfile_content: |
  8pYcxvCqoe89kcp33KuTtKVf5MoHGEFjTnudrq5BosvWRoIxLowmdjrmUpVfAivh
  CHjqM6w0zVBytAxH1lW+7teMYe6eDn2S/O/1YlRRiW57bWU3zjliW3VdguJar5i9
  Z+1a8lI+0S9pWynbv9+Ao0aXFjSJYVxAm/w7DJbVRGcPhsPmExiSBDw8szfQ8PAU
  2hwRl7nqPZZMMR+uQThg/zV9rOzHJmkqZtsO4UJSilG9euLCYrzW2hdoPuCrEDhu
  Vsi5+nwAgYR9dP2oWkmGN1dwRe0ixSIM2UzFgpaXZaMOG6VztmFrlVXh8oFDRGM0
  cGrFHcnGF7oUGfWnI2Cekngk64dHA2qD7WxXPbQ/svn9EfTY5aPw5lXzKA87Ds8p
  KHVFUYvmA6wVsxb/riGLwc+XZlb6M9gqHn1XSpsnYRjF6UzfRcRR2WyCxLZELaqu
  iKxLKB5FYqMBH7Sqg3qBCtE53vZ7T1nefq5RFzmykviYP63Uhu/A2EQatrMnaFPl
  TTG5CaPjob45CBSyMrheYRWKqxdWN93BTgiTW7p0U6RB0/OCUbsVX6IG3I9N8Uqt
  l8Kc+7aOmtUqFkwo8w30prIOjStMrokxNsuK9KTUiPu2cj7gwYQ574vV3hQvQPAr
  hhb9ohKr0zoPQt31iTj0FDkJzPepeuzqeq8F51HB56RZKpXdRTfY8G6OaOT68cV5
  vP1O6T/okFKrl41FQ3CyYN5eRHyRTK99zTytrjoP2EbtIZ18z+bg/angRHYNzbgk
  lc3jpiGzs1ZWHD0nxOmHCMhU4usEcFbV6FlOxzlwrsEhHkeiununlCsNHatiDgzp
  ZWLnP/mXKV992/Jhu0Z577DHlh+3JIYx0PceB9yzACJ8MNARHF7QpBkhtuGMGZpF
  T+c73exupZFxItXs1Bnhe3djgE3MKKyYvxNUIbcTJoe7nhVMrwO/7lBSpVLvC4p3
  wR700U0LDaGGQpslGtiE56SemgoP

# Nombres y contraseñas para usuarios administrativos
mongodb_user_admin_name: siteUserAdmin
mongodb_user_admin_password: passw0rd

mongodb_root_admin_name: siteRootAdmin
mongodb_root_admin_password: passw0rd

mongodb_root_backup_name: backupuser
mongodb_root_backup_password: passw0rd

Uso

Agrega undergreen.mongodb a tus roles y establece las variables en tu archivo de playbook.

Ejemplo de variables para autorización:

mongodb_security_authorization: "enabled"
mongodb_users:
  - {
    name: testUser,
    password: passw0rd,
    roles: readWrite,
    database: app_development
}

Ejemplo de variables para usuario de oplog:

mongodb_oplog_users:
  - {
    user: oplog,
    password: passw0rd
}

Variables requeridas que deben cambiarse en producción:

mongodb_user_admin_password
mongodb_root_admin_password
mongodb_root_backup_password

# si usas replicación y autorización
mongodb_security_keyfile

Ejemplo de variables para replicación:

# Es un nodo 'master'
mongodb_login_host: 192.168.56.2

# mongodb_replication_params debe configurarse en cada nodo del conjunto de réplicas
mongodb_replication_params:
  - {
      host_name: 192.168.56.2,
      host_port: "{{ mongodb_net_port }}",
      host_type: replica,
    }
  # host_type puede ser replica (por defecto) y arbiter

Y archivo de inventario para el conjunto de réplicas:

[mongo_master]
192.158.56.2 mongodb_master=True # No es realmente el master del conjunto de réplicas de MongoDB,
                                 # usa esta variable solo para la inicialización del conjunto de réplicas
                                 # o cuando el master se mueve desde el nodo master inicial

[mongo_replicas]
192.168.56.3
192.168.56.4

[mongo:children]
mongo_master
mongo_replicas

Licenciado bajo la Licencia GPLv2. Consulta el archivo LICENSE.md para más detalles.

Comentarios, informes de errores, solicitudes, ...

¡Son bienvenidos!

Acerca del proyecto

Manage MongoDB with authentication and replica sets

Instalar
ansible-galaxy install UnderGreen.mongodb
Licencia
gpl-2.0
Descargas
299.6k
Propietario