Знакомство с Consul

consul

Давно хотелось написать в своем блоге об одном из основных продуктов HashiCorp — Consul. Пожалуй, это один из ключевых программных продуктов для HashiCorp. Он обеспечивает регистрацию, дерегистрацию и хранение информации о работающих IT сервисах в сети организации. Также он представляет собой хранилище KeyValue данных. Такая своеобразная СУБД вкупе с доступом к ней через протокол HTTP делает Consul эффективным инструментом в современной IT инфраструктуре. Большинство остальных продуктов HashiCorp может использовать Consul в качестве бекэнда для хранения своей информации. Это касается и Terraform, и Vault, и Nomad. Получается своеобразная кооперация, дающая возможность организовать отказоустойчивость и распределенность продуктов HashiCorp. При этом аналогичная методика может быть применена и использована в сторонних программных продуктах для организации хранения информации.

Сразу же хотелось бы обозначить сферу применения Consul. Как бы он хорош не был — далеко не всем он будет нужен или принесет заметную пользу. Данный программный продукт будет наиболее интересен тем, кто использует в своей инфраструктуре микросервисную архитектуру, а также удобным, как писал выше, в сочетании с прочими продуктами HashiCorp. Функционал Service Discovery, который является основным в работе Consul, используется во многих IT компаниях, ориентированных на предоставление Highload сервисов. Если же Ваша организация занимается эксплуатацией стандартных покупных IT решений, либо IT сервисов, базирующихся на монолитной архитектуре, то скорее всего программное обеспечение Consul будет не актуальным для Вас.

Читать далее «Знакомство с Consul»

Сила инвентаря и переменных в 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»

VMware и terraform

terraform

Если публичные облака в нашей стране используют далеко не все организации в своей работе, то кластеры под управлением VMware работают практически в каждой более или менее серьезной организации. И точно так же, как и при использовании публичных облаков, в крупных развертываниях в локальном виртуальном окружении подход IaaC крайне продуктивен и полезен. Утилита от hashicorp terraform так же эффективно работает с виртуальной инфраструктурой, как и с облачной. Писал в своем блоге уже статью о Terraform — Автоматизируем облако с Terraform. Там мы рассмотрели, как автоматизировать создание нужной инфраструктуры публичных сервисов AWS с помощью Terraform. Теперь хотелось бы показать, что можно делать аналогичные действия с виртуальными машинами в кластере VMware vCenter.

Те, кто еще не знаком с IaaC или Infrastructure-as-a-Code, но постоянно работают с системами виртуализации, наверняка задумывались и не раз как ускорить процесс создания, первичной настройки и удаления тех или иных ресурсов. С помощью Terraform можно серьезно сэкономить время на рутинных операциях, а также заметно автоматизировать процесс работы, даже в случаях если Вы не связаны с разработкой ПО. Создание шаблонов виртуальных машин — полезная техника, которая используется системными администраторами давно годами. Добавив к этим шаблонам возможность управлять виртуальной инфраструктурой с помощью кода terraform, Вы получите недостающий «пятый элемент» в пазле менеджмента систем виртуализации.

Читать далее «VMware и terraform»

Разворачиваем контейнеры в Kubernetes


Как работать с Kubernetes — вопрос, который волнует многих. Система оркестрации контейнеров Docker под названием Kubernetes прочно вошла в инфраструктуру серьезных приложений. Именно с помощью нее можно максимально автоматизировать процесс развертывания и обновления приложений. Родившаяся в недрах компании Google, данная система управления стала де-факто стандартом по всему миру. Да есть и другие варианты менеджмента и создания кластера работающих контейнеров Docker. Но именно Kubernetes справляется с этой задачей лучше всего. Его многие сравнивают с системой виртуализации VMware и ее системой управления vCenter. То, что делает VMware для виртуализации операционных систем, делает Kubernetes для контейнеров Docker. Как запустить нужные контейнеры в кубере и сделать их доступными снаружи кластера попробую осветить в данной статье.

Ранее в своем блоге уже не раз затрагивал тематику работы с контейнерами Docker. В частности, в статьях — Используем Docker для python приложения, Docker-сompose на практике. Как Вы понимаете с контейнерами Docker можно работать напрямую через утилиту docker, или через дополнительные различные сторонние графические интерфейсы. Но также можно задействовать и тяжелую артиллерию, каковой в данном контексте является Kubernetes. Порог входа при этом для начала использования кубера довольно высокий. Нужно не просто знать и понимать, как работают контейнеры, но также и вникнуть во множество специфичных фишек кубера. Это и поды, и ReplicaSet, и различные виды балансировки нагрузки, и многое другое. Сейчас хотелось бы не заморачиваясь во все нюансы, показать как развернуть Docker контейнер в кубере.

Читать далее «Разворачиваем контейнеры в Kubernetes»

GitHub — наше все

GitHub img

Глобальный репозитарий кода GitHub стал своеобразной копилкой знаний для всех, кто связан с IT темой. В нем можно найти практически любое возможное решение проблем, относящихся к программированию и конфигурированию компьютерных систем. Философия Open Source в современном мире во много распространяется благодаря именно этому инструменту. Каждый из нас постоянно каждый день пользуется различными опенсорс продуктами. И наверняка многие задумываются о том, что, беря из «колодца», надо и отдавать что-то обратно взамен. Я с такими мыслями существую уже не один год. Если добавить к этому, что в идеале хорошо бы постоянно использовать принцип работы, при котором репозитарий Git задействуется при взаимодействии с программным кодом или конфигурациями. И тогда становится понятным, что привычка кодить с Git-ом должна быть у профессиональных ITшников на кончиках пальцев.

Кроме того в последнее время Git Hub стал своеобразным стандартом в области высоких технологий, который показывает, что тот или иной человек может сделать с IT инструментами. Зачастую на собеседованиях при приеме на работу просят показать свои репозитарии на GitHub. И то, что там содержится, может говорить гораздо больше о специалисте, чем резюме на 10 листах. Если же Вы позиционируете себя как профессиональный программист или что-то около того, то коллекция репозитариев на данном сайте просто MUST HAVE для Вас. Вообщем, хотите показать себя в современном мире IT, а также быть полезными этому миру — выкладывайте свои работы на Git Hub.

Читать далее «GitHub — наше все»

Docker-сompose на практике

docker compose img

Чем больше Вы работаете с Docker, тем чаще испытываете необходимость запускать одновременно сразу несколько контейнеров в связке. Это позволяет обеспечить работоспособность приложений, требующих нескольких компонентов для своего функционирования. Банальный пример, который иллюстрирует часто встречающую связку из реальной жизни — nginx, php-fpm и mysql. Как правило, современные веб приложения в минимальной конфигурации требуют СУБД — mysql, поддержку PHP, и возможность отдачи через веб сервер. Данную связку легко поднять с помощью 3 контейнеров, каждый из которых будет выполнять свой процесс. Так контейнер с nginx будет взаимодействовать с пользователями, контейнер с php-fpm обрабатываь PHP скрипты, а контейнер с mysql хранить информацию. Сами скрипты PHP и вспомогательные файлы приложения могут спокойно храниться на сервере, где работает Docker. С помощью Docker-compose проблема работы такой связки решается легко и эффективно.

Docker-compose позволяет сгруппировать вместе несколько контейнеров и использовать их в работе как единую группу. Вам не придется в процессе их работы думать о том, как они между собой связаны и что нужно сделать, чтобы эту взаимосвязь поддержать. При этом сам принцип работы предельно простой и требует по большому счету только понимание написания yaml файлов. Вся конфигурация группы контейнеров создается в одном общем файле, который определяет зависимости и принцип работы этой группы. При этом подразумевается, что у Вас есть понимание принципов работы Docker и Вы уже умеет создавать Dockerfile для своих контейнеров.

Читать далее «Docker-сompose на практике»

