воскресенье, 3 марта 2019 г.
Лорин Хоштейн, Рене Мозер. Запускаем Ansible
Есть у меня одно перманентное желание - освоить какую-нибудь систему управления конфигурациями. Появилось это желание где-то лет 5 назад и тогда ещё я думал изучить Puppet, который написан на Ruby. Примерно в то же время я начал использовать для решения рабочих задач Python вместо Perl. За эти 5 лет мода на Ruby уже значительно поутихла, а Python стали насаждать чуть ли не из каждого утюга. По-моему, нет ни одного языка программирования, который по количеству русскоязычных публикаций мог бы сравниться с питоном. Причём основная часть печатных книг вышла в печать как раз за последние 5 лет. Ansible является системой управления конфигурациями, написанной на Python и использующей для этого доступ по SSH. Ansible не использует специального агента, который нужно было бы устанавливать на настраиваемую систему. Эти два обстоятельства, язык Python и отсутствие необходимости ставить агента, вытеснили Puppet из планов и заменили их на Ansible.
Все эти 5 лет освоение системы управления конфигурациями оставалось в планах на светлое будущее, которое вот-вот с сегодня на завтра уже должно было наступить. Жизнь, однако, вносит в эти планы свои коррективы и поток рутины, которую нужно сделать прямо сейчас, растёт и растёт. Это можно было бы назвать прокрастинацией, если бы откладывать не приходилось из-за постоянной нехватки времени и желания потратить имеющиеся небольшие кусочки свободного времени на что-то, что позволит сэкономить время более очевидным способом.
И вот в марте 2018 издательство ДМК-пресс анонсировало выход книги про Ansible на русском языке. Я сразу же заказал книгу, хотя она ещё не поступила в печать, и воспользовался обычной для издательства скидкой на предзаказ в 20%. Книга приехала ко мне в апреле и почти немедленно была отправлена на полку. Ну не могла эта история обойтись ещё без одного откладывания.
В начале этого 2019 года, после прочтения книги Git для профессионального программиста и освоения системы контроля версиями Git, я принялся-таки за эту книгу. Книга напечатана в твёрдом переплёте, насчитывает 382 страницы, однако система оказалась настолько простой, что её описание можно было бы уместить и в 100 страниц. Некоторая часть книги посвящена использованию Vagrant, значительная часть книги - использованию Ansible для настройки виртуальных машин в облачном сервисе Amazon EC2, значительная часть книги посвящена совместному использованию Ansible и Docker, некоторая часть - использованию Ansible для настройки компьютеров Windows и сетевого оборудования. Ядро книги посвящено использованию Ansible для настройки компьютеров под управлением Linux, а в качестве учебного примера рассматривается развёртывание CMS Mezzanine, написанной на Python с использованием веб-фреймворка Django. Если отжать из книги всё, что связано с использованием Ansible лишь косвенно, то в сухом остатке получится как раз страниц 100. И когда я говорю о том, что значительная часть книги посвящена какому-то вопросу, то это не значит, что этот вопрос сам по себе рассмотрен достаточно подробно.
Содержание книги показалось мне по насыщенности довольно рыхлым. Она точно не идёт в сравнение по насыщенности с книгой "Git для профессионального программиста", и это становится вполне явным в процессе чтения каждой из книг. Читая книгу про Git, я не мог читать её достаточно долго - читал каждый день понемногу, потому что довольно быстро уставал. С книгой про Ansible всё было иначе - читалась она легко, а листинги сценариев и ролей просто пролистывались, т.к. всё важное уже было описано в тексте достаточно подробно и листинги к этому не добавляли практически ничего нового. В процессе чтения книги про Ansible я скорее наоборот - сдерживал себя от чтения галопом, чтобы заниматься практикой.
Практические занятия проходили довольно легко, т.к. мне знаком синтаксис Python, который используется при написании условных выражений when, и знаком шаблонизатор Jinja2. На моём техническом блоге есть несколько переводов статей, в которых упоминается этот шаблонизатор. К тому же мне уже приходилось пользоваться этим шаблонизатором в небольших приложениях, которые я писал на Python с использованием веб-фреймворков Flask и Bottle. Кроме того, даже тем кто не пользовался Jinja2, но знаком с шаблонизатором Django, Jinja2 покажется очень знакомым.
В процессе написания сценариев и ролей я испытывал странные чувства, т.к. это очень похоже одновременно на системное администрирование, программирование и написание документации. Все эти три дела я очень люблю, а потому совмещать их все одновременно было весьма интересно. Написание сценария похоже на программирование, но код получается декларативный. Написание декларативного кода больше похоже на написание документации. Сам сценарий, по сути, описывает команды, которые нужно выполнить на настраиваемом узле, и файлы конфигурации, которые нужно сгенерировать по шаблону. Написание ролей занимает довольно много времени, но душу греет осознание того факта, что пополняется библиотека ролей и описаний узлов. В библиотеке ролей можно просуммировать весь опыт настройки систем, а при обнаружении ошибки исправить её на всех настроенных узлах лёгким движением руки. В файле с переменными узла можно компактно описать конфигурацию всего узла. При необходимости что-то поменять, достаточно исправить один файл и запустить один сценарий.
На моём техническом блоге имеется довольно много инструкций по настройке различных сервисов и веб-приложений, но иногда я заглядываю на настроенные компьютеры, чтобы вспомнить, как я настраивал ту или иную программу. Хочется по-максимуму задокументировать все эти знания, рассредоточенные в различных местах, в виде ролей Ansible. Надеюсь, что при должной настойчивости мне это удастся. Кроме того, хочется попробовать уже начать применять Ansible на работе. Учитывая то, как долго откладывалось освоение системы управления конфигурациями, я не надеюсь на то, что все эти цели вскоре будут достигнуты. Но дело, по крайней мере, теперь сдвинулось с мёртвой точки.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий