mongodb

Ansible Роль - mongodb

Настройка компонентов кластера MongoDB

Доступно на Ansible Galaxy: isaackehle.mongodb

Переменные

Обязательные определения следующие:

cfg_server:
  name: "my-cfg" # (Обязательно)
  group: "my-cfg-servers" # (Обязательно) Всегда указывайте идентификатор группы для конфигурационных серверов

replica_set:
  name: "my-cfg" # имя набора реплик для конфигурационного сервера (префикс fqdn)
  group: "my-cfg-servers" # имя группы для всех серверов в наборе реплик

Определения хостов обычно содержат следующее:

Только набор реплик

cluster_role: "replicaSet"

Сервер маршрутизатора

cluster_role: "router"

Конфигурационный сервер

cluster_role: "config"
replica_set:
  name: "my-cfg" # имя набора реплик для конфигурационного сервера (префикс fqdn)
  group: "my-cfg-servers" # имя группы для всех серверов в наборе реплик

Сервер шардов

cluster_role: "shard"
replica_set:
  name: "db-data" # имя набора реплик для сервера шардов (префикс fqdn)
  group: "db-data-servers" # имя группы для всех серверов в наборе реплик

Теги/Флаги

Я использую систему флагов и тегов, которая позволяет вызываемому плейбуку указывать, какие роли выполняются. Например:

ansible-playbook playbooks/mongodb.yml -e "{'flags': ['install']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['save_config']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['reset_storage']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['init_replica_set']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['add_shard_to_cluster']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['create_database']}"

Флаги и переменные

Флаг Назначение
install Установка пакетов mongo
save_config Базовая инициализация. Остановка служб, загрузка файлов конфигурации, перезапуск служб
reset_storage Очистка директорий и логов
init_replica_set Инициализация конфигурации набора реплик
add_shard_to_cluster Добавление набора реплик сервера шардов в кластер серверов шардов
create_database Первоначальное создание базы данных с именем пользователя и паролем
vars:
  flags: ["install"]
  new_shard:
    name: # Имя набора реплик, который нужно добавить к конфигурационному серверу
    server: # Один из участников нового набора реплик для добавления

Примеры

- hosts: all
  vars:
    auth_db: ""
    adminUser: ""
    adminPass: ""
    tgt_db: ""
    userName: ""
    userPass: ""
    roles: ["readWrite", "userAdmin"]

    # Для инициализации набора реплик
    adminUser: ''
    adminPass: ''

  roles:
    - { role: isaackehle.mongodb, flags: ['install'] }
    - { role: isaackehle.mongodb, flags: ['save_config'] }
    - { role: isaackehle.mongodb, flags: ['reset_storage'] }
    - { role: isaackehle.mongodb, flags: ['init_replica_set'] }
    - { role: isaackehle.mongodb, flags: ['add_shard_to_cluster'] }
    - { role: isaackehle.mongodb, flags: ['create_database'] }

Линтинг

yamllint -c yamllint.yaml .
ansible-lint .

Лицензия

MIT

Информация об авторе

Исак Кехле @isaackehle (twitter, github, linkedin)

Ссылки

О проекте

Configure the components of a MongoDB Cluster

Установить
ansible-galaxy install pgkehle/ansible-mongodb
Лицензия
mit
Загрузки
184
Владелец