Инфраструктура как код

редактировать

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

Содержание
  • 1 Обзор
  • 2 Дополнительная ценность и преимущества
  • 3 Типы подходов
  • 4 Методы
  • 5 Инструменты
    • 5.1 Непрерывная автоматизация конфигурации
      • 5.1.1 Содержание сообщества
  • 6 Отношение к DevOps
  • 7 Отношение к безопасности
  • 8 См. Также
  • 9 Ссылки
Обзор

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

Дополнительная ценность и преимущества

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

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

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

Методы

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

Инструменты

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

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

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

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

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

Среди известных инструментов CCA:

ИнструментВыпущено с помощьюМетодПодходНаписано наКомментарии
Chef Chef (2009)PullДекларативный и императивныйRuby -
Otter Inedo PushДекларативный и императивный-Windows-ориентированный
Puppet Puppet (2005)PullДекларативный и императивныйC ++ Clojure начиная с 4.0, Ruby -
SaltStack SaltStackPush and PullДекларативный и императивныйPython -
CFEngine Northern.techPullDeclarativeC -
Terraform HashiCorp (2014)PushDeclarativeGo -
Ansible / Ansible Tower Red Hat (2012)PushДекларативная и императивнаяPython -

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

Связь с DevOps

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

Связь с безопасностью

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

См. Также
Ссылки

Последняя правка сделана 2021-05-24 14:47:55
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте