-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 238e474
Showing
522 changed files
with
44,821 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
test: | ||
exit |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 ссылку на задеплоенное приложение |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.