для чего нужен ansible
DATAENGINER
Ansible — это инструмент управления конфигурацией с открытым исходным кодом, который может помочь вам с автоматизацией задач и быстрым развертыванием приложений. Это простой в установке, высокоэффективный и мощный инструмент.
Что такое Ansible?
Ansible — это простой инструмент управления конфигурацией, который автоматизирует управление ИТ-ресурсами, развертывание приложений или выделение облачных ресурсов и т. Д. Он способствует развертыванию, поскольку не использует никакой сложной инфраструктуры безопасности или агентов.
В Ansible playbooks используются для описания задач автоматизации на очень простом языке программирования, то есть YAML. Ansible был запрограммирован для многоуровневого развертывания, которое может управлять несколькими взаимосвязанными системами вместе.
Зачем нужен Ansible?
Прежде чем мы углубимся в тему, давайте сначала поймем, почему компании нужны Ansible?
Вспомните эпоху сетевых вычислений, когда развертывание и управление серверами были сложными задачами для компаний. Только системный администратор отвечал за установку программного обеспечения, управление настройками конфигурации и все другие службы администрирования на разных серверах вручную. При большом объеме данных практически невозможно было вручную управлять рабочими нагрузками.
С одной стороны, когда команда разработчиков часто выпускала программные продукты, инженеры не могли управлять нагрузкой управления конфигурацией. Это причина, почему инструмент автоматизации был необходим для управления конфигурацией и подготовки сервера. Здесь роль инструмента Ansible входит в картину, которая делает утомительную рутину администратора более захватывающей и легкой.
Learn Ansible Online — Каковы преимущества?
1). Легко учить
Ansible инструмент программируется на простом языке программирования, то есть YAML. YAML — это читаемый человеком язык, который подходит для файлов конфигурации и используется различными приложениями в различных отраслях. Другими словами, IT-ребята быстро понимают, что такое книги в Ansible, и они могут редактировать их соответствующим образом. Ansible можно быстро установить только с помощью простых шагов. Простота этого средства автоматизации обеспечивает быстрый запуск даже не-ИТ-специалистами.
2). Безагентный инструмент
Инструмент не использует никаких агентов, так как именно он работает? Ansible работает путем соединения нескольких узлов вместе и выталкивает мини-программы, которые называются «Ansible Modules». Инструмент выполняет модуль над «SSH» и удаляет их по завершении. Модули могут храниться на любом компьютере, и нет необходимости в базах данных, демонах, серверах и т. Д.
Что такое Ansible и как он работает?
3). Очень эффективным
Для управления узлами и модулями в Ansible требуются только ограниченные ИТ-ресурсы, поэтому его используют в промышленности как эффективный инструмент. Ansible использует модули в качестве основных блоков программного обеспечения, и его можно быстро настроить или отредактировать. Возьмите пример: если есть один модуль, то отправляйте только аудио сообщения, тогда вы можете настроить его так, чтобы отправлять видео сообщения и многое другое.
4). Мощные функции
Ansible — это мощный инструмент, который также помогает моделировать самые сложные ИТ-процессы. Он имеет возможность управлять службами, сетями, операционными системами или инфраструктурой, которые вы уже используете, с помощью модулей Ansible. Вкратце, Ansible предлагает полную оркестровку ИТ вместо среды, в которой она развернута.
Ansible Tutorial Guide — Технические преимущества
Использование инструмента не ограничивается только развертыванием приложений и управлением конфигурацией, но также может быть использовано для ряда других ИТ-преимуществ, как описано ниже.
Подготовка сервера
Вашим приложениям нужны виртуальные машины или облачные экземпляры для хранения, а инструмент Ansible помогает упростить этот процесс. Например, если вам нужна какая-то программа для выполнения отладки или запуска приложения, Ansible позаботится о том, чтобы все пакеты программ были установлены заранее, как требуется.
Управление конфигурацией
Этот инструмент помогает настроить и записать подробную информацию о множестве программных или аппаратных пакетов во всех системах. Возьмите пример, если вы хотите настроить FTP-сервер на всех машинах вместе, но процесс будет нелегким, если вы пойдете вручную. Этот инструмент является решением, которое помогает вам настроить FTP-сервер для всех систем за один проход. Вам просто нужно запрограммировать Ansible playbooks на простом языке, то есть YAML, и перечислить IP-адрес, на котором вам нужен сервер с установленными настройками конфигурации.
Ускоренное развертывание приложений
Жизненный цикл всего приложения, от проектирования до разработки и развертывания, позволяет легко управлять всем с помощью Ansible Tower. Все, что вам нужно сделать, это описать все команды вместе в playbook и выполнить их, чтобы ускорить общий уровень развертывания приложения.
Соответствие безопасности
Политику безопасности или подробности аутентификации можно определить в игровой книге и интегрировать с другими автоматизированными процессами. Другими словами, вам просто нужно определить параметры безопасности один раз, и они могут применяться ко всем узлам автоматически. И самое приятное, что все учетные данные для входа в систему, которые определены в книге воспроизведения, не могут быть получены сторонним пользователем в виде обычного текста.
IT оркестровка
Одно только управление конфигурацией не может выполнить вашу работу, но вы должны знать, как несколько конфигураций могут взаимодействовать друг с другом или как они управляются в целом. С Ansible вы можете управлять сложными конфигурациями и обеспечивать оркестровку для согласования бизнес-процессов с другими ИТ-ресурсами, такими как сеть, службы, приложения, данные и т. Д.
Что такое Ansible Architecture?
Архитектура Ansible проста для понимания, как показано на рисунке. Существует один механизм автоматизации, который напрямую взаимодействует с пользователем, который пишет playbook и выполняет их. Он также может взаимодействовать со службами, размещенными в облаке, инструментами управления конфигурацией или базами данных. Основными компонентами механизма автоматизации являются инвентаризация, подключаемые модули, модули, API-интерфейсы, работа в сети, облако, игровые книги, хосты или ИТ-склад и т. Д.
Ansible & DevOps — насколько хорошо они сочетаются друг с другом?
DevOps используется для объединения задач разработки и эксплуатации, и мы все знаем, насколько важна интеграция для приложений, управляемых тестами. Ansible выполняет эту задачу, обеспечивая стабильную среду для интеграции, которая в конечном итоге приводит к улучшению оркестровки. Ansible в DevOps ускоряет скорость разработки и разработки и тратит свое время на другие вещи, такие как настройка производительности, тестирование, эксперименты и т. Д. Таким образом, ИТ-специалисты могут решать другие проблемы ИТ, и процесс интеграции значительно упрощается, чем вы ожидаете.
Вы также можете рассмотреть реальный пример того, как НАСА извлекло выгоду, используя инструмент автоматизации Ansible для своего проекта.
Изучите Ansible Терминологии
В конце мы изучим несколько терминов, связанных с Ansible, для лучшего понимания инструмента и его работы.
Заключительные слова:
В этом блоге. Мы обсудили все ключевые концепции Ansible, которые полезны для начинающих для начала своей карьеры. Если вы глубоко разберетесь во всех этих концепциях, вам будет легко играть с Ansible. Чтобы узнать больше об инструменте и сопутствующих продуктах, присоединяйтесь к программе сертификации DevOps прямо на JanBask Training и изучите более широкие возможности трудоустройства для вас.
Что такое Ansible и как его использовать
Авторизуйтесь
Что такое Ansible и как его использовать
Что такое Ansible? Это ПО с открытым исходным кодом, которое автоматизирует поставку программного обеспечения, управление конфигурацией и развёртывание приложений. Ansible помогает DevOps-специалистам автоматизировать сложные задачи.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Ключевые особенности программы Ansible
Установка и запуск
Инструкцию по установке на другие ОС можно найти здесь.
Структура Ansible
Модули
Это небольшие программы, выполняющие определённую работу на сервере. Например, вместо запуска этой команды:
Мы можем использовать модуль apt и установить htop:
Использование модуля даст вам возможность узнать, установлен он или нет.
Плагины
Ansible поставляется с несколькими удобными плагинами, и вы можете легко написать свой собственный.
Инвентаризация хостов
Чтобы предоставить перечень хостов, нам нужно обозначить список, находящийся в файле инвентаризации. Он напоминает содержание файла hosts.
В простейшем виде он может содержать одну строку:
Playbooks
Ansible playbooks — это способ отправки команд на удалённые компьютеры с помощью скриптов. Вместо того, чтобы индивидуально использовать команды для удалённой настройки компьютеров из командной строки, вы можете настраивать целые сложные среды, передавая скрипт одной или нескольким системам.
group_vars
Файл содержит набор переменных, например имя пользователя и пароль базы данных.
Это способ сгруппировать несколько задач в один контейнер, чтобы эффективно автоматизировать работу с помощью понятной структуры каталогов.
Обработчики
Представляют собой списки задач, которые на самом деле не отличаются от обычных задач, на которые ссылается глобально уникальное имя и которые оповещаются уведомителями. Если ничто не уведомляет обработчик, он не будет запускаться. Независимо от того, сколько задач уведомляет обработчик, он запускается только один раз, после того как все задачи завершены.
Если у вас playbook с большим объёмом, может быть полезно иметь возможность запускать только определённую часть его конфигурации.
Демо «Реальное приложение»
Цель этой демонстрации — установить приложение Laravel в VPS. Для этого используем Lightsail.
Последовательность действий для создания и запуска Laravel APP:
Рассмотрим каждый пункт подробнее.
Создание экземпляра Ubuntu Lightsail
Перейдите на панель управления Lightsail и нажмите «Создать экземпляр».
Выберите свою любимую ОС.
Выберите «Добавить скрипт запуска», который запускается после создания вашего экземпляра. Не забудьте получить SSH-ключ.
Установка зависимостей Ansible на нашем VPS
Добавьте эти sh-команды для установки зависимостей:
Теперь у нас есть готовый экземпляр, перейдём к построению Ansible Project.
Добавление SSH-ключей в Git
Вы должны добавить свой сервер id_rsa.pub к своим ключам GitHub SSH, войдя в свой сервер.
Сборка хостов и ansible.cfg
Определение роли в Ansible
Используем модуль Ping, чтобы убедиться, что хост работает, после чего нужно обновить все пакеты и установить два модуля: git и htop.
Определение обработчика
Установка модулей PHP
Чтобы вызвать обработчик, мы должны использовать notify: Restart PHP-FPM, имена обработчиков должны быть уникальными.
В этом руководстве мы определили php как тег, поэтому, например, если вы хотите запустить только эту задачу из своего playbook, вам необходимо выполнить её с —tags = ”php”, которая будет исполнять только её.
Установка Nginx
Добавление default-конфигурации Nginx
vars.yml
Примечание: Рекомендуется использовать ansible-vault для шифрования и дешифрования переменных.
Как использовать Ansible-Vault
Создайте секретный файл хранилища, содержащий ключ шифрования, который шифрует ваши переменные.
Чтобы зашифровать переменные, используйте:
Чтобы расшифровать переменные, используйте:
Создание базы данных MySql, имени пользователя и пароля
mysql_user и mysql_pass определены внутри vars.yml.
Клонирование кодовой базы
repo_git_url и app_work_dir определены внутри vars.yml.
Генерирование .env
Ansible использует шаблонизатор Jinja2 для динамических выражений и доступа к переменным. Создадим файл env.conf.
Создание playbook
Как видно, мы определили aws как хост для этого playbook, и sudo yes даёт нам возможность выполнять команду как пользователю sudo. У нас есть vars_files, где мы храним наши vars. Мы установили roles, каждая role выполняет определённую задачу. И, наконец, у нас есть handlers, которые содержат все обработчики проекта.
Система управления Ansible
Представьте себе, что вам нужно управлять парком серверов, расположенных к тому же в разных географических точках. Каждый из этих серверов требует настройки, регулярного обновления и мониторинга. Конечно, для решения этих задач можно воспользоваться самым простым способом: подключиться к каждому серверу по ssh и внести необходимые изменения. При всей своей простоте этот способ сопряжен с некоторыми трудностями: он чрезвычайно трудоемок, а на выполнение однообразных операций уходит очень много времени.
Чтобы упростить процессы настройки и конфигурирования серверов, можно также писать shell-скрипты. Но и этот способ вряд ли можно назвать совершенным. Скрипты нужно постоянно изменять, подстраивая их под каждую новую задачу. При их написании необходимо учитывать различие операционных систем и версий. Не будем забывать и о том, что отладка скриптов отнимает много усилий и забирает немало времени.
Оптимальным вариантом решения описанных проблем является внедрение системы удаленного управления конфигурацией. В таких системах достаточно лишь описать нужное состояние управляемого узла. Система должна сама определить, что нужно сделать для достижения этого состояния, и осуществит все необходимые действия.
Со всеми сложностями, о которых идет речь выше, мы хорошо знакомы на собственном опыте: у нас имеется 10 точек присутствия с NS-серверами, расположенные в разных точках планеты. На них необходимо регулярно вносить различные изменения: обновлять операционную систему, устанавливать и обновлять различное ПО, изменять конфигурцию и т.п. Мы решили все эти операции автоматизировать и внедрить систему удаленного управления конфигурациями. Изучив имеющиеся решения, мы остановили свой выбор на Ansible.
В этой статье мы бы хотели подробно рассказать о его возможностях этого инструмента управления конфигурациями и поделиться собственным опытом его использования.
Что такое Ansible?
Ansible — опенсорсное программное решение для удаленного управления конфигурациями, разработанное Майклом Де Хаанном в 2012 году. Название продукта взято из научно-фантастической литературы: в романах американской писательницы Урсулы Ле Гуин ансиблом называется устройство для оперативной космической связи.
Ansible берет на себя всю работу по приведению удаленных серверов в необходимое состояние. Администратору необходимо лишь описать, как достичь этого состояния с помощью так называемых сценариев (playbooks; это аналог рецептов в Chef). Такая технология позволяет очень быстро осуществлять переконфигурирование системы: достаточно всего лишь добавить несколько новых строк в сценарий.
Почему Ansible?
Преимущества Ansible по сравнению с другими аналогичными решениями (здесь в первую очередь следует назвать такие продукты, как Puppet, Chef и Salt) заключаются в следующем:
Установка
Требования для установки Ansible минимальны. На машине с которой производится управление должен быть установлен Python 2.6 или выше. На управляемых узлах должен быть установлен только Python версии не ниже 2.4, но он, как правило, по умолчанию включен в состав большинства дистрибутивов linux-систем. MS Windows не поддерживается.
Вам также могут потребоваться следующие модули Python, устанавливаемые через pip или пакетный менеджер вашей операционной системы:
В Ubuntu установка самого Ansible и зависимостей осуществляется добавлением репозитория и установкой пакета:
О процедуре установки в других ОС можно прочитать в официальной документации.
Группы серверов
Файл hosts
Помимо списка управляемых узлов, в файле hosts могут быть указаны и другие сведения, необходимые для работы: номера портов для подключения по SSH, способ подключения, пароль для подключения по SSH, имя пользователя, объединения групп и т.п. В некоторых случаях — в частности, при работе с большими и сложными конфигурациями, — различные параметры можно выносить в отдельные файлы и каталоги (о структуре каталогов см. ниже).
Более подробно о файле hosts и правилах его написания можно почитать в официальной документации.
Информация об узлах (Facts)
Перед внесением изменений Ansible подключается к управляемым узлам и собирает информацию о них: о сетевых интерфейсах и их состоянии, об установленной операционной системе и т.п. Он может делать это как с помощью собственного модуля, так и с помощью инструментов ohai и facter, если они установлены (такая возможность специально предусмотрена для пользователей, уже имеющих опыт работы с системами удаленного управления конфигурациями: ohai и facter являются библиотеками фактов для Chef и Puppet).
Переменные
Во время деплоя, как правило, требуется не только установить какое-либо приложение, но и настроить его в соответствии с определенными параметрами на основании принадлежности к группе серверов или индивидуально (например, ip-адрес BGP-соседа и номер его AS или параметры для базы данных). Как уже было сказано, загромождать файл hosts будет не очень красиво, поэтому разработчики Ansible пошли следующим путём:
Модули Ansible
В состав Ansible входит огромное количество модулей для развёртывания, контроля и управления различными компонентами, которые можно условно разделить на следующие группы (в скобках приведены названия некоторых продуктов и сервисов):
Примеры простых задач
С помощью Ansible можно одновременно выполнить одну задачу на целой группе серверов. Попробуем, например, отправить запрос ping на серверы выбранной группы:
Следующий пример соберёт информацию о хостах и выведёт её на консоль в формате JSON:
А вот так можно создать логический том (или, в зависимости от текущего состояния, изменить его размер) с именем examplevolume в группе examplegroup:
Ansible позволяет не только выполнять единичные задачи, но и писать сценарии, которые необходимо выполнить на управляемых узлах. Рассмотрим структуру и правила написания таких сценариев более подробно.
Cценарии (playbooks)
Все сценарии в Ansible пишутся на YAML. Это — человекочитаемый формат сериализованных данных, гораздо более простой, чем XML или JSON.
Чтобы выполнить сценарий используется команда ansible-playbook со следующим сиснтаксисом:
В начале сценария обязательно должна присутствовать последовательность символов «» (так в YAML обозначается начало документа). Перед каждым новым разделом списка ставится дефис ( — ):
Основными параметрами/группами простого сценария являются:
В разделе hosts указывается группа управляемых узлов, к которой будут применены описываемые в сценарии изменения.
Так, строка формата:
означает, что изменения будут применены к узлам из группы webservers.
Сценарии могут выполняться не только от имени пользователя, под именем которого установлено соедиение, но и любого другого. В следующем примере авторизация на хосте будет произведена с именем yourname, но задачи будут выполняться от имени пользователя root (если, конечно, этому пользователю это разрешено использовать sudo):
Если добавить параметр “user: postgres”, то все действия будут выполняться с привилегиями пользователя postgres.
В разделе vars указываются переменные, которые будут использованы в сценарии, и их значения:
Список изменений/состояний, которые необходимо произвести на управляемом узле, приводится в разделе tasks. Каждой задаче (task) присваивается имя (name), его можно опустить. Далее указывается модуль Ansible, который будет задействован при её выполнении:
Для каждой задачи можно указывать пользователя, от имени которого она будет выполнена:
Шаблонизация
В Ansbile используется шаблонизатор Jinja2. Приведём пример простого шаблона (часть конфига powerdns):
Обратим внимание на то, что файл шаблона и файл с паролем пользователя базы данных находятся на машине управления, а результатом будет файл на удалённом узле.
Обработчики событий (Handlers)
Ansible не просто выполняет задачи в указанном порядке, но и проверяет их состояние на наличие изменений. Если при выполнении сценария требовалось, например, добавить строку в конфигурационный файл, и в результате выполнения он изменился (необходимой строки действительно не было), то Ansible может выполнить специальную задачу, описанную как обработчик события (handler). Если при выполнении строка уже была в конфигурационном файле, то обработчик выполнен не будет. Обработчики событий описываются в конце сценария; в описании задачи они указываются через параметр notify. Приведём пример:
Контроль выполнения
Допустим, что при выполнении сценария нам нужно проверять определённые переменные или состояния и, в зависимости от них, выполнять или не выполнять какие-либо задачи. Для этого можно использовать оператор “when”:
Делегирование задачи другому хосту
Иногда требуется выполнить задачу на определённом узле, но в контексте другого узла. Например, во время обновления узла может возникнуть необходимость отключить для него мониторинг, находящийся на отдельном сервере. Для этого используется управляющая директива delegate_to. Приведём пример:
Результатом выполнения этой задачи будет отключение сообщений для сервиса dnsserver в Nagios.
Ролью называется типовой набор переменных и задач, назначаемых для одного или нескольких серверов. Если вам нужно применить к серверу или группе серверов типовой набор операций, вам достаточно просто назначить ему роль. Предварительно в проекте каталоге проекта должна быть создана соответствующая структура. В сценариях роли назначаются следующим образом:
Структура проекта
Пример сценария
Чтобы понять, как это все работает, рассмотрим практический пример: простой сценарий развёртывания новой версии PostgreSQL 9.3 на debian-based ОС. Роли в этом примере не используются.
Ansible AWX
Во всех приведенных выше примерах управление Ansible осуществляется с помощью интерфейса командной строки. Но с официального сайта можно загрузить графическую панель управления Ansibleworks AWX, очень симпатичную внешне и удобную в использовании. Собственно, за счет ее распространения и осуществляется монетизация продукта: управление небольшим (до 10) количеством серверов обходится бесплатно, если же серверов больше — нужно приобретать лицензию. Похожие варианты монетизации используются и разработчиками конкурирующих решений — Puppet и Chef.
Заключение
Ansible — достаточно простой, но при этом эффективный инструмент для удаленного управления конфигурациями. В рамках этой статьи мы сделали лишь беглый обзор его возможностей и рассказали, как пишутся сценарии для решения простых задач. Все возможности и варианты использования Ansible в рамках одной статьи охватить невозможно. О применении этого инструмента для решения более специфических задач мы расскажем в последующих публикациях.
Для желающих узнать больше — несколько ссылок:
https://github.com/ansible/ — официальный аккаунт на github c исходным кодом проекта и хорошим набором примеров проектов
http://www.ansibleworks.com/docs/ — официальная документация (активно пополняется);
http://jpmens.net/2012/06/06/configuration-management-with-ansible/ — статья Яна Пита Менса об управлении конфигурациями с помощью Ansible (в его блоге есть и много других материалов по теме).
https://gist.github.com/marktheunissen/2979474 — пример сценария с подробными комментариями, правда для старой версии.
www.ansibleworks.com/docs/contrib.html — ещё больше ссылок на примеры использования, включая в том числе и очень сложные конфигурации.
Для тех кто не может комментировать посты на Хабре, приглашаем к нам в блог.







