# Цитатный телеграмм бот с авторазвёртыванием. :robot: ## 🛠 Под капотом (Стек технологий) Этот проект создавался в том числе для практики современных DevOps-инструментов. Здесь реализован полноценный автоматизированный пайплайн развертывания: * **Terraform + Yandex Cloud:** Используется концепция Infrastructure as Code (IaC) для автоматического создания виртуальных машин, настройки сети и дисков в облаке. * **Docker:** Приложение упаковано в контейнер, что решает проблему с зависимостями и позволяет легко запускать бота на любом сервере. * **Ansible:** Автоматизирует настройку чистого сервера. Плейбук сам устанавливает Docker (если его нет), настраивает окружение и запускает контейнер. * **GitLab CI/CD:** Готовый пайплайн (`.gitlab-ci.yml`), который прогоняет тесты, собирает Docker-образ с помощью Kaniko, пушит его в Docker Hub и автоматически запускает Ansible-плейбук для деплоя на боевой сервер. --- ### Что умеет данный бот? * Отправлять рандомную цитату по запросу ``` /quote ``` * По команде ``` /stats ``` показывать, сколько цитат в базе есть на данный момент. ### Возможности для администратора: :gear: * Добавлять новые цитаты командой ``` /add <текст цитаты> ``` ## Как это развернуть? :rocket: ### Вам понадобится: * Зарубежный Linux сервер на Ubuntu или Debian. * Токен вашего телеграмм бота. Можно получить здесь: [BotFather](https://t.me/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 `. Удалите оттуда всю информацию и добавьте следующее ( :warning: не забудьте поменять данные на свои): ``` [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` ### Готово, через несколько минут бот заработает. :white_check_mark: *** *** *** ## Диагностика, если бот не отвечает/падает: ...скоро...