Что такое Ansible

19 September 2013
Rate this item
(0 votes)

 

Лень - двигатель прогресса. Людям стало лень подниматься по лестнице и они придумали лифт. Когда было лень подниматься с дивана чтобы переключить канал на телеке - придумали пульт. А мы в своей уютной айтишке решили избавиться от необходимости повторения различных действий и начали придумывать, как все можно автоматизировать. И тут понеслась. Вот представь: у тебя есть целая куча серверов, на которых тебе надо одновременно что то сделать: обновить конфиг там, ну или завести пользователей, сделать бэкапы, рестартануть сервисы, почесать за ушком или вообще всё сразу! Вдобавок, делать это надо регулярно, а не единожды. И вот ты, сидя на стуле, из под которого идет дым, вытираешь с разгоряченного лба капли горячего пота и продолжаешь раз за разом подключаться по SSH (эс эс аш) на эти сервера, вводишь одни и те же команды, запускаешь одни и те же скрипты, пока твое сознание не начинает медленно уплывать вдаль. Погоди-погоди, что это такое там, на горизонте? Самолет? Облако? Капибара? Неа, это софт, который сохранит твое время и нервы, и зовут его Ansible (энзибл). Это опенсорсный инструмент с класным логотипом для автоматизации различных айти задач, которые могут попасться на твоем пути. С ним ты можешь запускать все рутинные задачи, о которых мы только что сказали, но из одного места. И не надо подключаться к каждому отдельному сервачку и начинать все сначала. А все необходимые шаги, которые нужно выполнить на удаленном сервере описываются в одном файле формата YAML (ямл) (Yet Another Markup Language). Вот-вот! Больше никаких гигантских склеенных команд и стремных шелл скриптов, никаких ошибок и опечаток из-за того, что ты уже поплыл на двадцатом серваке. Бездушной машине не важно, двадцатый или двадцатитысячный это сервер, она возьмет наш файл и сделает все как надо. Окей, как же начать им пользоваться? Нужно всего лишь установить сам Ansible (энзибл) на компьютер, с которого будет происходить настройка всех подконтрольных серверов, причем это может быть даже твой обычный ноутбук. Главное, чтобы до тех серваков, которые ты будешь настраивать, был
доступ по SSH (эс эс аш) и всё! Ну или по WinRM (вин эрэм), если нужно управлять тачкой на винде. Именно в этом и кроется одно из преимуществ Ansible (энзибл) и его отличие от таких инструментов, как Chef (чиф) или Puppet (паппет) - в нем нет агентов.

Если кратко, агент в этом контексте это небольшое приложение, которые должно ставиться на каждый сервачок и общаться с главным приложением. Так вот, в Ansible такая софтиншука не нужна, и это весьма удобно. Итак, теперь давай посмотрим, как это работает. У Ansible есть такая штука, которая называется модуль (Module). Их можно представить как маленькие программки, которые как раз и выполняют всю работу. Они отправляются с нашего управляющего компьютера на сервера, делают там нужные нам действия и самоудаляются, оставив о себе лишь приятные воспоминания… Ээээ, так о чем мы? Да, модули. Модули выполняют только одну небольшую и очень определенную задачу. Например, есть модуль для создания файла, модуль для его копирования, модуль для установки нджинкса (nginx), модуль для запуска нджинкса, модуль чтобы запустить контейнер в докере, модуль чтобы полить пюрешку подливой и так далее. Ну ты понимаешь, прям этакие атомарные действия. И у энсибла есть целая куча таких модулей для выполнения специфических задач - только глянь, тут и базы, и клауд провайдеры, и CI/CD (си ай си ди) инструменты! Список реально внушающий. Удивительно, но Ansible поможет даже сетевому инженеру, чтобы настроить всякие маршруты и аксес листы на его цисках, джуниперах, микротиках, или че там у него завалялось. А если ты гурман и не найдешь нужный модуль - то всегда можно написать свой модуль с блекджеком и оплеухами!

Как мы уже ранее сказали, мы описываем конфигурацию в YAML-файле, который называется Playbook (плэйбук), и делаем это в декларативном виде - то есть мы пишем не как нужно сделать, а что хотим получить.  Окей, круто: мы указали, что нам нужно сделать, а теперь укажем где нам нужно это сделать. Для этого нам нужно добавить в самом начале строку hosts (хостс), и указать на каких хостах это нужно выполнить и заодно каким юзером эти действия будут выполняться в строчке remote_user (ремоут юзер). Воу-воу, погодите, а с хостами то как? откуда энсибл знает какие наши серваки являются веб серверами? Изи. Именно это мы указываем в отдельном файле инвентаризации (inventory file) и выглядит это так: Просто называем группу и указываем какие айпишники или доменные имена ей принадлежат, а в плейбуке они подтянутся по названию группы. На самом деле, можно обойтись и без этого файла, и писать все прям в хосте, но лучше все сделать аккуратно с названиям групп. Окей, вернемся к нашему плейбуку, тут есть еще одна очень занятная штука - переменные! Добавляем блок vars (варс) наверху, примерно там же где хосты, а затем используем эти переменные там, где это нужно. Ну шикарно же! Блок, который у нас получился, где указано кто и в какой последовательности что должен выполнить, называется Play. И в одном файле, в нашем плейбуке, мы можем иметь много разных таких плеев, например, для разных групп серверов. А теперь вопрос на подумать: почему энзибл так называется и причем здесь американская писательница У́рсула Крёбер Ле Гуи́н? Пока!

Leave a comment

Popular Posts

Advertisement

Headlines