Инфраструктура как код - Infrastructure as code

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

Обзор

IaC выросла в ответ на трудности, создаваемые служебными вычислениями и веб-фреймворками второго поколения. В 2006 году , запуск Amazon Web Services " Elastic Compute Cloud и версии 1.0 Рубин на Rails всего за несколько месяцев до того, созданных широко распространенных проблем масштабирования на предприятии , которые ранее испытывали только в больших, мульти-национальных компаний. Идея IaC родилась с появлением новых инструментов для работы в этой постоянно растущей области. Мысль о моделировании инфраструктуры с помощью кода, а затем о возможности проектирования, реализации и развертывания инфраструктуры приложений с использованием известных передовых методов работы с программным обеспечением привлекла как разработчиков программного обеспечения, так и администраторов ИТ-инфраструктуры. Возможность обрабатывать инфраструктуру как код и использовать те же инструменты, что и любой другой программный проект, позволит разработчикам быстро развертывать приложения.

Преимущества

Ценность IaC можно разделить на три измеримые категории: стоимость, скорость и риск. Снижение затрат направлено на то, чтобы помочь предприятию не только финансово, но и с точки зрения людей и усилий, а это означает, что, удалив ручной компонент, люди могут переориентировать свои усилия на другие задачи предприятия. Автоматизация инфраструктуры обеспечивает ускорение за счет более быстрого выполнения при настройке инфраструктуры и нацелена на обеспечение прозрачности, чтобы помочь другим группам на предприятии работать быстрее и эффективнее. Автоматизация устраняет риск, связанный с человеческой ошибкой, такой как неправильная конфигурация вручную; удаление этого может сократить время простоя и повысить надежность. Эти результаты и атрибуты помогают предприятию продвигаться к внедрению культуры DevOps , сочетающей работу по разработке и эксплуатации .

Недостатки

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

Типы подходов

Обычно существует два подхода к IaC: декларативный (функциональный) и императивный (процедурный). Разница между декларативным и императивным подходами заключается, по сути, в «что» и «как» .Декларативный подход фокусируется на том, какой должна быть конечная целевая конфигурация; тоимператив сосредотачивается на том, как инфраструктура должна быть изменена, чтобы соответствовать этому. Декларативный подход определяет желаемое состояние, и система выполняет то, что должно произойти для достижения этого желаемого состояния. Императив определяет конкретные команды, которые необходимо выполнить в соответствующем порядке, чтобы получить желаемый результат.

Методы

Есть два метода IaC: push и pull . Основное различие заключается в способе настройки серверов. В методе извлечения настраиваемый сервер извлекает свою конфигурацию с управляющего сервера. В методе push управляющий сервер отправляет конфигурацию в целевую систему.

Инструменты

Есть много инструментов, которые реализуют возможности автоматизации инфраструктуры и используют IaC. Вообще говоря, любой фреймворк или инструмент, который выполняет изменения или конфигурирует инфраструктуру декларативно или императивно на основе программного подхода, может считаться IaC. Традиционно для реализации IaC использовались средства автоматизации сервера (жизненного цикла) и управления конфигурацией . Теперь предприятия также используют инструменты автоматизации непрерывной настройки или автономные инфраструктуры IaC, такие как Microsoft PowerShell DSC или AWS CloudFormation .

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

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

Контент сообщества

Важным аспектом при рассмотрении инструментов CCA, если они имеют открытый исходный код, является контент сообщества. Как заявляет Gartner , ценность инструментов CCA «так же зависит от контента и поддержки, предоставляемых сообществом пользователей, как и от коммерческой зрелости и производительности инструментов автоматизации». Такие продавцы, как Puppet и Chef , которые существуют уже довольно давно, создали свои собственные сообщества. У Chef есть репозиторий сообщества Chef, а у Puppet есть PuppetForge . Другие поставщики полагаются на соседние сообщества и используют другие инфраструктуры IaC, такие как PowerShell DSC. Появляются новые поставщики, которые не ориентируются на контент, а на модели, обладающие интеллектом в продукте для доставки контента. Эти визуальные объектно-ориентированные системы хорошо работают для разработчиков, но они особенно полезны для производственно-ориентированных DevOps и компонентов операций, которые ценят модели, а не сценарии для контента. По мере того, как эта область продолжает развиваться и меняться, контент на базе сообщества будет становиться все более важным для того, как используются инструменты IaC, если только они не ориентированы на модели и не ориентированы на объекты.

Известные инструменты CCA включают:

Орудие труда Выпущено Метод Подход Написано в Комментарии
Повар Повар (2009) Тянуть Декларативный и императивный Рубин -
Выдра Инедо Толкать Декларативный и императивный - Ориентированный на Windows
Кукольный Марионетка (2005) Тянуть Декларативный и императивный C ++ и Clojure начиная с 4.0, Ruby -
SaltStack SaltStack Толкай и тяни Декларативный и императивный Python -
CFEngine Northern.tech Тянуть Декларативная C -
Terraform HashiCorp (2014) Толкать Декларативная Идти -
Ansible / Ansible Tower Красная шляпа (2012) Толкать Декларативный и императивный Python -

Другие инструменты включают AWS CloudFormation , cdist , StackStorm , Juju и Pulumi .

Отношение к DevOps

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

Отношение к безопасности

Отчет об облачных угрозах за 2020 год, выпущенный Unit 42 (подразделение анализа угроз поставщика кибербезопасности Palo Alto Networks ), выявил около 200 000 потенциальных уязвимостей в инфраструктуре в виде шаблонов кода.

Смотрите также

использованная литература