63. Инструменты управления конфигурацией - Ansible/Terraform

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

Введение: Управление конфигурацией

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

Управление конфигурацией - это процесс поддержания приложений, систем и серверов в требуемом состоянии. Пересечение с Infrastructure as code заключается в том, что IaC гарантирует, что ваша инфраструктура находится в желаемом состоянии, но после этого, особенно terraform, не будет заботиться о желаемом состоянии настроек вашей ОС или приложений, и именно здесь на помощь приходят инструменты управления конфигурацией. Убедитесь, что система и приложения работают так, как ожидается, поскольку изменения происходят в Deane.

Управление конфигурацией убережет вас от внесения мелких или крупных изменений, которые останутся недокументированными.

Почему вы хотите использовать управление конфигурацией

Сценарий или почему вы хотите использовать управление конфигурацией, познакомьтесь с Дином. Он наш системный администратор, и Дин - счастливый турист, который работает над всеми своими системами. работает над всеми системами в своем окружении.

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

Инструменты управления конфигурацией

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

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

  • Chef

    • Chef обеспечивает последовательное применение конфигурации в любой среде, в любом масштабе с помощью автоматизации инфраструктуры.
    • Chef - это инструмент с открытым исходным кодом, разработанный компанией OpsCode и написанный на Ruby и Erlang.
    • Chef лучше всего подходит для организаций, которые имеют гетерогенную инфраструктуру и ищут зрелые решения.
    • Рецепты и Cookbooks определяют код конфигурации для ваших систем.
    • Pro - Доступна большая коллекция рецептов
    • Pro - Хорошо интегрируется с Git, что обеспечивает надежный контроль версий.
    • Против - Крутая кривая обучения, требуется значительное количество времени.
    • Против - Главный сервер не имеет большого контроля.
    • Архитектура - сервер / клиенты
    • Простота настройки - Умеренная
    • Язык - Процедурный - Указать, как выполнить задачу
  • Puppet

    • Puppet - это инструмент управления конфигурацией, который поддерживает автоматическое развертывание.
    • Puppet построен на Ruby и использует DSL для написания манифестов.
    • Puppet также хорошо работает с гетерогенной инфраструктурой, где основное внимание уделяется масштабируемости.
    • За - Большое сообщество поддержки.
    • За - Хорошо развитый механизм отчетности.
    • Против - Продвинутые задачи требуют знания языка Ruby.
    • Против - Главный сервер не имеет большого контроля.
    • Архитектура - сервер / клиенты
    • Простота установки - Умеренная
    • Язык - Декларативный - указывать только то, что нужно делать
  • Ansible

    • Ansible - это инструмент автоматизации ИТ, который автоматизирует управление конфигурацией, предоставление облака, развертывание и оркестровку.
    • Ядро плейбуков Ansible написано на языке YAML. (Следует сделать раздел о YAML, так как мы уже несколько раз сталкивались с этим).
    • Ansible хорошо работает в средах, где основное внимание уделяется быстрой настройке и запуску.
    • Работает на основе плейбуков, которые предоставляют инструкции вашим серверам.
    • Pro - Не нужны агенты на удаленных узлах.
    • Pro - YAML легко изучить.
    • Против - Скорость работы часто ниже, чем у других инструментов (быстрее, чем Дин делает это сам вручную).
    • Против - YAML не такой мощный, как Ruby, но его легче освоить.
    • Архитектура - Только клиент
    • Простота настройки - Очень просто
    • Язык - Процедурный - Указать, как выполнить задачу
  • SaltStack

    • SaltStack - это инструмент на основе CLI, который автоматизирует управление конфигурацией и удаленное выполнение.
    • SaltStack основан на Python, а инструкции написаны на YAML или собственном DSL.
    • Идеально подходит для сред, где приоритетом является масштабируемость и отказоустойчивость.
    • Плюсы - Простота использования при запуске
    • Плюсы - Хороший механизм отчетности
    • Против - Фаза установки сложная
    • Против - Новый веб-уи, который гораздо менее проработан, чем другие.
    • Архитектура - сервер / клиенты
    • Простота установки - Умеренная
    • Язык - Декларативный - указывайте только то, что нужно делать

Ansible vs Terraform

Инструментом, который мы будем использовать для этого раздела, будет Ansible. (Простой в использовании и требуются основы языка).

| Я думаю, что важно коснуться некоторых различий между Ansible и Terraform, прежде чем мы рассмотрим инструментарий немного подробнее. | | Ansible | Terraform | | ————————————————————————————————————————————- | ———————————————————— | —————————————————————- | | Type | Ansible is a configuration management tool | Terraform is a an orchestration tool | | Infrastructure | Ansible provides support for mutable infrastructure | Terraform provides support for immutable infrastructure | | Language | Ansible follows procedural language | Terraform follows a declartive language | | Provisioning | Ansible provides partial provisioning (VM, Network, Storage) | Terraform provides extensive provisioning (VM, Network, Storage) | | Packaging | Ansible provides complete support for packaging & templating | Terraform provides partial support for packaging & templating | | Lifecycle Mgmt | Ansible does not have lifecycle management | Terraform is heavily dependant on lifecycle and state mgmt |

Ресурсы