stone-payments.mongodb

stone-payments.mongodb

Status budowy

Rola dla Ansible, która zarządza MongoDB w trybie samodzielnym lub w zestawie replik.

Obsługiwane systemy

Aby oszczędzić wysiłki w rozwoju, postanowiliśmy, że obsługiwany system operacyjny powinien:

  • być obecnie wspierany przez producenta (czyli nie być w EOL);
  • być obecnie wspierany przez MongoDB.org (to wymaganie prawdopodobnie wkrótce zostanie usunięte);
  • bazować na systemd;
  • mieć wystarczającą liczbę użytkowników.

Dlatego lista obsługiwanych systemów obejmuje obecnie:

  • Enterprise Linux (zarówno CentOS, jak i RHEL)
    • 7.3
    • 7.4
    • 7.5
  • Ubuntu
    • 16.04

Dalsze dystrybucje mogą być dodawane na żądanie, pod warunkiem spełnienia wymagań.

Użycie

Szybki start

Nie ma żadnych zmiennych potrzebnych do skonfigurowania podstawowej, bezhasłowej, tylko pętli, samodzielnej konfiguracji MongoDB. Po prostu dołącz to w zadaniu:

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

Konfiguracja zestawu replik

Aby utworzyć zestaw replik, musisz poinformować główny serwer, że jest serwerem głównym oraz, do którego serwera replikacji się łączyć. Możesz to zrobić za pomocą poniższego fragmentu:

- name: zainstaluj zestaw replik mongodb
  host: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_bindIp: "0.0.0.0"
    mongodb_replSet_enabled: true
    mongodb_replSet_name: "nazwaZestawuReplik"
    mongodb_replSet_master: "1.2.3.4" # musi być adresem IP
    mongodb_replSet_key: "jakisDługiKlucz" # opcjonalne, klucz do autoryzacji między replikami
    mongodb_replSet_member: "{{ ansible_eth1['ipv4']['address'] }}" # opcjonalne, określenie innego interfejsu do replikacji
    mongodb_replSet_arbiter: "{{ true if inventory_hostname == 'hostKtóryJestArbiter' else false }}"

Uwierzytelnianie

Możesz włączyć uwierzytelnianie i utworzyć konto administratora w następujący sposób:

- name: zainstaluj mongodb z uwierzytelnianiem
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_auth: true
    mongodb_admin_user: "admin"
    mongodb_admin_password: "jakiesHasło"

Logowanie

Możesz ustawić dowolną opcję systemLog podając słownik mongodb_conf_logging:

- name: zainstaluj mongodb z logowaniem debug sieci
  host: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_logging:
      verbosity: 0
      component:
        network:
          verbosity: 5
      destination: file
      path: /var/log/mongodb/mongod.log

Zapora

Ta reguła skonfiguruje zarówno ufw, jak i firewalld, aby domyślnie zezwalać na połączenia przychodzące. Możesz dostosować to za pomocą następujących opcji (które są specyficzne dla używanego rozwiązania zapory):

- name: zainstaluj mongodb z niestandardowymi ustawieniami zapory
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_firewall_zone: "public" # tylko firewalld
    mongodb_firewall_interface: "eth0" # tylko ufw
    mongodb_firewall_source: "192.168.0.0/24" # tylko ufw

Możesz również wyłączyć konfigurację zapory ustawiając mongodb_install_firewall: false.

Moduły zabezpieczeń w systemie Linux

Ta rola domyślnie skonfiguruje LSM (aktualnie obsługiwane tylko SELinux). Możesz to wyłączyć, ustawiając: mongodb_install_lsm: false.

Inne konfiguracje

Uważam, że prawie każda inna konfiguracja jest oczywista lub bezpośrednio związana z funkcją MongoDB. Po prostu nadpisz konfiguracje w defaults/main.yml, a one (mam nadzieję) zostaną zastosowane w twoim systemie.

Testowanie

Ta rola implementuje większość testów jednostkowych z użyciem Molecule na Dockerze. Zauważ, że wspieramy tylko Molecule 2.0 lub wyższe. Niektóre testy są realizowane na Vagrantzie z VirtualBoxem, aby przetestować aspekty, które wymagają pełnej maszyny wirtualnej. Jednak dla testów, które wymagają Vagranta, nie ma integracji CI, ponieważ nie ma publicznego CI, który obsługuje zagnieżdżoną wirtualizację.

Poniższe scenariusze są dostępne:

Nazwa scenariusza Sterownik Opis
default docker Podstawowe testy sanityzacyjne roli w pojedynczej konfiguracji
replica-set docker Mieszana konfiguracja dystrybucji w zestawie replik
security vagrant Pełna maszyna wirtualna do testowania LSM i konfiguracji zapory

Konfiguracja środowiska Docker

Możesz zainstalować Molecule i bibliotekę interakcji z Dockerem w wirtualnym środowisku za pomocą następujących poleceń. Zauważ, że potrzebujemy docker-py zarówno wewnątrz, jak i na zewnątrz wirtualenv.

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

Instalacja i konfiguracja Dockera są poza zakresem.

Jeśli masz hosta z włączonym SELinux, musisz również zainstalować bibliotekę libselinux-python. W Molecule playbookie jest specjalna adnotacja przy delegowaniu zadań do localhost, aby użyć interpretera Pythona hosta zamiast Pythona z wirtualenvu, aby właściwie uzyskać dostęp do powiązań SE Linux. Możesz zainstalować ten pakiet zarówno na Fedorze, jak i CentOS za pomocą:

sudo yum install python2-libselinux

Konfiguracja środowiska Vagrant

Możesz zainstalować Molecule w wirtualnym środowisku za pomocą następujących poleceń:

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

Instalacja i konfiguracja Vagranta i VirtualBoxa są poza zakresem.

Uruchamianie testów

Po skonfigurowaniu Molecule w wirtualenv, możesz uruchomić testy za pomocą:

molecule converge [-s scenario_name]

Gdzie scenario_name to nazwa przypadku testowego w molecule. Domyślny przypadek testowy jest uruchamiany, jeśli nie poda się parametru.

Wkład

Po prostu otwórz PR. Uwielbiamy PR-y!

Lista rzeczy do zrobienia

Oto kilka sugestii, co zrobić:

  • Wspierać użycie pakietowanej wersji MongoDB.
  • Napisać dodatkowe testy samodzielne z użyciem serverspec lub testinfra.
  • Poprawić przypadek testowy dla zestawu replik.

Licencja

Ta rola jest dystrybuowana na licencji MIT.

O projekcie

Role for installing MongoDB with clustering support

Zainstaluj
ansible-galaxy install stone-payments.mongodb
Licencja
mit
Pobrania
405
Właściciel
Pensar fora da máquina só é possível quando se trabalha com tecnologia humana de ponta.