9b0783581fe085ad3e5fc9ffcee860403a03a1e9
Цитатный телеграмм бот с авторазвёртыванием. 🤖
🛠 Под капотом (Стек технологий)
Этот проект создавался в том числе для практики современных DevOps-инструментов. Здесь реализован полноценный автоматизированный пайплайн развертывания:
- Terraform + Yandex Cloud: Используется концепция Infrastructure as Code (IaC) для автоматического создания виртуальных машин, настройки сети и дисков в облаке.
- Docker: Приложение упаковано в контейнер, что решает проблему с зависимостями и позволяет легко запускать бота на любом сервере.
- Ansible: Автоматизирует настройку чистого сервера. Плейбук сам устанавливает Docker (если его нет), настраивает окружение и запускает контейнер.
- GitLab CI/CD: Готовый пайплайн (
.gitlab-ci.yml), который прогоняет тесты, собирает Docker-образ с помощью Kaniko, пушит его в Docker Hub и автоматически запускает Ansible-плейбук для деплоя на боевой сервер.
Что умеет данный бот?
- Отправлять рандомную цитату по запросу
/quote - По команде
/statsпоказывать, сколько цитат в базе есть на данный момент.
Возможности для администратора: ⚙️
- Добавлять новые цитаты командой
/add <текст цитаты>
Как это развернуть? 🚀
Вам понадобится:
- Зарубежный Linux сервер на Ubuntu или Debian.
- Токен вашего телеграмм бота. Можно получить здесь: BotFather
- У вас должен быть установлен ansible и git на wsl. Если не установлены, то установите командами
sudo apt install ansible && sudo apt install git
Ваши действия для развертывания:
- Клонируйте репозиторий командой:
git clone https://github.com/LeoR156/quote-bot - Перейдите в папку с ботом командой
cd quote-bot - Создайте файл
.envи добавьте в него данные командойnano .env:
TOKEN=your_token_here # Замените на реальный токен
ADMIN_IDS=123456789,987654321 # Напишите свой id или id того аккаунта, с которого будет осуществляться добавление цитат. ID может быть несколько, порядок записи в примере.
- Перейдите в папку
auto-deploymentкомандойcd auto-deployment - Отредактируйте файл инвентори командой
nano inventory.ini. Удалите оттуда всю информацию и добавьте следующее ( ⚠️ не забудьте поменять данные на свои):
[server_bot]
server ansible_host=<ваш_ip> ansible_user=<ваш_пользователь> ansible_ssh_private_key_file=<путь_до_вашего_ssh_ключа_на_хосте>
[all:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
- Запустите плейбук командой
ansible-playbook A_deploy.yml -i inventory.ini
Готово, через несколько минут бот заработает. ✅
Диагностика, если бот не отвечает/падает:
...скоро...
Languages
Python
68.3%
HCL
29.9%
Dockerfile
1.8%