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

moleucle img

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

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

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

Стыкуем Vagrant и vSphere


Про систему HashiCorp Vagrant я уже ранее писал в этом блоге в статье – Vagrant — основы работы. Там мы разобрали как развернуть Vagrant и начать работу на базе облака Amazon AWS. Однако, возможности Vagrant охватывают и множество других систем по запуску виртуальных машин. Виртуализация на базе VMware vSphere распространена повсеместно в организациях в нашей стране. Vagrant может стыковаться и работать как с отдельными хостами гипервизоров VMware ESXi, так и с системой управления VMware vCenter. При этом при запуске будет запускаться виртуальная машина в системе виртуализации VMware, на которой мы сможем проводить необходимые тестовые работы. А после проведения необходимых работ, виртуальная машина будет полностью удаляться. И во время этого процесса никаких действий в интерфейсе VMware vSphere нам выполнять не придется.

Читать далее «Стыкуем Vagrant и vSphere»

Разворачиваем 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»

Vagrant – основы работы


Один из необходимых инструментов в повседневной работе администратора или программиста – Vagrant. Эта небольшая утилита позволяет оперативно запустить виртуальные машины для нашей тестовой среды. При этом Vagrant поддерживает различные тестовые среды. Начиная от системы виртуализации VirtualBox, и вплоть до различных провайдеров публичных облаков, таких как Amazon AWS. Vagrant – очередной инструмент, созданный HashiCorp. Это пожалуй, один из наиболее старых продуктов, который использует методологию Infrastructure-as-a-Code. Данный продукт не является аналогом Terraform или CloudFormation. Он не хранит в себе данных о различных сервисах облака. Его основная задача – оператвный запуск и остановка вычислительных ресурсов для проведения тестовых работ.

Ранее уже поднимал тему IaaC, а также инструментов, которые используются для этого. Это были статьи о Terraform (Автоматизируем облако с Terraform) и Packer (Создаем образ ОС с Packer). С помощью Packer мы создаем образы виртуальных машин, которые после этого можем использовать в Vagrant для запуска работы наших приложений. Он может при своей работе задействовать возможности Ansible. Часто можно услышать вопрос, а зачем это нужно, когда и так можно запускать виртуалки без дополнительного софта. Однако, Vagrant при частом использовании хорошо экономит время и добавляет лишнее удобство в работе.

Читать далее «Vagrant – основы работы»

Создаем образ ОС с Packer


При работе в облаке или в системе виртуализации очень часто необходимо создание определенных “золотых” образов операционных систем. Данные образы позволяют запускать виртуальные машины с нужными готовыми настройками и установленным программным обеспечением. Чем больше виртуальных машин в инфраструктуре Вы используете, тем актуальнее такие золотые образы для Вас. Экономия времени в работе выходит колоссальная. Также, например, для меня при тестировании той или иной технологии часто нужно бывает оперативно поднять одну или несколько виртуалок. Желательно это сделать быстро. В связке с Vagrant, Ansible, программный продукт Packer от HashiCorp великолепно справляется с этой задачей. Он позволяет из исходного образа виртуальной машины подготовить необходимый для наших целей “золотой” образ.

Эта статья является логическим продолжением темы IaaC, которую я поднял в “Автоматизируем облако с Terraform”. Здесь, как и в той статье, мы также рассмотрим продукт компании HashiCorp. Сама компания, возглавляемая Mitchell Hashimoto, продвигает в последние годы несколько интересных идей, которые реализуются в рамках парадигмы Infrastructure-as-a-Code. В этой статье мы разберем относительно небольшой программный продукт Packer. По сути у него только одна задача – создание загрузочного образа виртуальной машины под конкретную среду облака или виртуализации. С этой задачей Packer справляется блестяще. Он позволяет работать с облаками Amazon, Azure, GCP, виртуальными машинами VMware, контейнерами Docker.

Читать далее «Создаем образ ОС с Packer»

Автоматизируем облако с Terraform

Terraform Logo

Облачные технологии с точки зрения концептуального технического подхода предлагают совершенно иной взгляд на управление IT инфраструктурой. Мы теперь не беспокоимся о том, как работает оборудование, как подключены между собой сервера и СХД, кто и каким образом установит операционную систему и драйвера. Главное внимание теперь уделяется непосредственно нашим приложениям и сервисам. Программный продукт Terraform от HashiCorp позволяет эффективно организовывать необходимую нам IT инфраструктуру в облаке и изменять ее в случае надобности с помощью текстовых конфигурационных файлов. Такой подход в работе называется IaaCInfrastructure-as-a-Code. Все, что нужно знать при таком подходе, для разворачивания нашей инфраструктуры – правила и параметры по созданию нужных сервисов в облаке.

IaaC (Infrastructure-as-a-Code) – подход к работе с IT инфраструктурой, который заключается в том, что создаваемая и поддерживаемая нами инфраструктура представлена в текстовом файле в виде кода. Этот подход подразумевает использование облачной или виртуализованной инфраструктуры под собой, при котором нет необходимости взаимодействовать непосредственно с аппаратным обеспечением. Для создания того или иного элемента инфраструктуры, мы просто добавляем нужный код с описанием этого элемента. Избавляясь от проблем с настройкой и поддержанием реального железа, мы заметно увеличиваем производительность труда инженеров и сисадминов.

Читать далее «Автоматизируем облако с Terraform»

