ТЕЛЕГРАМОВИЙ БОТ для підтримки харчових дієт.

віртуальної

Опис та обґрунтування.

Здійснюватиметься телеграм-бот, де зберігаються дієтичні продукти харчування (і, можливо, більше інформації, яка може з’явитися під час них), доданих користувачем зазначеної програми (через додаток, який буде створений пізніше), як визначено за замовчуванням при створенні бот.

Це дозволить як проконсультуватися з повноцінними дієтами, так і мати можливість запам’ятати, яку страву потрібно вибрати, щоб дотримуватися дієти, не більше, ніж, наприклад, взяти слухавку. Буде вивчено можливість додавання рецептів, щоб покращити наші навички на кухні.

Послуги та інструменти.

  1. Використання PostgreSQL як бази даних.
  2. Використання Travis-ci для досягнення безперервної інтеграції та перевірки правильності середовища.
  3. Цей бот побудований на Python 3.5.2.
  4. Для використання та тестування цього бота використовується Telegram API.
  5. Для розгортання нашого бота буде потрібна хмарна служба.

Як вказує один із інструментів, для цього проекту, а в даному випадку Travis-ci, налаштовано постійну інтеграцію.

Ця конфігурація пов'язана з обліковим записом GitHub, на додаток до створення файлу .travis.yml, який вказує все необхідне для налаштування тесту проекту.

Для того, щоб Тревіс налаштував наш проект для проведення тестів, був створений файл make. Цей файл містить таку інформацію:

install: pip install -r requirements.txt

тест: cd botDietas && pytest

запустити: cd botDietas && python bot_dietas.py

## Розгортання в PASS.

Для цього етапу я створив обліковий запис на Heroku, і це був перший крок для налаштування розгортання.

Пізніше я створив додаток із відповідною базою даних (з PostgreSQL) із командами героку створити Y heroku addons: створити heroku-postgresql: hobby-dev --app botdietas, Botdietas - назва попередньо створеної програми. Для того, щоб створити це без помилок, необхідно увійти в наш акаунт за допомогою команди Увійти в систему.

Після створення програми та БД необхідно синхронізувати її з GitHub та сховищем, де ми розробляємо додаток, щоб мати можливість використовувати цю конфігурацію пізніше.

А також, як це видно на наступному скріншоті, ми повинні зробити так, щоб розгортання програми відбувалося автоматично, але вже пройшовши через Travis-CI.

Наступне - це встановити змінні середовища як на Travis-CI, так і на Heroku. Ми повинні встановити в якості змінних середовища облікові дані бази даних, створеної в Heroku та Token бота Telegram.

Крім того, щоб Heroku знав, що виконувати, ми повинні створити файл під назвою Procfile із таким вмістом:

працівник: python botDietas/bot_dietas.py

І, нарешті, для оприлюднення версії Python, над якою ми працюємо, ми створюємо файл runtime.txt, де потрібно буде лише додати наступне:

А тепер, щоб закінчити, наш додаток запускається за допомогою команди:

heroku ps: масштаб робочого = 1 --app botdietas

Ми бачимо, що програма працює належним чином, отримуючи доступ до журналів, наданих Heroku, з терміналу або з веб-сторінки.

Якщо ми заходимо з веб-сторінки, ми маємо щось подібне:

Після цього залишається лише отримати доступ до Telegram за допомогою бота "@DietasBot", щоб перевірити його роботу.

Тестове середовище.

Я зробив цю конфігурацію та цей етап на Ubuntu, тому установка вже була виконана вправами, що відповідають тій самій темі.

Першими проведеними тестами були місцеві тести, і їх кроки були наступними.

  • Створіть файл Docker.

В основному, інформація, що передається у файл, - це операційна система, яку слід використовувати, змінні середовища та аргументи, які будуть передані до виконання контейнера, і те, що потрібно встановити.

Після створення ми переходимо до встановлення контейнера за допомогою команди sudo docker build -t dietsbot ./, де dietasbot - назва контейнера. Ми повинні мати на увазі, що ми повинні використовувати цю команду в папці, де знаходиться файл Dockerfile, про який ми вже говорили раніше.

Тепер ми повинні перевірити, чи можемо ми отримати доступ до цього контейнера за допомогою наступного рядка:

запуск докера -e "DATABASE_URL = XXX" -e "HOST_BD = XXXX" -e "NAME_BD = XXXX" -e "PW_BD = XXXX" -e "TOKENBOT = XXXX" -e "USER_BD = XXXX" -i -t dietasbot/bin/bash