Используем Docker для python приложения

docker img

Технология контейнеризации Docker — своеобразная священная корова последних лет в области Информационных Технологий. Именно с помощью Docker и различных систем управления для контейнеров получается реализовать самые высоконагруженные системы в мире. Также заметно упрощается процесс разработки приложений. В свое время уже писал в блоге статью из этой области — Docker в повседневной работе ITшника. Сейчас хотелось бы немного больше осветить практическую часть вопроса. А именно способ запуска python приложения в Docker контейнере на сервере. При этом подразумевается, что Вы не используете инфраструктуру наподобие Kubernetes или его аналогов, а просто хотите по мере необходимости использовать контейнеры от случая к случаю. Частенько бывает ситуация, что сервер для различных задач задействует возможности Python v2. При этом есть существенная необходимость запускать приложения, написанные на Python v3. Использование Docker позволяет элегантно решить эту задачу.

По большому счету для того, чтобы ощутить всю прелесть преимуществ использования Docker нужна хорошая система оркестрации. Именно при полной декомпозиции программных приложений под Docker с использованием систем управления мы получим отличное масштабирование, фишки CI/CD, отказоустойчивость. В данном примере всего этого у нас не будет. Мы будем разворачивать наше контейнеризированное приложение напрямую в операционной системе Linux. Это будет своеобразным примером, который позволит понять с практической точки зрения как же на самом деле работает Docker в реальной жизни.

Читать далее «Используем Docker для python приложения»

Управляем логами с ELK

ELK

Сколько себя помню в IT профессии, анализ и обработка логов — были всегда актуальной задачей. Оборудование и программное обеспечение постоянно генерируют лог записи о своей жизнедеятельности. И чем больше у Вас техники под управлением, тем больше массив данных, который ежедневно генерируется. Раньше были очень дорогие платные решения, типа HP ArcSight Logger, а также бесплатные опенсорсные как Adiscon LogAnalyzer. Но если первый тип продуктов, во-первых, был очень дорогим и недоступным для многих, а во-вторых, крайне «тяжелым» в эксплуатации. То второй тип программного обеспечения давал очень мало нужного функционала, слабо масштабировался и плохо проводил аналитику имеющихся логов. С приходом на IT сцену ELK — картина радикально поменялась. ELK или комплекс продуктов на базе Elastic Stack эффективно позволяет решать любые задачи с обработкой, хранением и визуализацией массивов логов различных устройств и программного обеспечения.

Сам по себе стек Elastic состоит из ряда отдельных продуктов, таких как Elasticsearch, Kibana, Logstash и ряда других. Однако все они взаимодополняют друг друга, работая как одно общее целое. Поэтому, принято говорить о работе всего стека ELK, который обрабатывает массив поступающей информации, позволяя ее эффективно анализировать и визуализировать. Elasticsearch — это ядро всего этого комплекса, которое отвечает за поиск нужной информации во всем массиве данных. Kibana — красивая визуальная среда, которая позволяет комфортно взаимодействовать с системой ELK ее пользователям. Ну а Logstash — это программное обеспечение, ответственное за прием данных из внешних источников и их обработку таким образом, чтобы дальше было легко их искать и анализировать.

Читать далее «Управляем логами с ELK»

Подсказки по утилите Git


Уровень проникновения инфраструктуры Git, GitHub, GitLab в ITшную работу и жизнь просто колосальный. С этими системами приходится сталкиваться постоянно в том или ином виде. Утилита git в современных операционных системах идет, как правило, предустановленной. При желании или необходимости она легко устанавливается из исходников или различных репозитариев. Git — сегодня представляет не просто фреймворк для системы контроля версия, а целую философию и своеобразную экосистему для всех разновидностей программного кода. Для того, чтобы нормально работать с этой платформой нужны определенные базовые знания. Составил для себя основные команды утилиты git, которые применяются в работе. Для ведения локальной разработки этих возможностей на первом этапе будет достаточно.

Читать далее «Подсказки по утилите Git»