Инфраструктура как код (IaC) — это мощная парадигма для представления, настройки и развертывания ИТ-среды. В модели IaC компьютерная система не создается вручную, а описывается в файле на специализированном языке. Затем инструмент автоматизации считывает файл и строит систему в соответствии со спецификациями пользователя. Эффективность и универсальность IaC сделали его популярным дополнением к DevOps и революции облачных вычислений.
devops.com/downloads/devops-and-the-alternative-cloud/
Несколько платформ автоматизации поддерживают IaC, каждая из которых имеет множество различных функций и преимуществ. Когда вы начнете придумывать решение IaC, вам нужно будет подумать, какие из этих функций лучше всего подходят для ваших нужд. При сравнении платформ автоматизации IaC следует учитывать одно важное соображение: поддерживает ли инструмент императивные или декларативные операции.
Термины императивный и декларативный часто встречаются в обсуждениях МАК. Оба термина относятся к тому, как пользователь направляет платформу автоматизации. С помощью императивного инструмента вы определяете шаги, которые необходимо выполнить, чтобы достичь желаемого решения. С помощью декларативного инструмента вы определяете желаемое состояние окончательного решения, а платформа автоматизации определяет, как достичь этого состояния.
ubuntu.com/blog/declarative-vs-imperative-devops-done-right
Императивные системы часто изначально проще. Можно сказать, что императивная система устроена больше как человеческое мышление. Императивные системы позволяют вам продолжать думать о конфигурации как о серии действий или шагов, каждый из которых приближает вас к цели. Еще одно преимущество императивного языка состоит в том, что он позволяет автоматизировать очень подробные и сложные конфигурации, создавая несколько уровней команд. И поскольку императивная система дает пользователю больший контроль над тем, как выполнять задачу, ее часто более эффективно и легче оптимизировать для конкретной цели, чем декларативную систему.
При всех преимуществах императивных языков у вас может возникнуть вопрос, почему декларативные языки так популярны. Декларативные инструменты набирают популярность в течение нескольких лет и, возможно, являются доминирующим форматом для автоматизации IaC. Одна из причин популярности декларативных инструментов заключается в том, что они требуют меньше знаний со стороны пользователя, по крайней мере, после того, как вы поймете, как они работают.
С обязательным инструментом пользователь должен обладать достаточными знаниями, чтобы указывать платформе автоматизации, что делать. В декларативной системе пользователю нужно только определить состояние окончательной конфигурации, а платформа определяет, как туда добраться. Сложность пошагового выполнения скрыта от пользователя.
Еще одно преимущество декларативного языка состоит в том, что он более идемпотентен. Понятие идемпотентности относится к процессу, который может выполняться несколько раз с одним и тем же результатом. Поскольку декларативный язык просто определяет конечное состояние, вы всегда будете в одном и том же месте, независимо от того, с чего вы начали. С другой стороны, императивный язык рассматривает задачу как серию заранее определенных шагов, которые могут привести вас к другой конечной точке в зависимости от начальной точки.
Ведущие платформы автоматизации IaC занимают различные места в спектре от императивных до декларативных, хотя многие инструменты обладают по крайней мере некоторой способностью поддерживать оба подхода. Повар широко известен как императивный инструмент. Terraform и Puppet считаются декларативными. Ansible и Salt в основном декларативны, но предлагают некоторую поддержку императивных команд.
www.linode.com/docs/guides/applications/configuration-management/chef/
www.linode.com/docs/guides/applications/configuration-management/terraform/
www.linode.com/docs/guides/applications/configuration-management/puppet/
www.linode.com/docs/guides/applications/configuration-management/ansible/
www.linode.com/docs/guides/applications/configuration-management/salt/
При покупке платформы автоматизации IaC необходимо учитывать множество факторов. Выбор императивного или декларативного — только один критерий в большой матрице вариантов. Однако, когда вы начинаете проектировать свою будущую среду IaC, важно потратить некоторое время на визуализацию того, какое решение больше подходит для вашей организации: императивное или декларативное.