Параметри, які слід використовувати, - це ті облікові дані, що відповідають базі даних Heroku, яку ми використовували в попередніх конфігураціях, та параметру бота, який ми розробляємо. Якщо все працювало належним чином, ми можемо перейти до конфігурації Docker на Docker Hub.

  • Наступним кроком є ​​синхронізація нашого облікового запису Git Hub з уже створеним обліковим записом Docker Hub і створення сховища.

  • Після цього, після того, як ми перенесли файл Dockerfile в наше сховище Git Hub і він буде оновлений, сховище Docker Hub розпочне свою "Конструкцію" і перевірить його правильну роботу.

  • А тепер, щоб завантажити, вам просто потрібно скористатися докер тягне mmaribanhez/botdiets, ця інформація є тим, що ми можемо отримати з самого сховища.

Тут ми бачимо, як наше завантаження відображається у сховищах нашої системи.

## Розробка віртуальної підтримки для розгортання програми.

У цьому випадку ми налаштували все необхідне для автоматичного розгортання на виробничих платформах.

З усіх можливостей я використовував Vagrant, Azure, Ansible, Fabric та Supervisor. Звичайно, перед тим, як почати пояснювати все, що я зробив, я коротко пояснюю, що таке кожен із цих інструментів.

Бродяга: Інструмент, призначений для створення та налаштування віртуалізованих середовищ розробки. Для того, щоб використовувати його, ми повинні встановити VirtualBox, можливість встановити його за наступним посиланням .

Лазурний: Інструмент, що забезпечує кероване середовище для виконання та розгортання програм та служб у хмарі.

Відповідальний: Інструмент, який дозволяє чітко та просто керувати конфігураціями, забезпеченням ресурсами, автоматичним розгортанням додатків та багатьма іншими ІТ-завданнями.

Тканина: Бібліотека Python, яка дозволяє впорядковувати завдання як на локальній машині, так і на віддаленій машині, так що ми можемо виконати розгортання без використання ssh.

Керівник: Диспетчер процесів для Linux.

Кроки для розгортання.

Як уже було зазначено, ми повинні встановити VirtualBox і при необхідності ми можемо використовувати наступне:

Тепер ми встановлюємо як Vagrant, так і плагін azure для Vagrant та Azure CLI.

Наступним кроком ми знаходимо конфігурацію файлу Vagrantfile, це файл, який визначатиме нашу віртуальну машину для розгортання.

Це наступне, маючи змогу побачити це за наступним посиланням та нижче:

Ми також повинні знати, що оголошені змінні середовища були вказані у допоміжному файлі, який називається .env і що з міркувань безпеки не було завантажено до цього сховища.

Деякі із зазначених змінних були, наприклад, назвою нашої машини, зображенням операційної системи або конфігурацією мережі.

Використовуючи vagrant up, ми можемо запустити нашу машину, також зазначивши, що завдяки використанню Ansible ми можемо встановити пакети. В останній частині ми бачимо, що файл називається конфігурація і що за змістом останнього ми встановлюємо всі необхідні пакети для використання нашого додатку.

Зміст такий.

Замовити бродяга вгору --provider = блакитний Він відповідає як за розгортання машини, так і за її забезпечення. Однак існує конкретна команда, яка була б корисною для дії встановлення пакета: бродяжне забезпечення.

Ми також бачимо, що в каталозі цього сховища є ще один файл, який називається ansible.cfg, і це пов'язано з вирішенням помилки, яка виникла з цими останніми конфігураціями.

Після розгортання та забезпечення машини ми повинні спілкуватися з нею та мати можливість віддалено виконувати завдання.

Звичайно, це вимагає попередньої установки. Як ви можете бачити в навчальному посібнику, команда для виконання така:

Хоча ми також можемо використовувати:

Два наші файли втручаються в конфігурацію цього інструменту: внутрішня конфігурація і файл, де ми збираємося визначити всі функції, за допомогою яких ми будемо спілкуватися з машиною та виконувати нашу програму.

Зміст обох таких:

  • Файл Supervisor.conf:
  • Внутрішня конфігурація.

Таким чином визначено, як ми будемо проводити тести нашого додатку, як ми будемо розгортати наш додаток і як ми запускатимемо виконання бота.

Виконання цього інструменту базується на такій команді:

Ось чому виконання на нашій машині тестів, створених у попередніх етапах, полягає в наступному:

Після цього, а також для автоматизації всього процесу, я створив і make-файл, і сценарій для розгортання.

Команди створеного файлу Makefile є наступними:

  • розгортання: Дія з розгортання та забезпечення нашої машини.
  • встановити: Подібно до попередньої дії.
  • бігти: Дія для запуску виконання бота.
  • підзарядка: Дія для перезавантаження налаштованого наглядача.
  • видалити: Дія видалення папки, створеної під час клонування цього сховища на машині Azure.
  • тест: Дія виконання тестів для перевірки правильної роботи нашої машини.

Нарешті, сценарій має лише такий зміст:

Призначення цього сценарію - лише запустити бота, вимагати лише використання команди.