SkillfactoryCodingTeam / devops__project__automation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Практика по автоматизации

Общие правила

Чтобы наша совместная работа была эффективной, следует придерживаться правил:

  1. Весь исходный код мы храним на гитхабе. Результаты показываем тоже на гитхабе

  2. Кодировка для всех файлов: UTF-8

  3. Чтобы показать ошибку используйте сниппеты (в слаке, на пейстбине или файлом). Без скриншотов кода

  4. Логи передаем обычными файлами

  5. Для архивов используем форматы tar.gz или zip. Не используем форматы типа rar, 7z и прочие на них похожие

  6. При оформлении кода, используем пробелы в качестве отступов (не более 4-х). Исключение: табы в Makefile

  7. Документацию оформляем по-умолчанию в формате Markdown

  8. Длина строк кода от 80 до 120 символов

  9. Linux дистрибутив (для сервера в том числе): Ubuntu не ниже 16.04. Windows: не ниже десятки. MacOS: не ниже Mojave 10.14

  10. Не размещайте пароли, ключи, токены и информацию о девичьей фамилии матери в публичном репозитории без шифрования

Что потребуется для выполнения

Инструменты: git, ssh, docker, wget, make, cron

Аккаунты: GitHub. Дополнительно: любой хостинг VPS

Задание

Саймон Тэтхем когда-то давно опубликовал статью «Как эффективно сообщать об ошибках». Статья решили сделать частью руководства для разработчиков. Да вот беда: разработчики трудятся над проектом, который нельзя никому показывать. К тому же, их закрыли в одном помещении без возможности ходить в интернет — у них есть только локалка, зато гигабитная и анлим. Документацию они получают в виде статических зеркал, которые запускаются на сервере в их комнате.

Та самая статья: https://www.chiark.greenend.org.uk/~sgtatham/bugs-ru.html

Ваша роль: автоматизатор.

С помощью wget необходимо делать зеркало всех языковых версий статьи, упаковывать в docker-контейнер, который будет деплоиться на местный сервер, где у разработчиков хранится документация.

Представим, что статьи обновляются раз в неделю. Нужно добавить настройку crontab, которая будет запускать обновление зеркала раз в неделю по субботам в три утра сорок пять минут.

Все операции должны быть представлены в виде Makefile, чтобы можно было запускать отдельные задачи выполнив, например, make sync — для запуска обновления зеркала, make deploy — для развертывания контейнера на целевом сервере.

Т. к. скоро вы планируете уйти в отпуск на 2 месяца, весь процесс нужно задокументировать, чтобы ваш сменщик мог без проблем поддерживать код автоматизации и дорабатывать его.

Руководствуясь принципом Everything as Code, решите поставленную задачу.

Важно: данные статьи не должны быть в репозитории.

Дополнительные задания со звездочкой

  • Напишите операции для сихнронизации отдельных языковых версий статьи.
  • Отделите данные от сервиса, чтобы хостить получившееся зеркало
  • Придумайте альтернативный вариант реализации задачи, который исключает использование Docker

About