Skip to content

kmitrakov/MyBB-Managing-With-Ansible

Repository files navigation

MyBB Managing With Ansible

Автоматизация управления форумами MyBB с помощью Ansible

MyBB Version Ansible Compatible Release License

Этот репозиторий предоставляет набор готовых плейбуков Ansible для автоматизации рутинных операций по управлению форумами на движке MyBB. Проект предназначен для системных администраторов, DevOps-инженеров и владельцев форумов, которые хотят стандартизировать и упростить процессы развертывания, резервного копирования и удаления своих сообществ.

  • Полностью автоматизированное развертывание. Установка MyBB заданной версии с подготовкой базы данных и веб-сервера.
  • Резервное копирование. Создание дампа базы данных и архива файлов форума с временной меткой.
  • Чистое удаление. Полное удаление файлов форума и его базы данных с возможностью создания финального бекапа.
  • Безопасность. Поддержка ansible-vault для шифрования паролей и другой чувствительной информации.
  • Гибкая конфигурация. Все параметры (пути, версии, учетные данные) вынесены в отдельные файлы переменных.
  • Управляющая машина. Linux/macOS с установленными Python и Git.
  • Целевой сервер. Linux-сервер (рекомендуется Ubuntu/Debian/CentOS) с доступом по SSH и настроенным Python.
  • Права sudo. Пользователь, от имени которого запускается Ansible, должен иметь права sudo без запроса пароля (или настроенный пароль в Ansible) для установки пакетов.
  1. Получите код данного пакета.
git clone https://github.com/kmitrakov/MyBB-Managing-With-Ansible.git
  1. Установите пакет для управления виртуальными окружениями.
pip3 install --upgrade virtualenv
  1. Создайте виртуальное окружение.
python3 -m virtualenv venv
  1. Запустите виртуальное окружение.
source venv/bin/activate
  1. Установите Ansible.
pip3 install ansible
  1. Отредактируйте файл 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.

  1. Отредактируйте файл inventory/default/group_vars/all/vars.yml.
    • tmp_dir - Временный каталог.

Пример файла:

---
tmp_dir: "/tmp"
  1. Отредактируйте файл inventory/default/group_vars/all/vault.yml.
    • mysql_root_password - Пароль root от MySql.

Пример файла:

---
mysql_root_password: "ykqfmb4Hke2ol8wO"
  1. Отредактируйте файл 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"
  1. Отредактируйте файл 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 и последующего запуска основного плейбука.

  1. В файле inventory/default/group_vars/service_mybb/vars.yml переменной service_mybb_state задайте значение deploy.
  2. Запустите выполнение плейбука:
ansible-playbook -i inventory/default/hosts service_mybb.yml

Плейбук скачает указанную версию MyBB, настроит базу данных, скопирует файлы и выполнит начальную конфигурацию.

  1. В файле inventory/default/group_vars/service_mybb/vars.yml переменной service_mybb_state задайте значение backup.
  2. Запустите выполнение плейбука:
ansible-playbook -i inventory/default/hosts service_mybb.yml

Архив с файлами форума и дамп базы данных будут сохранены в директории mybb_backup_dir.

  1. В файле inventory/default/group_vars/service_mybb/vars.yml переменной service_mybb_state задайте значение delete.
  2. Запустите выполнение плейбука:
ansible-playbook -i inventory/default/hosts service_mybb.yml

Внимание, эта операция необратима.

Файлы vault.yml содержат чувствительные данные. Рекомендуется использовать утилиту ansible-vault для защиты данных.

Для этого необходимо:

  1. Создать файл, содержащий пароль для шифрования, например default_password_file.yml, и записать в него пароль.
  2. Добавить файл в .gitignore.

Пример:

# Ansible vault password files
default_password_file.yml
  1. Команды для шифрования файлов:
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
  1. Команды для дешифровки файлов:
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
  1. Запуск плейбука с использованием шифрования:
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 приведет к попытке развернуть новую версию, что может нарушить работу существующего форума.

Если вы хотите помочь с улучшением или исправить ошибку:

  1. Сделайте форк (Fork) этого репозитория.
  2. Создайте новую ветку (Branch) для ваших изменений (git checkout -b fix-deploy).
  3. Внесите правки.
  4. Сделайте коммит (Commit) ваших изменений (git commit -am 'Исправлена ошибка с правами на файлы при разворачивании MyBB').
  5. Запуште (Push) изменения в ваш форк (git push origin fix-deploy).
  6. Создайте новый Pull Request в этом репозитории.

Ваша помощь приветствуется!

About

Автоматизация управления форумами MyBB с помощью Ansible.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors