stone-payments.mongodb

stone-payments.mongodb

État de la construction

Rôle pour Ansible qui gère MongoDB dans une configuration autonome ou en réplica.

Systèmes pris en charge

Pour préserver les efforts de développement, nous avons décidé qu'une distribution prise en charge devait :

  • être actuellement supportée par le créateur de la distribution (c'est-à-dire ne pas être en fin de vie) ;
  • être actuellement supportée par MongoDB.org (cette exigence sera probablement abandonnée bientôt) ;
  • être basée sur systemd ;
  • avoir un nombre suffisant d'utilisateurs.

Ainsi, la liste des systèmes supportés est actuellement :

  • Enterprise Linux (CentOS et RHEL)
    • 7.3
    • 7.4
    • 7.5
  • Ubuntu
    • 16.04

D'autres distributions peuvent être ajoutées sur demande, tant que les exigences sont respectées.

Utilisation

Démarrage rapide

Aucune variable n'est nécessaire pour configurer une installation de MongoDB de base, sans mot de passe et uniquement en boucle locale. Il suffit de l'inclure dans un play :

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

Configuration du réplica

Pour créer un réplica, vous devez informer le maître qu'il est un maître et un réplica sur lequel le maître se connecter. Vous pouvez faire tout cela avec l'extrait suivant :

- name: installer le réplica mongodb
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_bindIp: "0.0.0.0"
    mongodb_replSet_enabled: true
    mongodb_replSet_name: "someReplicaSetName"
    mongodb_replSet_master: "1.2.3.4" #doit être une adresse IP
    mongodb_replSet_key: "someLongKey" #optionnel, clé d'authentification inter-réplica
    mongodb_replSet_member: "{{ ansible_eth1['ipv4']['address'] }}" #optionnel, spécifie une autre interface pour la réplication
    mongodb_replSet_arbiter: "{{ true if inventory_hostname == 'hostThatIsArbiter' else false }}"

Authentification

Vous pouvez activer l'authentification et créer un compte admin de la manière suivante :

- name: installer mongodb avec authentification
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_auth: true
    mongodb_admin_user: "admin"
    mongodb_admin_password: "somePassword"

Journalisation

Vous pouvez définir n'importe quelle option systemLog en fournissant le dictionnaire mongodb_conf_logging :

- name: installer mongodb avec journalisation des débogages réseau
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_logging:
      verbosity: 0
      component:
        network:
          verbosity: 5
      destination: file
      path: /var/log/mongodb/mongod.log

Pare-feu

Cette règle va configurer soit ufw soit firewalld pour activer les connexions entrantes par défaut. Vous pouvez personnaliser cela avec les options suivantes (qui sont spécifiques à la solution de pare-feu que vous utilisez) :

- name: installer mongodb avec paramètres de pare-feu personnalisés
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_firewall_zone: "public" #uniquement pour firewalld
    mongodb_firewall_interface: "eth0" #uniquement pour ufw
    mongodb_firewall_source: "192.168.0.0/24" #uniquement pour ufw

Vous pouvez également éviter la configuration du pare-feu en définissant mongodb_install_firewall: false.

Modules de sécurité Linux

Ce rôle configurera les modules de sécurité Linux (LSM) par défaut (actuellement, seul SELinux est supporté). Vous pouvez désactiver ceci en définissant : mongodb_install_lsm: false.

Autres configurations

Je pense que presque toutes les autres configurations sont explicites ou directement liées à une fonctionnalité principale de MongoDB. Il suffit de remplacer les configurations dans defaults/main.yml et elles seront (espérons-le) appliquées à votre système.

Tests

Ce rôle implémente la plupart des tests unitaires avec Molecule sur Docker. Notez que nous ne supportons que Molecule 2.0 ou supérieur. Certains tests sont mis en œuvre sur Vagrant avec VirtualBox afin que nous puissions tester des aspects nécessitant une machine virtuelle complète. Cependant, pour les tests nécessitant Vagrant, il n'y a pas d'intégration CI car il n'existe pas de CI public qui supporte la virtualisation imbriquée.

Les scénarios suivants sont présents :

Nom du scénario Pilote Description
default docker Tests de santé de rôle de base dans une configuration individuelle
replica-set docker Configuration mixte dans un ensemble de réplicas
security vagrant Machine virtuelle complète pour tester la configuration des LSM et du pare-feu

Configuration de l'environnement Docker

Vous pouvez installer Molecule et la bibliothèque d'interaction Docker dans un environnement virtuel avec les commandes suivantes. Notez que nous avons besoin de docker-py à la fois à l'intérieur et à l'extérieur de l'environnement virtuel.

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

L'installation et la configuration de Docker ne sont pas prises en charge.

Si vous avez un hôte avec SELinux activé, vous devez également avoir la bibliothèque libselinux-python installée. Il y a un ajout spécial dans le playbook Molecule lors de la délégation des tâches à localhost pour utiliser l'interpréteur python de l'hôte au lieu de celui de l'environnement virtuel afin d'accéder correctement aux liaisons SELinux. Vous pouvez installer ce package à la fois sur Fedora et CentOS avec :

sudo yum install python2-libselinux

Configuration de l'environnement Vagrant

Vous pouvez installer Molecule dans un environnement virtuel avec les commandes suivantes :

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

L'installation et la configuration de Vagrant et VirtualBox ne sont pas prises en charge.

Exécution du test

Après avoir mis en place Molecule dans l'environnement virtuel, vous pouvez exécuter les tests avec :

molecule converge [-s scenario_name]

scenario_name est le nom d'un cas de test sous molecule. Le cas de test par défaut est exécuté si aucun paramètre n'est passé.

Contribuer

Il suffit d'ouvrir une PR. Nous aimons les PR !

Liste des choses à faire

Voici quelques suggestions sur ce qu'il faut faire :

  • Supporter l'utilisation de MongoDB fourni par des paquets de distribution.
  • Écrire d'autres tests autonomes avec serverspec ou testinfra.
  • Améliorer le cas de test pour le réplica.

Licence

Ce rôle est distribué sous la licence MIT.

À propos du projet

Role for installing MongoDB with clustering support

Installer
ansible-galaxy install stone-payments.mongodb
Licence
mit
Téléchargements
405
Propriétaire
Pensar fora da máquina só é possível quando se trabalha com tecnologia humana de ponta.