UnderGreen.mongodb
Rol de Ansible para MongoDB
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!
Instalar
ansible-galaxy install UnderGreen.mongodb
Licencia
gpl-2.0
Descargas
299.6k
Propietario