stone-payments.mongodb
stone-payments.mongodb
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]
Où 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.
ansible-galaxy install stone-payments.mongodb