56. Обзор IaC

Обновлено: 2024-03-12
5 мин

Обзор IaC

Люди совершают ошибки! Автоматизация - это путь к успеху!

Как вы строите свои системы сегодня?

Каков был бы ваш план, если бы вы потеряли все, физические машины, виртуальные машины, облачные виртуальные машины, облачные PaaS и т.д. и т.п.?

Сколько времени у вас уйдет на замену всего?

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

TLDR; заключается в том, что мы можем использовать код для восстановления всей нашей среды.

Если мы также вспомним, что с самого начала мы говорили о DevOps в целом - это способ преодоления барьеров для безопасной и быстрой доставки систем в производство.

Infrastructure as code помогает нам поставлять системы, мы говорили о множестве процессов и инструментов. IaC предлагает нам больше инструментов, с которыми мы должны быть знакомы, чтобы обеспечить эту часть процесса.

В этом разделе мы сосредоточимся на инфраструктуре как коде. Вы также можете услышать упоминание этого термина как “инфраструктура из кода” или “конфигурация как код”. Я думаю, что наиболее известным термином является Инфраструктура как код.

Домашние животные против крупного рогатого скота

Если мы посмотрим на до DevOps, то при необходимости создания нового приложения мы должны были подготовить наши серверы вручную.

  • Развернуть виртуальные машины | физические серверы и установить операционную систему
  • Настроить сеть
  • Создать таблицы маршрутизации
  • Установить программное обеспечение и обновления
  • Настроить программное обеспечение
  • Установка базы данных

Это ручной процесс, выполняемый системными администраторами. Чем больше приложение, тем больше ресурсов и серверов требуется, тем больше ручных усилий потребуется для создания этих систем. Это потребует огромного количества человеческих усилий и времени, но, кроме того, как компания, вы должны будете заплатить за эти ресурсы, чтобы создать эту среду. Как я уже говорил в начале раздела “Люди совершают ошибки! Автоматизация - это путь к успеху!”.

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

  • Обновление версий
  • Развертывание новых релизов
  • Управление данными
  • Восстановление приложений
  • Добавление, удаление и масштабирование серверов
  • Конфигурация сети

Добавьте сюда сложность нескольких сред тестирования и разработки.

Именно здесь на помощь приходит Infrastructure as Code. Выше было время, когда мы заботились об этих серверах, как о домашних животных, люди даже называли их домашними именами или, по крайней мере, давали им какие-то имена, потому что они должны были находиться рядом какое-то время, они должны были стать частью “семьи” на какое-то время.

С Infrastructure as Code у нас есть возможность автоматизировать все эти задачи от конца до конца. Инфраструктура как код - это концепция, и есть инструменты, которые выполняют автоматическое обеспечение инфраструктуры. На данный момент, если с сервером случается что-то плохое, вы выбрасываете его и запускаете новый. Этот процесс автоматизирован, и сервер точно такой же, как определено в коде. В этот момент нам не важно, как они называются, они находятся в поле и служат своей цели до тех пор, пока их больше нет в поле, и нам нужно заменить их либо из-за сбоя, либо из-за обновления части или всего нашего приложения.

Это может быть использовано практически во всех платформах, виртуализации, облачных рабочих нагрузках, а также в облачной нативной инфраструктуре, такой как Kubernetes и контейнеры.

Обеспечение инфраструктуры

Не все IaC охватывают все перечисленное ниже, вы увидите, что инструмент, который мы будем использовать в этом разделе, охватывает только первые две области; Terraform - это тот инструмент, который мы будем рассматривать, и он позволяет нам начать с нуля и определить в коде, как должна выглядеть наша инфраструктура, а затем развернуть ее, он также позволит нам управлять этой инфраструктурой и первоначально развернуть приложение, но в этот момент он потеряет контроль над приложением, и здесь на помощь приходит следующий раздел, и что-то вроде Ansible как инструмент управления конфигурацией может работать лучше на этом фронте.

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

Первоначальная установка и настройка программного обеспечения

  • Развертывание новых серверов
  • Конфигурация сети
  • Создание балансировщиков нагрузки
  • Конфигурация на уровне инфраструктуры

Конфигурация инфраструктуры с провизией

  • Установка приложения на серверы
  • Подготовьте серверы для развертывания приложения.

Развертывание приложения

  • Развертывание и управление приложением
  • Этап обслуживания
  • Обновления программного обеспечения
  • Реконфигурация

Различия инструментов IaC

Декларативный и процедурный

Процедурный

  • Пошаговая инструкция
  • Создайте сервер > Добавьте сервер > Внесите это изменение

Декларативный

  • объявить конечный результат
  • 2 сервера

Изменяемые (домашние животные) против неизменяемых (крупный рогатый скот)

Мутабельный

  • Изменение вместо замены
  • Как правило, долгоживущие

Неизменяемые

  • Замена вместо изменения
  • Возможно, недолговечна

Именно поэтому у нас есть множество различных вариантов Infrastructure as Code, потому что не существует одного инструмента, который бы управлял всеми.

Мы будем в основном использовать terraform и работать с ним, поскольку это лучший способ начать видеть преимущества инфраструктуры как кода в действии. Практическая работа - это также лучший способ приобрести навыки, так как вы будете писать код.

Далее мы начнем изучать Terraform со 101-го урока, прежде чем приступим к практическому использованию.

Ресурсы