mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 15:22:37 +03:00
add homework 7.1
This commit is contained in:
111
src/homework/07-terraform/7.1/readme.md
Normal file
111
src/homework/07-terraform/7.1/readme.md
Normal file
@@ -0,0 +1,111 @@
|
||||
Выполнение [домашнего задания](https://github.com/netology-code/virt-homeworks/blob/master/07-terraform-01-intro/README.md)
|
||||
по теме "7.1. Инфраструктура как код".
|
||||
|
||||
## Q/A
|
||||
|
||||
### Задание 1
|
||||
|
||||
> #### Легенда
|
||||
>
|
||||
> Через час совещание на котором менеджер расскажет о новом проекте. Начать работу над которым надо будет уже сегодня.
|
||||
> На данный момент известно, что это будет сервис, который ваша компания будет предоставлять внешним заказчикам.
|
||||
> Первое время, скорее всего, будет один внешний клиент, со временем внешних клиентов станет больше.
|
||||
>
|
||||
> Так же по разговорам в компании есть вероятность, что техническое задание еще не четкое, что приведет к большому
|
||||
> количеству небольших релизов, тестирований интеграций, откатов, доработок, то есть скучно не будет.
|
||||
>
|
||||
> Вам, как девопс инженеру, будет необходимо принять решение об инструментах для организации инфраструктуры.
|
||||
> На данный момент в вашей компании уже используются следующие инструменты:
|
||||
> - остатки Сloud Formation,
|
||||
> - некоторые образы сделаны при помощи Packer,
|
||||
> - год назад начали активно использовать Terraform,
|
||||
> - разработчики привыкли использовать Docker,
|
||||
> - уже есть большая база Kubernetes конфигураций,
|
||||
> - для автоматизации процессов используется Teamcity,
|
||||
> - также есть совсем немного Ansible скриптов,
|
||||
> - и ряд bash скриптов для упрощения рутинных задач.
|
||||
>
|
||||
> Для этого в рамках совещания надо будет выяснить подробности о проекте, что бы в итоге определиться с инструментами:
|
||||
>
|
||||
> 1. Какой тип инфраструктуры будем использовать для этого проекта: изменяемый или не изменяемый?
|
||||
> 1. Будет ли центральный сервер для управления инфраструктурой?
|
||||
> 1. Будут ли агенты на серверах?
|
||||
> 1. Будут ли использованы средства для управления конфигурацией или инициализации ресурсов?
|
||||
>
|
||||
> В связи с тем, что проект стартует уже сегодня, в рамках совещания надо будет определиться со всеми этими вопросами.
|
||||
>
|
||||
> #### В результате задачи необходимо
|
||||
>
|
||||
> 1. Ответить на четыре вопроса представленных в разделе "Легенда".
|
||||
> 1. Какие инструменты из уже используемых вы хотели бы использовать для нового проекта?
|
||||
> 1. Хотите ли рассмотреть возможность внедрения новых инструментов для этого проекта?
|
||||
>
|
||||
> Если для ответа на эти вопросы недостаточно информации, то напишите какие моменты уточните на совещании.
|
||||
|
||||
* Ответить на четыре вопроса представленных в разделе "Легенда".
|
||||
1. Какой тип инфраструктуры будем использовать для этого проекта: изменяемый или не изменяемый?
|
||||
|
||||
Для ответа на данный вопрос недостаточно данных о требованиях к новому проекту со стороны безопасности.
|
||||
Если на совещании можно это выяснить, то будет два варианта: если требования к безопасности выставляются в рамках расширенных требований по типу `PCI DSS`,
|
||||
то будет использоваться не изменяемый тип инфраструктуры, иначе - изменяемый.
|
||||
|
||||
2. Будет ли центральный сервер для управления инфраструктурой?
|
||||
|
||||
Так как на текущий момент в инфраструктуре компании не используются решения на базе центрального сервера
|
||||
для управления инфраструктурой, то внедрять данное решение смысла нет. Ответ: нет.
|
||||
|
||||
3. Будут ли агенты на серверах?
|
||||
|
||||
Ответ вытекает из предыдущего вопроса. Если в новом проекте не используется центральный сервер управления,
|
||||
то и в использовании агентов нет необходимости. Ответ: нет.
|
||||
|
||||
4. Будут ли использованы средства для управления конфигурацией или инициализации ресурсов?
|
||||
|
||||
Да, средства будут использованы, так как планируется расширение и необходимо будет разворачивать инфраструктуру
|
||||
для каждого нового внешнего клиента. Плюс, скорее всего, будет необходимость реплицирования
|
||||
и горизонтального расширения сервисов в рамках существующей инфраструктуры.
|
||||
|
||||
|
||||
* Какие инструменты из уже используемых вы хотели бы использовать для нового проекта?
|
||||
|
||||
Точно стоит использовать `terraform` как средство инициализации ресурсов в совокупности с `ansible`.
|
||||
Для стандартизации образов виртуальных машин стоит использовать `packer`.
|
||||
Так как в разработке принято использовать образы `docker`, то для построения инфраструктуры можно задуматься
|
||||
над использованием `kubernetes`.
|
||||
|
||||
В данном случае стоит рассмотреть переход от bash-скриптов к плагинам `ansible` для автоматизации.
|
||||
Либо перенос скриптов на другой, более поддерживаемый и принятый в компании скриптовый язык программирования.
|
||||
|
||||
* Хотите ли рассмотреть возможность внедрения новых инструментов для этого проекта?
|
||||
|
||||
В текущем стеке собраны все инструменты, которые представляют собой best-practice в построении инфраструктуры.
|
||||
Дополнительно, увеличение количества используемых инструментов ведёт к "распылению" знаний, а значит невозможности
|
||||
проведения более глубокой оптимизации процессов для достижения главной цели - уменьшения TTM.
|
||||
|
||||
### Задание 2
|
||||
|
||||
> Официальный сайт: https://www.terraform.io/
|
||||
>
|
||||
> Установите терраформ при помощи менеджера пакетов используемого в вашей операционной системе.
|
||||
> В виде результата этой задачи приложите вывод команды `terraform --version`.
|
||||
|
||||
```shell
|
||||
terraform --version
|
||||
Terraform v1.2.3
|
||||
on linux_amd64
|
||||
```
|
||||
|
||||
## Задача 3. Поддержка легаси кода.
|
||||
|
||||
> В какой-то момент вы обновили терраформ до новой версии, например с 0.12 до 0.13.
|
||||
> А код одного из проектов настолько устарел, что не может работать с версией 0.13.
|
||||
> В связи с этим необходимо сделать так, чтобы вы могли одновременно использовать последнюю версию терраформа установленную при помощи
|
||||
> штатного менеджера пакетов и устаревшую версию 0.12.
|
||||
>
|
||||
> В виде результата этой задачи приложите вывод `--version` двух версий терраформа доступных на вашем компьютере
|
||||
> или виртуальной машине.
|
||||
|
||||
Для примера были взяты актуальная версия `1.2.3` и последняя доступная на официальном сайте версия из линейки `1.0.x`: `1.0.11`.
|
||||
Другие версии можно собрать из [source codes](https://github.com/hashicorp/terraform).
|
||||
|
||||

|
||||
BIN
src/homework/07-terraform/7.1/terraform_versions.png
Normal file
BIN
src/homework/07-terraform/7.1/terraform_versions.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
Reference in New Issue
Block a user