###### tags: `netology` `devops` # Домашнее задание к занятию "7.1. Инфраструктура как код" ## Задача 1. Выбор инструментов. 1. Какой тип инфраструктуры будем использовать для этого проекта: изменяемый или не изменяемый? 2. Будет ли центральный сервер для управления инфраструктурой? 3. Будут ли агенты на серверах? 4. Будут ли использованы средства для управления конфигурацией или инициализации ресурсов? --- ### В результате задачи необходимо 1. Ответить на четыре вопроса представленных в разделе "Легенда". 2. Какие инструменты из уже используемых вы хотели бы использовать для нового проекта? 3. Хотите ли рассмотреть возможность внедрения новых инструментов для этого проекта? ### Ответ: Попробую ответить на все вопросы сразу))) Чаще всего решение подобных вопросов упирается не в сравнение технологий, а в наличие экспертизы внутри команды. Нельзя однозначно сказать что тот или иной подход буду лучше в описаной в условии задачи, тем более оптсание слишком поверхностное. Возможно, во мне говорит профессиональная деформация разработчика))) Допустим, с помощью наводящих вопросов мы выяснили у заказчика, что нам больше подходит микросервисная архитектура, и оно удачно упаковывается в имеющиеся инструменты/экспертизу. Тогда я бы выбрал неизменяемую архитектуру, поднимал облако средствами кубера внутри амазоновского кластера. Разворачивал нужные мне инстансы средствами Terraform. Тогда пока проект маленьки (один клиент), мы можем держать маленькое облако, если клиентов станет больше и/или нагрузка начнет расти, мы можем развернуть больше мощностей. Что оставить из имеющегося надо смотреть по обстоятельствам. Точно берем Kubernetes и Terraform, если уже есть TeamCity, то пусть остается. По поводу Ansible, Packer и 'полезных скриптов', надо смотреть, возможно какая-то из конфигураций совместного использования этих инструментов (в том числе представленных в презентации), может нам подойти. Особенно с учетом того, что нам придется решать проблемы локальной разработки: разворачивать облака локально - то еще удовольствие. ## Задача 2. Установка терраформ. *Установите терраформ при помощи менеджера пакетов используемого в вашей операционной системе.* ```bash= > terraform --version Terraform v0.14.6 ``` ## Задача 3. Поддержка легаси кода. *В какой-то момент вы обновили терраформ до новой версии, например с 0.12 до 0.13. А код одного из проектов на столько устарел, что не может работать с версией 0.13. В связи с этим необходимо сделать так, чтобы вы могли одновременно использовать последнюю версию терраформа установленную при помощи штатного менеджера пакетов и устаревшую версию 0.12.* - находим интересующую нас версию - скачиваем ее: `wget https://releases.hashicorp.com/terraform/0.12.30/terraform_0.12.30_linux_amd64.zip` - распаковываем: `unzip terraform_0.12.30_linux_amd64.zip` - чтоб выполнять где угодно можем сделать так: `mv terraform .local/bin/tf12` - проверяем: ```bash= > terraform --version Terraform v0.14.6 > tf12 --version Terraform v0.12.30 ```