Compare commits
9
Commits
187c2bcc1b
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b0783581f | ||
|
|
36763e28fa | ||
|
|
a48841be07 | ||
|
|
48790e1071 | ||
|
|
15c6a21c7b | ||
|
|
4b3413d403 | ||
|
|
7393fdeee0 | ||
|
|
aff2838a95 | ||
|
|
0d60bb1b67 |
+1
-1
@@ -49,7 +49,7 @@ deploy_to_server:
|
|||||||
- chmod 600 ~/.ssh/id_ed25519
|
- chmod 600 ~/.ssh/id_ed25519
|
||||||
- ansible-galaxy collection install community.docker
|
- ansible-galaxy collection install community.docker
|
||||||
script:
|
script:
|
||||||
- echo "BOT_TOKEN=$BOT_TOKEN" > .env
|
- echo "TOKEN=$BOT_TOKEN" > .env
|
||||||
- echo "ADMIN_IDS=$ADMIN_ID_TG" >> .env
|
- echo "ADMIN_IDS=$ADMIN_ID_TG" >> .env
|
||||||
- cd auto-deployment/
|
- cd auto-deployment/
|
||||||
- ansible-playbook -i inventory.ini A_deploy.yml --extra-vars "image_tag=$CI_COMMIT_SHORT_SHA"
|
- ansible-playbook -i inventory.ini A_deploy.yml --extra-vars "image_tag=$CI_COMMIT_SHORT_SHA"
|
||||||
|
|||||||
@@ -1,28 +1,38 @@
|
|||||||
# Цитатный телеграмм бот с авторазвёртыванием.
|
# Цитатный телеграмм бот с авторазвёртыванием. :robot:
|
||||||
|
|
||||||
|
## 🛠 Под капотом (Стек технологий)
|
||||||
|
Этот проект создавался в том числе для практики современных DevOps-инструментов. Здесь реализован полноценный автоматизированный пайплайн развертывания:
|
||||||
|
|
||||||
|
* **Terraform + Yandex Cloud:** Используется концепция Infrastructure as Code (IaC) для автоматического создания виртуальных машин, настройки сети и дисков в облаке.
|
||||||
|
* **Docker:** Приложение упаковано в контейнер, что решает проблему с зависимостями и позволяет легко запускать бота на любом сервере.
|
||||||
|
* **Ansible:** Автоматизирует настройку чистого сервера. Плейбук сам устанавливает Docker (если его нет), настраивает окружение и запускает контейнер.
|
||||||
|
* **GitLab CI/CD:** Готовый пайплайн (`.gitlab-ci.yml`), который прогоняет тесты, собирает Docker-образ с помощью Kaniko, пушит его в Docker Hub и автоматически запускает Ansible-плейбук для деплоя на боевой сервер.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### Что умеет данный бот?
|
### Что умеет данный бот?
|
||||||
* Отправлять рандомную цитату по запросу ``` /quote ```.
|
* Отправлять рандомную цитату по запросу ``` /quote ```
|
||||||
* По команде ``` /stats ``` показывать, сколько цитат в базе есть на данный момент.
|
* По команде ``` /stats ``` показывать, сколько цитат в базе есть на данный момент.
|
||||||
|
|
||||||
### Возможности для администратора:
|
### Возможности для администратора: :gear:
|
||||||
* Добавлять новые цитаты командой ``` /add <текст цитаты> ```.
|
* Добавлять новые цитаты командой ``` /add <текст цитаты> ```
|
||||||
|
|
||||||
## Как это развернуть?
|
## Как это развернуть? :rocket:
|
||||||
### вам понадобится:
|
### Вам понадобится:
|
||||||
* Зарубежный Linux сервер на Ubuntu или Debian.
|
* Зарубежный Linux сервер на Ubuntu или Debian.
|
||||||
* Токен вашего телеграмм бота. Можно получить здесь: [BotFather](t.me/BotFather).
|
* Токен вашего телеграмм бота. Можно получить здесь: [BotFather](https://t.me/BotFather)
|
||||||
* У вас должен быть установлен ansible и git на wsl. Если не установлен, то установите командами ` sudo apt install ansible ` и ` sudo apt install git `.
|
* У вас должен быть установлен ansible и git на wsl. Если не установлены, то установите командами ` sudo apt install ansible && sudo apt install git `
|
||||||
|
|
||||||
### Ваши действия для развертывания:
|
### Ваши действия для развертывания:
|
||||||
* Клонируйте репозиторий командой: ` git clone https://github.com/LeoR156/quote-bot `.
|
* Клонируйте репозиторий командой: ` git clone https://github.com/LeoR156/quote-bot `
|
||||||
* Перейдите в папку с ботом командой ` cd quote-bot `
|
* Перейдите в папку с ботом командой ` cd quote-bot `
|
||||||
* Создайте файл ` .env ` и добавте в него данные:
|
* Создайте файл ` .env ` и добавьте в него данные командой ` nano .env `:
|
||||||
```
|
```
|
||||||
TOKEN=your_token_here # Замените на реальный токен
|
TOKEN=your_token_here # Замените на реальный токен
|
||||||
ADMIN_IDS=123456789,987654321 # Напишите свой id или id того аккаунта, с которого будет осущесвляться добавление цитат. ID может быть несколько, порядок записи в примере.
|
ADMIN_IDS=123456789,987654321 # Напишите свой id или id того аккаунта, с которого будет осуществляться добавление цитат. ID может быть несколько, порядок записи в примере.
|
||||||
```
|
```
|
||||||
* Перейдите в папку ` auto-deployment ` командой ` cd auto-deployment `.
|
* Перейдите в папку ` auto-deployment ` командой ` cd auto-deployment `
|
||||||
* Отредактируйте файл инвентори командой ` nano inventory.ini `. Удалите оттуда всю информацию и добавьте следующее:
|
* Отредактируйте файл инвентори командой ` nano inventory.ini `. Удалите оттуда всю информацию и добавьте следующее ( :warning: не забудьте поменять данные на свои):
|
||||||
|
|
||||||
```
|
```
|
||||||
[server_bot]
|
[server_bot]
|
||||||
@@ -31,6 +41,16 @@ server ansible_host=<ваш_ip> ansible_user=<ваш_пользователь> a
|
|||||||
[all:vars]
|
[all:vars]
|
||||||
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
|
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
|
||||||
```
|
```
|
||||||
|
|
||||||
* Запустите плейбук командой `ansible-playbook A_deploy.yml -i inventory.ini`
|
* Запустите плейбук командой `ansible-playbook A_deploy.yml -i inventory.ini`
|
||||||
|
|
||||||
##### Готово, через несколько минут бот заработает.
|
### Готово, через несколько минут бот заработает. :white_check_mark:
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
## Диагностика, если бот не отвечает/падает:
|
||||||
|
...скоро...
|
||||||
|
|||||||
Reference in New Issue
Block a user