add homework 7.1

This commit is contained in:
2022-06-16 13:28:52 +07:00
parent 2ef3469443
commit 7f4f3b2701
3 changed files with 112 additions and 0 deletions

View File

@@ -30,3 +30,4 @@
* [6.4. PostgreSQL](/src/homework/06-database/6.4)
* [6.5. Elasticsearch](/src/homework/06-database/6.5)
* [6.6. Troubleshooting](/src/homework/06-database/6.6)
* [7.1. Инфраструктура как код](/src/homework/07-terraform/7.1)

View 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).
![terraform_versions](./terraform_versions.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB