From 7f4f3b2701b16c430cd4a353902d35c253a327b6 Mon Sep 17 00:00:00 2001 From: Denis Savosin Date: Thu, 16 Jun 2022 13:28:52 +0700 Subject: [PATCH] add homework 7.1 --- readme.md | 1 + src/homework/07-terraform/7.1/readme.md | 111 ++++++++++++++++++ .../07-terraform/7.1/terraform_versions.png | Bin 0 -> 28842 bytes 3 files changed, 112 insertions(+) create mode 100644 src/homework/07-terraform/7.1/readme.md create mode 100644 src/homework/07-terraform/7.1/terraform_versions.png diff --git a/readme.md b/readme.md index 05519ec..4bd1b61 100644 --- a/readme.md +++ b/readme.md @@ -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) diff --git a/src/homework/07-terraform/7.1/readme.md b/src/homework/07-terraform/7.1/readme.md new file mode 100644 index 0000000..47c37ed --- /dev/null +++ b/src/homework/07-terraform/7.1/readme.md @@ -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) diff --git a/src/homework/07-terraform/7.1/terraform_versions.png b/src/homework/07-terraform/7.1/terraform_versions.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8e0834e04ead873e040f512a53c4cee9cebada GIT binary patch literal 28842 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 MKJYc|tK(