- Описание
- Использование
- Рекомендации
- Версии и совместимость
- Часто задаваемые вопросы
- Разработка и внесение правок
- Команда проекта
- Источники
Этот репозиторий предоставляет набор готовых плейбуков Ansible для автоматизации рутинных операций по управлению форумами на движке MyBB. Проект предназначен для системных администраторов, DevOps-инженеров и владельцев форумов, которые хотят стандартизировать и упростить процессы развертывания, резервного копирования и удаления своих сообществ.
- Полностью автоматизированное развертывание. Установка MyBB заданной версии с подготовкой базы данных и веб-сервера.
- Резервное копирование. Создание дампа базы данных и архива файлов форума с временной меткой.
- Чистое удаление. Полное удаление файлов форума и его базы данных с возможностью создания финального бекапа.
- Безопасность. Поддержка
ansible-vaultдля шифрования паролей и другой чувствительной информации. - Гибкая конфигурация. Все параметры (пути, версии, учетные данные) вынесены в отдельные файлы переменных.
- Управляющая машина. Linux/macOS с установленными Python и Git.
- Целевой сервер. Linux-сервер (рекомендуется Ubuntu/Debian/CentOS) с доступом по SSH и настроенным Python.
- Права sudo. Пользователь, от имени которого запускается Ansible, должен иметь права
sudoбез запроса пароля (или настроенный пароль в Ansible) для установки пакетов.
- Получите код данного пакета.
git clone https://github.com/kmitrakov/MyBB-Managing-With-Ansible.git- Установите пакет для управления виртуальными окружениями.
pip3 install --upgrade virtualenv- Создайте виртуальное окружение.
python3 -m virtualenv venv- Запустите виртуальное окружение.
source venv/bin/activate- Установите Ansible.
pip3 install ansible- Отредактируйте файл
inventory/default/group_vars/hosts.- ansible_host - Целевой сервер.
- ansible_user - Пользователь для подключения по SSH.
- ansible_ssh_private_key_file - Сертификат для подключения по SSH.
Пример файла:
[service_mybb]
host1 ansible_host=host-01.hosting.com ansible_user=host-01-admin ansible_ssh_private_key_file=~/.ssh/host-01-admin-key-1762179269032
[all:vars]
ansible_python_interpreter=/usr/bin/python3
Убедитесь, что сертификат добавлен в агент или указан верный путь, а хост сервера присутствует в
~/.ssh/known_hosts.
- Отредактируйте файл
inventory/default/group_vars/all/vars.yml.- tmp_dir - Временный каталог.
Пример файла:
---
tmp_dir: "/tmp"- Отредактируйте файл
inventory/default/group_vars/all/vault.yml.- mysql_root_password - Пароль root от MySql.
Пример файла:
---
mysql_root_password: "ykqfmb4Hke2ol8wO"- Отредактируйте файл
inventory/default/group_vars/service_mybb/vars.yml.- mybb_version - Версия MyBB.
- mybb_install_dir - Каталог установки MyBB.
- mybb_backup_dir - Каталог резервных копий MyBB.
Пример файла:
---
service_mybb_state: "deploy"
# MyBB variables
mybb_version: "1.8.39"
mybb_install_dir: "/var/www/html/forum"
mybb_backup_dir: "/var/backups/forum"
timestamp: "{{ ansible_date_time.year }}-{{ ansible_date_time.month }}-{{ ansible_date_time.day }}_{{ ansible_date_time.hour }}-{{ ansible_date_time.minute }}-{{ ansible_date_time.second }}"
mybb_backup_filename: "mybb_backup_{{ timestamp }}.tar.gz"- Отредактируйте файл
inventory/default/group_vars/service_mybb/vault.yml.- mybb_db_name - Имя базы данных MyBB.
- mybb_db_user - Пользователь базы данных MyBB.
- mybb_db_password - Пароль пользователя базы данных MyBB.
Пример файла:
---
# MyBB database variables
mybb_db_name: "forum"
mybb_db_user: "forum_user"
mybb_db_password: "bzEq8el06ozoJU16"
mybb_db_host: "localhost"Управление осуществляется путём изменения значения переменной service_mybb_state в файле inventory/default/group_vars/service_mybb/vars.yml и последующего запуска основного плейбука.
- В файле
inventory/default/group_vars/service_mybb/vars.ymlпеременнойservice_mybb_stateзадайте значениеdeploy. - Запустите выполнение плейбука:
ansible-playbook -i inventory/default/hosts service_mybb.ymlПлейбук скачает указанную версию MyBB, настроит базу данных, скопирует файлы и выполнит начальную конфигурацию.
- В файле
inventory/default/group_vars/service_mybb/vars.ymlпеременнойservice_mybb_stateзадайте значениеbackup. - Запустите выполнение плейбука:
ansible-playbook -i inventory/default/hosts service_mybb.ymlАрхив с файлами форума и дамп базы данных будут сохранены в директории mybb_backup_dir.
- В файле
inventory/default/group_vars/service_mybb/vars.ymlпеременнойservice_mybb_stateзадайте значениеdelete. - Запустите выполнение плейбука:
ansible-playbook -i inventory/default/hosts service_mybb.ymlВнимание, эта операция необратима.
Файлы vault.yml содержат чувствительные данные. Рекомендуется использовать утилиту ansible-vault для защиты данных.
Для этого необходимо:
- Создать файл, содержащий пароль для шифрования, например
default_password_file.yml, и записать в него пароль. - Добавить файл в
.gitignore.
Пример:
# Ansible vault password files
default_password_file.yml
- Команды для шифрования файлов:
ansible-vault encrypt inventory/default/group_vars/all/vault.yml --vault-password-file default_password_file.yml
ansible-vault encrypt inventory/default/group_vars/service_mybb/vault.yml --vault-password-file default_password_file.yml- Команды для дешифровки файлов:
ansible-vault decrypt inventory/default/group_vars/all/vault.yml --vault-password-file default_password_file.yml
ansible-vault decrypt inventory/default/group_vars/service_mybb/vault.yml --vault-password-file default_password_file.yml- Запуск плейбука с использованием шифрования:
ansible-playbook -i inventory/default/hosts service_mybb.yml --vault-password-file default_password_file.ymlХраните все неизменяемые файлы (например, зашифрованные vault.yml и обычные vars.yml) в Git. Это позволит отслеживать историю изменений конфигурации вашего форума.
При использовании проекта для нескольких форумов, скопируйте каталог inventory/default в inventory/forum_name и настраивайте переменные под каждый форум индивидуально.
Перед выполнением плейбуков в реальной среде используйте флаг --check для "сухого прогона" и --diff, чтобы увидеть, какие изменения будут внесены в файлы.
ansible-playbook -i inventory/default/hosts service_mybb.yml --check --diff| Версия пакета | Совместимость с MyBB | Статус |
|---|---|---|
| 1.0.x | 1.8.39 | ✅ Поддерживается |
- Я нашел ошибку. Куда сообщить?
- Пожалуйста, создайте Issue в этом репозитории, подробно описав проблему, указав путь к файлу, на котором обнаружена ошибка.
- Можно ли использовать этот проект для обновления MyBB?
- Нет, в текущей версии автоматическое обновление не поддерживается. Изменение версии в
vars.ymlприведет к попытке развернуть новую версию, что может нарушить работу существующего форума.
Если вы хотите помочь с улучшением или исправить ошибку:
- Сделайте форк (Fork) этого репозитория.
- Создайте новую ветку (Branch) для ваших изменений (
git checkout -b fix-deploy). - Внесите правки.
- Сделайте коммит (Commit) ваших изменений (
git commit -am 'Исправлена ошибка с правами на файлы при разворачивании MyBB'). - Запуште (Push) изменения в ваш форк (
git push origin fix-deploy). - Создайте новый Pull Request в этом репозитории.
Ваша помощь приветствуется!



