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)
Ссылки
MongoDB
- Укрепление безопасности
- X509
- Развертывание шардированного кластера
- Добавление шардов в кластер
- Авторизация
- Внутренняя авторизация
- Настройка сертификатов членов
- Принуждение контроля доступа по ключевому файлу
- Развертывание набора реплик с контролем доступа по ключевому файлу
- db.createUser()
- Защита MongoDB с помощью x509
Digital Ocean
Установить
ansible-galaxy install pgkehle/ansible-mongodb
Лицензия
mit
Загрузки
184
Владелец