mongodb

stone-payments.mongodb

Статус сборки

Роль для Ansible, которая управляет MongoDB в стоStandalone или репликационном наборе.

Поддерживаемые системы

Чтобы сократить усилия на разработку, мы решили, что поддерживаемый дистрибутив должен:

  • быть в текущей поддержке от создателя дистрибутива (т.е. не в EOL);
  • быть в текущей поддержке от MongoDB.org (это требование, вероятно, будет снято скоро);
  • основываться на systemd;
  • иметь достаточно широкую пользовательскую базу.

Поэтому список поддерживаемых систем на данный момент следующий:

  • Enterprise Linux (как CentOS, так и RHEL)
    • 7.3
    • 7.4
    • 7.5
  • Ubuntu
    • 16.04

Дальнейшие дистрибутивы могут быть добавлены по запросу, при условии выполнения требований.

Использование

Быстрый старт

Для настройки базовой конфигурации MongoDB без пароля и только для обратного соединения не требуется никаких переменных. Просто включите его в плей:

- name: установить mongodb
  hosts: all
  roles: stone-payments.mongodb

Настройка реплика-набора

Чтобы построить репликационный набор, нужно сообщить мастеру, что он является мастером, и указать, к какому мастеру подключаться. Вы можете сделать это с помощью следующего фрагмента:

- name: установить mongodb реплика-набор
  host: 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" # должен быть IP-адрес
    mongodb_replSet_key: "someLongKey" # необязательно, ключ аутентификации между репликами
    mongodb_replSet_member: "{{ ansible_eth1['ipv4']['address'] }}" # необязательно, укажите другой интерфейс для репликации
    mongodb_replSet_arbiter: "{{ true if inventory_hostname == 'hostThatIsArbiter' else false }}"

Аутентификация

Вы можете включить аутентификацию и создать административный аккаунт следующим образом:

- name: установить mongodb с аутентификацией
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_auth: true
    mongodb_admin_user: "admin"
    mongodb_admin_password: "somePassword"

Логирование

Вы можете установить любую опцию systemLog, предоставив словарь mongodb_conf_logging:

- name: установить mongodb с логированием для отладки сети
  host: all
  roles: stone-payments.mongodb
  vars:
    mongodb_conf_logging:
      verbosity: 0
      component:
        network:
          verbosity: 5
      destination: file
      path: /var/log/mongodb/mongod.log

Брандмауэр

Это правило настроит либо ufw, либо firewalld для включения входящих соединений по умолчанию. Вы можете настроить это с помощью следующих опций (которые специфичны для используемого вами решения брандмауэра):

- name: установить mongodb с кастомными настройками брандмауэра
  hosts: all
  roles: stone-payments.mongodb
  vars:
    mongodb_firewall_zone: "public" # только для firewalld
    mongodb_firewall_interface: "eth0" # только для ufw
    mongodb_firewall_source: "192.168.0.0/24" # только для ufw

Вы также можете отключить конфигурацию брандмауэра, установив mongodb_install_firewall: false.

Модули безопасности Linux

Эта роль по умолчанию настроит модули безопасности Linux (в данный момент поддерживается только SELinux). Вы можете отключить это, установив: mongodb_install_lsm: false.

Другие настройки

Я считаю, что почти каждая другая настройка самопоясняющаяся или напрямую связанная с основной функцией MongoDB. Просто переопределите настройки в defaults/main.yml, и они будут (надеюсь) применены к вашей системе.

Тестирование

Эта роль реализует большинство юнит-тестов с помощью Molecule на Docker. Обратите внимание, что мы поддерживаем только Molecule 2.0 и выше. Некоторые тесты реализованы на Vagrant с VirtualBox, чтобы мы могли тестировать аспекты, требующие полноценной виртуальной машины. Однако для тестов, которые требуют Vagrant, нет CI интеграции, так как нет публичного CI, который поддерживает вложенную виртуализацию.

Следующие сценарии присутствуют:

Название сценария Драйвер Описание
default docker Основные тесты роли в индивидуальной настройке
replica-set docker Настройка смешанного дистрибутива в репликационном наборе
security vagrant Полнофункциональная ВМ для тестирования LSM и конфигурации брандмауэра

Настройка окружения Docker

Вы можете установить Molecule и библиотеку взаимодействия с Docker внутри виртуального окружения с помощью следующих команд. Обратите внимание, что нам нужен docker-py как внутри, так и вне виртуального окружения.

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

Установка и настройка Docker выходят за рамки данного документа.

Если у вас хост с поддержкой SELinux, также необходимо установить библиотеку libselinux-python. В Molecule playbook есть специальное дополнение при делегировании задач на localhost, чтобы использовать интерпретатор python хоста вместо python виртуального окружения, чтобы правильно получить доступ к привязкам SELinux. Вы можете установить этот пакет как на Fedora, так и на CentOS с помощью:

sudo yum install python2-libselinux

Настройка окружения Vagrant

Вы можете установить Molecule внутри виртуального окружения с помощью следующих команд:

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

Установка и настройка Vagrant и VirtualBox выходят за рамки данного документа.

Запуск теста

После того, как Molecule будет настроен в виртуальном окружении, вы можете запустить тесты с помощью:

molecule converge [-s имя_сценария]

Где имя_сценария — это название тестового случая внутри molecule. Если параметр не указан, будет запущен тест по умолчанию.

Участие

Просто откройте PR. Мы любим PR!

Список задач

Вот несколько предложений о том, что можно сделать:

  • Поддержка использования MongoDB, упакованного в дистрибутив.
  • Написать дополнительные автономные тесты с помощью serverspec или testinfra.
  • Улучшить тестовый случай для репликационного набора.

Лицензия

Эта роль распространяется под лицензией MIT.

О проекте

Role for installing MongoDB with clustering support

Установить
ansible-galaxy install stone-payments/ansible-mongodb
Лицензия
mit
Загрузки
393
Владелец
Pensar fora da máquina só é possível quando se trabalha com tecnologia humana de ponta.