stone-payments.mongodb
stone-payments.mongodb
Rolle für Ansible, die MongoDB in einer eigenständigen Konfiguration oder in einem Replikat-Set verwaltet.
Unterstützte Systeme
Um die Entwicklungsanstrengungen zu sparen, haben wir entschieden, dass ein unterstütztes System folgende Anforderungen erfüllen sollte:
- Der Distributor wird derzeit vom Hersteller unterstützt (d.h. ist nicht in der End-of-Life-Phase);
- Der Distributor wird derzeit von MongoDB.org unterstützt (diese Anforderung wird wahrscheinlich bald fallen gelassen);
- es muss auf systemd basieren;
- es sollte eine breite Benutzerbasis haben.
Die Liste der unterstützten Systeme lautet daher aktuell:
- Enterprise Linux (sowohl CentOS als auch RHEL)
- 7.3
- 7.4
- 7.5
- Ubuntu
- 16.04
Weitere Distributionen können auf Anfrage hinzugefügt werden, sofern die Anforderungen erfüllt sind.
Nutzung
Schnellstart
Es sind keine Variablen erforderlich, um eine grundlegende, passwortlose, Loopback-Only, eigenständige MongoDB-Installation einzurichten. Fügen Sie einfach Folgendes in ein Play ein:
- name: mongodb installieren
hosts: alle
roles: stone-payments.mongodb
Replikatsatz einrichten
Um einen Replikatsatz zu erstellen, müssen Sie den Master informieren, dass er ein Master ist, und an welchem Master er sich verbinden soll. Dies können Sie mit dem folgenden Ausschnitt tun:
- name: mongodb Replikat-Set installieren
hosts: alle
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" # muss eine IP-Adresse sein
mongodb_replSet_key: "someLongKey" # optional, Authentifizierungsschlüssel über Replikate hinweg
mongodb_replSet_member: "{{ ansible_eth1['ipv4']['address'] }}" # optional, andere Schnittstelle für die Replikation angeben
mongodb_replSet_arbiter: "{{ true if inventory_hostname == 'hostThatIsArbiter' else false }}"
Authentifizierung
Sie können die Authentifizierung aktivieren und ein Administratorkonto auf folgende Weise erstellen:
- name: mongodb mit Authentifizierung installieren
hosts: alle
roles: stone-payments.mongodb
vars:
mongodb_conf_auth: true
mongodb_admin_user: "admin"
mongodb_admin_password: "somePassword"
Protokollierung
Sie können jede systemLog
Option festlegen, indem Sie das mongodb_conf_logging
-Dictionary bereitstellen:
- name: mongodb mit Netzwerk-Debug-Protokollierung installieren
hosts: alle
roles: stone-payments.mongodb
vars:
mongodb_conf_logging:
verbosity: 0
component:
network:
verbosity: 5
destination: file
path: /var/log/mongodb/mongod.log
Firewall
Diese Regel konfiguriert entweder ufw oder firewalld, um eingehende Verbindungen standardmäßig zu ermöglichen. Sie können dies mit den folgenden Optionen anpassen (die spezifisch für die von Ihnen verwendete Firewall-Lösung sind):
- name: mongodb mit benutzerdefinierten Firewalleinstellungen installieren
hosts: alle
roles: stone-payments.mongodb
vars:
mongodb_firewall_zone: "public" # nur firewalld
mongodb_firewall_interface: "eth0" # nur ufw
mongodb_firewall_source: "192.168.0.0/24" # nur ufw
Sie können die Firewall-Konfiguration auch unterdrücken, indem Sie mongodb_install_firewall: false
setzen.
Sicherheitsmodule für Linux
Diese Rolle konfiguriert standardmäßig LSMs (derzeit wird nur SELinux unterstützt). Sie können dies deaktivieren, indem Sie setzen:
mongodb_install_lsm: false
.
Weitere Konfigurationen
Ich glaube, dass fast jede andere Konfiguration selbsterklärend ist oder direkt mit einer Kernfunktion von MongoDB zusammenhängt. Überschreiben Sie einfach die Konfigurationen in defaults/main.yml
, und sie werden (hoffentlich) auf Ihrem System angewendet.
Testen
Diese Rolle implementiert die meisten Unit-Tests mit Molecule auf Docker. Bitte beachten Sie, dass wir nur Molecule 2.0 oder höher unterstützen. Einige Tests werden mit Vagrant und VirtualBox implementiert, sodass wir Aspekte testen können, die eine vollständige VM erfordern. Für die Tests, die Vagrant benötigen, gibt es jedoch keine CI-Integration, da es kein öffentliches CI gibt, das verschachtelte Virtualisierung unterstützt.
Die folgenden Szenarien sind vorhanden:
Szenario-Name | Treiber | Beschreibung |
---|---|---|
default |
docker | Basisfunktionstests in einer individuellen Konfiguration |
replica-set |
docker | Gemischte Distributionskonfiguration in einem Replikat-Set |
security |
vagrant | Vollständige VM zur Testung der LSM- und Firewall-Konfiguration |
Docker-Umgebungssetup
Sie können Molecule und die Docker-Interaktionsbibliothek innerhalb einer virtuellen Umgebung mit den folgenden Befehlen installieren. Beachten Sie, dass wir docker-py sowohl innerhalb als auch außerhalb der virtuellen Umgebung benötigen.
sudo pip install docker-py
virtualenv .venv
.venv/bin/activate
pip install molecule docker-py
Die Installation und Konfiguration von Docker ist nicht Teil dieses Dokuments.
Wenn Sie einen SELinux-aktivierten Host haben, müssen Sie auch die Bibliothek libselinux-python installiert haben. Es gibt eine spezielle Ergänzung im Molecule-Playbook, wenn Aufgaben an localhost delegiert werden, um den Python-Interpreter des Hosts anstelle des Python-Interpreters der virtuellen Umgebung zu verwenden, um ordnungsgemäß auf die SELinux-Bindungen zuzugreifen. Sie können dieses Paket sowohl auf Fedora als auch auf CentOS mit folgendem Befehl installieren:
sudo yum install python2-libselinux
Vagrant-Umgebungssetup
Sie können Molecule innerhalb einer virtuellen Umgebung mit den folgenden Befehlen installieren:
virtualenv .venv
.venv/bin/activate
pip install molecule
Die Installation und Konfiguration von Vagrant und VirtualBox liegt nicht im Fokus dieses Dokuments.
Ausführen des Tests
Nachdem Sie Molecule innerhalb der virtuellen Umgebung eingerichtet haben, können Sie die Tests mit folgendem Befehl ausführen:
molecule converge [-s scenarioname]
Wobei scenarioname
der Name eines Testfalls unter molecule
ist. Der Standard-Testfall wird ausgeführt, wenn kein Parameter übergeben wird.
Mitarbeit
Öffnen Sie einfach einen PR. Wir freuen uns über PRs!
To-Do-Liste
Hier sind einige Vorschläge, was zu tun ist:
- Unterstützung der Verwendung von Distribution-Paket-MongoDB.
- Weitere eigenständige Tests mit serverspec oder testinfra schreiben.
- Verbesserung des Testfalls für das Replikat-Set.
Lizenz
Diese Rolle ist unter der MIT-Lizenz verteilt.
ansible-galaxy install stone-payments.mongodb