stone-payments.mongodb

stone-payments.mongodb

Build Status

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.

Über das Projekt

Role for installing MongoDB with clustering support

Installieren
ansible-galaxy install stone-payments.mongodb
Lizenz
mit
Downloads
405
Besitzer
Pensar fora da máquina só é possível quando se trabalha com tecnologia humana de ponta.