Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
lov3catch committed Dec 26, 2021
0 parents commit 238e474
Show file tree
Hide file tree
Showing 522 changed files with 44,821 additions and 0 deletions.
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
exercises/*/.cache
.DS_Store
.idea
exercises/terraform/.terraform
exercises/app/terraform/.terraform
exercises/vagrant/.vagrant
exercises/vagrant/node_modules
exercises/12-factors/app/.cache
exercises/12-factors/app/.tmp
exercises/12-factors/app/build
45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
Hexlet. DevOps для разработчиков.
---
[Ссылка на курс](https://ru.hexlet.io/my/learning?ref=44181)

## Автоматизация окружения
- Инфраструктура как код
- Изоляция окружения с помощью Vagrant
- Автоматизация локального окружения (Ansible)
- Управление секретами и переменными (Ansible Vault)
- Введение в Docker
- Неизменяемая инфраструктура
- Автоматизация сборки проекта (Docker Compose)
- Непрерывная интеграция (Github Actions)
- Docker Registry Hub
- Dotfiles
- Проект: [Упаковка в Docker Compose](https://github.com/lov3catch/devops-for-programmers-project-lvl1)

## Управление инфраструктурой.
- Введение в облака (GCP, AWS, DO)
- Автоматизация развертывания кластера (Terraform)
- Настройка машин (Ansible)
- Подготовка образов (Packer)
- Балансировка на уровне DNS
- Быстрая отдача статики через CDN
- База данных как сервис
- Безопасность (Ключи, порты, сети, бастион, vpn)
- Разработка на удаленных машинах
- Проект: [Деплой Docker-образов с помощью Ansible](https://github.com/lov3catch/devops-for-programmers-project-lvl2)

## Деплой и эксплуатация.
- Принципы 12 факторов
- Деплой с помощью Ansible
- Основы Kubernetes
- Масштабируемая архитектура (DNS, Балансеры, Кластер)
- Релизы: Blue Green, Canary, Rolling
- Stateless vs Stateful
- Управление миграциями
- Zero Downtime Deploy
- Мониторинг и логирование (DataDog)
- Коллекторы ошибок (Rollbar)
- Проект: [Инфраструктура как код](https://github.com/lov3catch/devops-for-programmers-project-lvl3)




2 changes: 2 additions & 0 deletions exercises/12-factors/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
test:
exit
47 changes: 47 additions & 0 deletions exercises/12-factors/README.html

Large diffs are not rendered by default.

24 changes: 24 additions & 0 deletions exercises/12-factors/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 12 факторов

Методология двенадцати факторов может быть применена для приложений, написанных на любом языке программирования и использующих любые комбинации сторонних служб (backing services) (базы данных, очереди сообщений, кэш-памяти, и т.д.).

Если разработчики придерживаются принципами 12 факторов, то разрабатываемые приложения проще разворачивать, масштабировать и мониторить.

В этом задании необходимо будет научиться запускать приложение на разных окружения. В качестве приложения будет использоваться
[strapi](https://github.com/strapi/strapi). В качестве продакшен-окружения - [Heroku](https://heroku.com/). Само приложение будет конфигурироваться переменными окружения в соответствии с методологией 12 факторов.

## Ссылки

* [The Twelve-Factor App](https://12factor.net/)
* [Strapi](https://github.com/strapi/strapi)
* [Quick Start Guide](https://strapi.io/documentation/developer-docs/latest/getting-started/quick-start.html)
* [Getting Started on Heroku with Node.js](https://devcenter.heroku.com/articles/getting-started-with-nodejs)
* [Конфигурация Strapi](https://strapi.io/documentation/developer-docs/latest/setup-deployment-guides/configurations.html)
* [Deployment Strapi app to Heroku](https://strapi.io/documentation/developer-docs/latest/setup-deployment-guides/deployment/hosting-guides/heroku.html)

## Задачи

* Создайте в директории *app* приложение Strapi согласно [документации](https://strapi.io/documentation/developer-docs/latest/getting-started/quick-start.html#_1-install-strapi-and-create-a-new-project)
* Установите [Heroku Cli](https://devcenter.heroku.com/articles/heroku-cli)
* Задеплойте приложение с помощью heroku cli. Убедитесь, что приложение конфигурируется с помощью переменных окружения
* Когда будете отправлять задание на проверку, то укажите в issue ссылку на задеплоенное приложение
141 changes: 141 additions & 0 deletions exercises/12-factors/TUTORIAL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Домашние задания по DevOps

Этот туториал раскрывает основные темы, необходимые для комфортного обучения на Хекслете:

* [Как учиться эффективно](#как-учиться-эффективно)
* [Настройка окружения](#настройка-окружения)
* [Структура домашних заданий](#структура-домашних-заданий)
* [Пример решения домашнего задания](#решаем-vagrant)
* [Как отправить на проверку](#отправляем-на-проверку)

## Как учиться эффективно

Учебные материалы на Хекслете построены таким образом, чтобы студентам не понадобилось ничего гуглить, а темы для самостоятельного изучения даются дополнительными ссылками в теории или практике. Домашние задания также основаны на предыдущих уроках, поэтому если пройденного ранее материала недостаточно для решения задачи — это наша вина. Напишите об этом в канале группы и оповестите куратора. Он передаст это в методический отдел, а мы улучшим описание задачи и расширим теорию.

### Текст домашнего задания

Текст домашнего задания всегда описывает задачу и несколько требований по её решению. Каждая практика - это закрепление пройденной темы теми подходами, которые уже знакомы студенту. В тексте домашнего задания обычно есть *основное* задание и *дополнительное*.

*Дополнительные задания* необходимы, чтобы глубже погрузиться в тему и ориентированы в первую очередь на тех, кому основное задание показалось слишком простым. Старайтесь выполнять основное задание вовремя, а к дополнительным можно возвращаться позже, когда будет время.

### Если вы не знаете что дальше делать

При решении задач нормально испытывать сложности в поиске решения, экспериментировать отлаживать. Этот чек-лист поможет лучше понять задачу:

* Изучите все файлы упражнения. Они дадут представление об архитектуре кода и способах его запуска.
* При наличии тестов, запустите их. Текст ошибки покажет, что ожидалось и что получилось.
* При наличии кода, используйте [отладочную печать](https://help.hexlet.io/ru/articles/111500-kak-nayti-oshibki-v-kode). Она поможет увидеть результаты выполнения кода по шагам.

Когда вы застряли и **в течение часа** не можете сдвинуться с места, не видите вариантов решения или не можете справиться с ошибкой, поищите в чате вопросы других студентов или создайте напишите вопрос в чат сами. Если вопросы касаются кода, прикрепляйте в тред ссылки, а не куски кода. При составлении вопроса опирайтесь на наш гайд ["Как правильно задавать вопросы"](https://help.hexlet.io/ru/articles/111495-kak-pravilno-zadavat-voprosy).

### Статьи об обучении на Хекслете

* Статья [«Как учиться и справляться с негативными мыслями»](https://guides.hexlet.io/learning)
* Статья [«Ловушки обучения»](https://ru.hexlet.io/blog/posts/traps-learning)
* Статья [«Сложные простые задачи по программированию»](https://ru.hexlet.io/blog/posts/slozhnye-prostye-zadachi-po-programmirovaniyu)
* Урок [«Как эффективно учиться на Хекслете»](https://ru.hexlet.io/courses/introduction_to_programming/lessons/hexlet-flow/theory_unit)
* Вебинар [«Как самостоятельно учиться»](https://www.youtube.com/watch?v=dCYZppVgGww)

## Домашнее задание

### Настройка окружения

Для решения домашних заданий на компьютере должно быть подготовлено рабочее окружения исходя из темы урока.
Для скачивания и отправки домашних заданий используется утилита [hexlet/cli](https://github.com/Hexlet/cli).

### Структура домашних заданий

Изучим структуру каталога *exercises* с домашним заданием *Vagrant*:

```text
vagrant
├── Makefile
├── presentation.pdf
├── README.md
└── TUTORIAL.md <-- мы здесь
```

* На верхнем уровне README содержит текст задачи. Здесь описывается что нужно сделать
* *Makefile* содержит некоторые команды запуска, которые можно добавить, а также тесты
* *presentation.pdf* - файл с презентацией, которая была на вебинаре. Иногда презентации обновляются, повторная загрузка упражнения позволит получить свежую версию.

### Решаем "Vagrant"

Для выполнения задания требуется установленный [Vagrant](https://www.vagrantup.com/).

#### Шаг 1: Запустим тесты без готового решения

Используйте Make для запуска тестов:

```sh
make test
```

Эта команда запустит проверку решения и выдаст ошибку, подобную такой:

```sh
$ make test
# Makefile:2: recipe for target 'test' failed
# make: *** [test] Error 1
```

#### Шаг 2: Пишем решение

В зависимости от домашнего задания нам может потребоваться создать определенные файлы или записать решение в виде кода.

Если необходимо написать какой-то код, то его нужно размещать между маркерами *BEGIN* и *END*. Например:


# END
up:
vagrant up
```
Но в нашем упражнении требуется создать файл с именем _Vagrantfile_
```sh
touch Vagrantfile
# Записываем текст внутрь файла
echo "
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
config.vm.provision 'setup', type: 'shell', path: 'setup.sh'
end
" > Vagrantfile
```

Запустим тесты еще раз

```sh
$ make test
# Makefile:2: recipe for target 'test' failed
# make: *** [test] Error 1
```

#### Шаг 3: Изучим тесты

Содержимое команды `make test` говорит о том, что запускается проверка версии Vagrant и проверяется наличие файла *Vagrantfile*

```makefile
test:
vagrant -v
test -e Vagrantfile || exit
```

Поправим имя файла и запустим тесты повторно на проверку.

```sh
mv Vagrantfile Vagrantfile
make test
# vagrant -v
# Vagrant 2.2.15
# test -e Vagrantfile || exit
```

Готово, тесты пройдены! Теперь можно сдавать домашнюю работу.

### Отправляем на проверку

Используя команду *submit* из [hexlet/cli](https://github.com/Hexlet/cli), отправляем своё решение в Gitlab. Там оно пройдёт проверку автоматической системой. При её успешно завершении можно запрашивать проверку у своего наставника.

Подробнее этот процесс описан в [статье в Notion](https://www.notion.so/hexlet/780f724542b14ecb883a6ebf8ea6e54e#041a70d9e70243d3b4773fa751c3c0fa).
Binary file added exercises/12-factors/presentation.pdf
Binary file not shown.
Binary file added exercises/12-factors/script.pdf
Binary file not shown.
Binary file added exercises/12-factors/slides.pdf
Binary file not shown.
10 changes: 10 additions & 0 deletions exercises/advanced-deploy/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
test:
test -s solution

# BEGIN
ansible-install-roles:
cd run && ansible-galaxy install -r requirements.yml

ansible-deploy:
cd run && ansible-playbook playbook.yml
# END
Loading

0 comments on commit 238e474

Please sign in to comment.