Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Домашнее задание к занятию "7.1. Инфраструктура как код"

Задача 1. Выбор инструментов.

Легенда

Через час совещание на котором менеджер расскажет о новом проекте. Начать работу над которым надо будет уже сегодня. На данный момент известно, что это будет сервис, который ваша компания будет предоставлять внешним заказчикам. Первое время, скорее всего, будет один внешний клиент, со временем внешних клиентов станет больше.

Так же по разговорам в компании есть вероятность, что техническое задание еще не четкое, что приведет к большому количеству небольших релизов, тестирований интеграций, откатов, доработок, то есть скучно не будет.

Вам, как девопс инженеру, будет необходимо принять решение об инструментах для организации инфраструктуры. На данный момент в вашей компании уже используются следующие инструменты:

  • остатки Сloud Formation,
  • некоторые образы сделаны при помощи Packer,
  • год назад начали активно использовать Terraform,
  • разработчики привыкли использовать Docker,
  • уже есть большая база Kubernetes конфигураций,
  • для автоматизации процессов используется Teamcity,
  • также есть совсем немного Ansible скриптов,
  • и ряд bash скриптов для упрощения рутинных задач.

Для этого в рамках совещания надо будет выяснить подробности о проекте, что бы в итоге определиться с инструментами:

  1. Какой тип инфраструктуры будем использовать для этого проекта: изменяемый или не изменяемый?
  2. Будет ли центральный сервер для управления инфраструктурой?
  3. Будут ли агенты на серверах?
  4. Будут ли использованы средства для управления конфигурацией или инициализации ресурсов?

В связи с тем, что проект стартует уже сегодня, в рамках совещания надо будет определиться со всеми этими вопросами.

В результате задачи необходимо

  1. Ответить на четыре вопроса представленных в разделе "Легенда".
  2. Какие инструменты из уже используемых вы хотели бы использовать для нового проекта?
  3. Хотите ли рассмотреть возможность внедрения новых инструментов для этого проекта?

Если для ответа на эти вопросы недостаточно информации, то напишите какие моменты уточните на совещании.

Ответ

На начальном этапе в тестовой зоне предлагаю использовать изменяемый тип тип инфраструктуры, т.к. ТЗ не четкое, кол-во релизов будет стремиться к бесконечности. Тем не менее, при налаженных инструментах автоматизации развертывании инфраструктуры с VM из Packer образа и сборку образа, я бы рекомендовал использовать именно его, т.к. при масташабировании это исключит дрейф конфигурации. Если тайминг проекта позволяет, данную автоматизацию стоит настроить уже сейчас и двигатся в сторону не изменяемой инфры. Судя по легенде данный инструмент есть, это Teamcity. Вопрос настроена ли автомаизация? Уточнить это на совещании. Соответсвенно, из инструментов управления конфигурацией лучше использовать Terraform + Packer. Сервис на Docker контейнерах, оркестрация Kubernetes. Все инструменты уже используются в компании и относительно давно, ничего нового не потребуется.

Центрального сервера для управдения инфраструктурой технически не требуется, т.к. для использования инструментов выше в нем необходимости нет. Важно, чтобы была единая точка входа для управления инфрой и это должен быть единый репозиторий конфигураций.

Агенты на серверах если и потребуются, то только для мониторинга (например агент zabbix). Уточнить на совещании, какие планируются использовать средства мониторинга и достаточно ли средств мониторинга облачного провайдера (если сервис разворачивается в облаке).

Задача 2. Установка терраформ.

Официальный сайт: https://www.terraform.io/

Установите терраформ при помощи менеджера пакетов используемого в вашей операционной системе. В виде результата этой задачи приложите вывод команды terraform --version.

Ответ

Установку выполнял из архива по понятным причинам.

vagrant@server1:~$ sudo unzip /vagrant/terraform_1.1.8_linux_amd64.zip -d /usr/local/bin/
Archive:  /vagrant/terraform_1.1.8_linux_amd64.zip
  inflating: /usr/local/bin/terraform  
vagrant@server1:~$ terraform --version
Terraform v1.1.8
on linux_amd64

Задача 3. Поддержка легаси кода.

В какой-то момент вы обновили терраформ до новой версии, например с 0.12 до 0.13. А код одного из проектов настолько устарел, что не может работать с версией 0.13. В связи с этим необходимо сделать так, чтобы вы могли одновременно использовать последнюю версию терраформа установленную при помощи штатного менеджера пакетов и устаревшую версию 0.12.

В виде результата этой задачи приложите вывод --version двух версий терраформа доступных на вашем компьютере или виртуальной машине.

Ответ

Старый терраформ установил в домашнюю директорию ~/terraform_0.15. Процесс установки такой же как в п2.

vagrant@server1:~/terraform_0.15$ terraform --version
Terraform v1.1.8
on linux_amd64

vagrant@server1:~/terraform_0.15$ ~/terraform_0.15/terraform --version
Terraform v0.15.5
on linux_amd64

Your version of Terraform is out of date! The latest version
is 1.1.8. You can update by downloading from https://www.terraform.io/downloads.html