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

12.01.2016 17:39

Спустя три месяца с момента перехода проекта в руки компании Red Hat состоялся релиз инструментария Ansible 2.0, предоставляющего средства для управления конфигурацией, оркестровки, централизованной установки приложений и параллельного выполнения типовых задач на группе систем. Код Ansible написан на языке Python и распространяется под лицензией GPLv3.

Из особенностей Ansible можно отметить простой и читаемый язык управления конфигурацией, поддержку распараллеливания работ, отсутствие необходимости установки на удалённые системы специальных программ-агентов (все операции инициируются централизованно по SSH), возможность работы без прав root. Система Ansible не так усложнена, как cfengine, puppet и Chef, но при этом предоставляет достаточно широкие возможности и высокую гибкость управления.

Ключевые новшества:

  • Проведён большой рефакторинг кодовой базы, многие подсистемы переписаны с целью унификации и усовершенствования архитектуры проекта. Полностью переписан код разбора формата YAML для упрощения добавления новых языковых возможностей и получения более подробной информации о сути выявляемых при разборе ошибках синтаксиса YAML. При этом основной задачей при проведении рефакторинга было сохранение обратной совместимости и возможность продолжения использования уже имеющихся конфигураций;
  • Добавлена поддержка блоков задач (Task Blocks), которые предоставляют пользователям средства группировки задач друг с другом, используя теги, условные выражения и различные атрибуты задач. Блоки также представляют новую концепцию привязки обработки исключений к плану конфигурации (playbooks), которые реализованы по аналогии с применением try/except/finally в Python и влияют только на текущий playbook;
  • Расширены средства диагностики ошибок в файлах YAML. Текст ошибки теперь более точно идентифицирует проблему и предлагает возможные способы исправления;
  • Операция include теперь приводит к динамическому разбору подключаемых файлов вместо ранее применяемого метода подстановки текста перед разбором, который вызывал проблемы, если включение производится внутри цикла;
  • Поддержка плагинов для определения стратегии выполнения, позволяющих изменить способ запуска задач на внешних хостах. Классический линейный способ заключается в поочерёдном разборе задач, с выполнением каждой задачи на всех хостах. В Ansible 2.0 дополнительно реализован плагин со стратегией "free", при которой задачи выполняются на хостах в соответствии с инидивидуальным списком, что позволяет переходить на хосте к новым задачам, не дожидаясь завершения выполнения задачи другими хостами;
  • Представлено около 200 новых модулей, среди которых отдельно выделяются модули управления OpenStack, конфигурирования и управления окружениями VMware и Docker, поддержки Amazon Web Services и Microsoft Windows.