Сила инвентаря и переменных в Ansible


Хотелось бы поговорить в этой статье о такой важной составляющей в работе системы управления Ansible, как файлы инвентаря и соответствующие переменные. Большая часть логики в работе Ansible содержится в соответствующих ролях, которые несут основную нагрузку при выполнении плейбуков. Но для полноценного понимания, как работает Ansible, необходимы знания о правильной настройке инвентаря и переменных для групп и конкретных хостов. С помощью правильно настроенных переменных мы можем направлять выполнение ролей в том или ином направлении. Это позволяет сделать Ansible чрезвычайно гибким и мобильным, а создаваемые роли более универсальными. Хороший пример, где без этого просто не обойтись — установка и настройка различного рода кластерного программного обеспечения. Как правило, в кластере есть сервер, выполняющий Master роль, и прочие сервера, что требует небольшого различия в проводимых настройках. Также, зачастую, различные сервера требует различных конфигураций в настройках одного и того же софта.

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

Читать далее «Сила инвентаря и переменных в Ansible»

Базовая настройка сервера с помощью Ansible


Если раньше при установке любого сервера приходилось делать достаточно много рутинной работы по базовой настройке ручками. Теперь с помощью ролей Ansible или похожих инструментов эти задачи сводятся к минимуму с точки зрения затрат времени и усилий. Многие считают, что использование Ansible — это прерогатива DevOps инженеров. С моей точки зрения, на сегодняшний день это базовый инструмент, который должен быть в арсенале любого IT специалиста. Как установить нужные пакеты в операционной системе Linux, а также как сделать базовые настройки в ней с помощью Ansible покажу на примере, который я постоянно использую в реальной жизни. Сама роль из данного примера предельно простая. Этот код может служить в том числе и для учебных целей. С помощью нее можно начать создавать свои собственные конструкции в процессе обучения системе управления конфигурациями Ansible.

В своем блоге уже несколько раз поднимал тему Ansible. Это были статьи — Разворачиваем Django с Ansible, а также Тестируем Ansible роли с Molecule. В них мы рассмотрели практические аспекты использования Ansible, а также его вспомогательные инструменты. Автоматизация задач по администрированию и развертыванию настолько плотно входит в работу ITшников, что использование функционала Ansible становится рутинной процедурой. Давно уже сам для себя решил, что буду выкладывать в общий доступ на GitHub свои личные наработки. Начну с этой Ansible роли, которая доступна по ссылке — https://github.com/andreyuzb/ansiblerole-linux-common. Дальше по тексту мы разберем ее функционал, а также то, как работает сам Ansible при этом.

Читать далее «Базовая настройка сервера с помощью Ansible»

Тестируем Ansible роли с Molecule

moleucle img

Времена меняются, системные администраторы постепенно становятся DevOps-ами. И соответственно в работу администратора постепенно проникают элементы программирования и QA тестирования. Так при написании Ansible ролей, можно самому проверять их с использованием виртуальных машин или используя автоматизацию на Vagrant. Однако, программный продукт Molecule позволяет еще более комплексно автоматизировать процесс тестирования. А кроме того добавляет возможность по созданию собственных функциональных тестов с помощью модулей testinfra и pytest. То есть мало того, что Molecule автоматически проверит работоспособность действий из Ansible роли, но и запустит специфичные тесты, которые придется написать нам самим, по проверке состояния тех или иных частей системы, после отработки роли. Таким образом, часть нашей работы превращается в настоящее QA тестирование. И что самое интересно, это необходимая работа, без которой не обойтись в современных реалиях. Ansible роли могут применяться на сотнях и тысячах серверах, их полноценное тестирование просто необходимо для дальнейшей спокойной работы.

TDD — Test Driven Development, подход к работе при котором происходит постоянное тестирование для проверки работоспособности программного кода. В нашем случае использование Molecule для Ansible ролей позволяет вести профессиональную их разработку по методике TDD. Это обеспечивает постоянную целостность и корректность создаваемого кода.

Читать далее «Тестируем Ansible роли с Molecule»

Разворачиваем Django с Ansible

ansible automation

Мне нравится писать программы на языке программирования Python. На этом языке есть популярный фреймворк Django. С помощью него можно создавать серьезные веб приложения. Для запуска работы этого сервиса нам как правило нужнны Nginx, PostgreSQL или MySQL, Gunicorn, а также сам фреймворк Django и несколько подсобных библиотек. Частенько бывают нужны и другие приложения, например Memcached, Redis или RabbitMQ. В этой статье не будем их затрагивать, чтобы чрезмерно не усложнять материал. Каждый раз, запуская сервер для работы с проектом Django, хочется получать готовую среду. Тратить по нескольку часов на установку и базовую настройку всех приложений — утомительное и скучное занятие. С помощью ролей Ansible мы этот процесс можем ускорить с минимумом усилий с нашей стороны при разворачивании.

Ранее в блоге писал, как упростить себе жизнь с помощью Packer (Создаем образ ОС с Packer) и Vagrant (Vagrant — основы работы). Эти два инструмента позволяют автоматизировать разворачивание операционной системы на этапе разработки и тестирования. Добавив к ним систему управления конфигурациями Ansible, мы можем автоматизировать максимум задач по развертыванию сервера, для начала работы с Django. С помощью ролей Ansible мы установим необходимые пакеты и программное обеспечение, выполнив базовую настройку при этом. После выполнения этих ролей, результатом станет готовый сервер с работающим приложением. Необходимость в ручной работе по установке и настройке при этом сведется на ноль.

Читать далее «Разворачиваем Django с Ansible»