Коммандная строка для облака – AWS CLI


Облачные технологии так или иначе занимают прочное место в IT инфраструктуре организаций. Я говорю в первую очередь о передовых компаниях, которые работают на мировом уровне. Для большинства местных Узбекских компаний публичные облака на сегодняшний день – это все таки редкость. При использовании публичных облаков, компания получает массу преимуществ: нет необходимости содержать свою сложную IT инфраструктуру, платить за лицензии, думать об отказоустойчивости, нанимать различных дорогих квалифичированных специалистов для поддержания всей этой инфраструктуры. Мы по сути сразу берем абстрагированные необходимые вычислительные мощности и используем их под свои приложения.

В этой статье хочется поговорить о сервисах публичного облака Amazon – AWS. А точнее об интерфейсе коммандной строки для управления этими сервисами aws cli. По моему мнению, AWS – это одни из лидеров, если не сказать, что они самые главне пионеры в развитии сервисов публичных облаков. То, что они делают, является примером для всех других игроков в этой области. При обилии имеющихся сервисов и возможностях по их настройке через веб интерфейс, коммандная строка aws cli заментно ускоряет работу по настройке этих сервисов и взаимодействию с ними. Также коммандная строка просто незаменимый инструмент при автоматизации процессов с облаком Amazon.

Читать далее «Коммандная строка для облака – AWS CLI»

Управляем серверами локально через Ansible


Количество серверов (физических и виртуальных), которыми необходимо управлять, как правило, у каждого администратора месяц от месяца только прибавляется. Даже если у Вас нету в организации сервисов, которые работают по понятиям HighLoad, то наверняка количество IT систем постоянно растет. Для того, чтобы оставаться эффективным в современных условиях, использование какой-либо из систем управления конфигурациями просто необходимо. Ansible – одна из таких систем, которая по моему мнению, по своим возможностям и архитектурным особенностям лучшая на сегодняшний день.

Использовать этот программный продукт можно как на сервере, так и с локального ноутбука или настольного компьютера. Из основных требований – наличие интерпретатора Python и нескольких модулей для корректной работы Ansible. Мне бы хотелось тут показать, как можно настроить это ПО таким образом, чтобы без использвоания учетной записи root, выполнять любые действия на своих серверах на локальном компьютере без необходимости вводить пароли.

Читать далее «Управляем серверами локально через Ansible»

Инструменты админа во времена DevOps

tools image

В свое время, когда начинал работать в IT, для системного администратора было важно разбираться с операционной системой Linux, уметь пользоваться bash и основными утилитами ОС, знать как настраивать Apache, Nginx, MySQL, Postfix и понимать сеть и маршрутизацию. Прошло время, и теперь сисадмины стали девопсами. Теперь уже всех вышеперечисленных знаний стало недостаточно, чтобы быть крутым перцем в области администрирования. Технологии HighLoad, зародившиеся в таких гигантах, как Facebook и Google, пришли в обычные компании, где работают уже простые смертные. Если еще лет пять – семь назад в проектах, где нужно было горизонтально масштабировать сервисы под большую нагрузку, приходилось очень долго задумываться над технической реализаций. Сейчас все это решается легко и банально.

Где-то в литературе читал, что DevOps – это в первую очередь взаимоотношения между ITшниками в коллекиве и уже потом какие-то специфичные программные утилиты. Однако, с моей точки зрения, DevOps – во многом определяют программные продукты, которые позволяют организовать хорошо масштабируемые IT сервисы с уклоном в облачные технологии. Понимание того, как работают основные программные продукты HighLoad, одно из основных требований для инженеров DevOps. Тут попытаюсь показать основные инструменты, которые используют DevOps специалисты. В первую очередь это система контейнеризации Docker и система управления контейнерами Kubernetes. Следующим важным продуктом обязательным для изучения является система управления конфигурациями Ansible. Также многие относят к средствам DevOps-ов систему контроля версия Git, которую по сути используют практически все программисты. Также специалисту необходимо знать средства CI – Contitunuos Integration на базе ПО Jenkins, и систему IaaC – Terraform.

Читать далее «Инструменты админа во времена DevOps»

Docker в повседневной работе ITшника


За последние несколько лет технологии DevOps сильно перевернули мир IT. Зародившись в гигантских корпорациях, разрабатывающих современные IT системы, способные эффективно горизонтально масштабироваться, эти технологии прочно вошли в повседневую жизнь обычных администраторов и программистов. Docker – система контейнеризации приложений, которая позволяет эффективно использовать аппаратные ресурсы, оперативно горизонтально машстабироваться, а также отделить контекст работы приложения от остальной операционной системы. Подход работы с приложениями с помощью контейнеров можно сравнить по масштабу с теми изменениями в IT, которые происходили когда появилась полноценная виртуализация серверов на базе VMware ESX.

Что дает система Docker рядовому ITшнику на современный день и как она позволяет повысить эффективность труда. Как в целом меняется подход к работе, после того как под рукой появляются контейнеры с приложениями. В первую очередь, заметно уменьшается количество новых серверов или виртуальных машин. Теперь для того, чтобы протестировать работу того или иного приложения нет надобности в установке целого сервера. Достаточно загрузить нужный контейнер и работать с выбранным приложением. Кроме экономии аппаратных ресурсов сервера это значительно экономит и затраты времени на развертывание того или иного приложения.

Читать далее «Docker в повседневной работе ITшника»