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