Отношения между Vagrant, Docker, Chef и OpenStack (или аналогичными продуктами)?


56

Я веб-разработчик, но меня также интересуют несколько административных задач. Следовательно, новый переход от чистого администрирования к разработчикам мне пригодится.

Во всяком случае, у меня есть некоторые проблемы, чтобы связать несколько вещей в отношениях. Может быть, нет, поэтому я хотел бы попросить помощи уточнить.

По сути, я хочу установить связь между четырьмя типами программного обеспечения (насколько я понимаю). Точные продукты не имеют значения, вы можете разместить любое подобное программное обеспечение в качестве альтернативы:

  • Вагрант: Насколько я понимаю, это автоматизация создания и управления виртуальными машинами: их настройка, запуск и остановка. Это можно сделать с помощью локальной виртуальной машины или удаленной, например, на облачной платформе.
  • Docker: «Легкая виртуальная машина», основанная на нескольких концепциях ядра Linux, которые можно использовать для изолированного запуска процессов, например, в среде общего веб-хостинга.
  • Chef: инструмент для настройки и настройки операционной системы, например, внутри виртуальной машины.
  • OpenStack: инструмент, который позволяет вам создавать собственное частное облако, а значит, сравнимое с чем-то вроде AWS.

Вопрос № 1: Правильны ли мои объяснения или я ошибаюсь с некоторыми (или всеми) из этих расходов?

Вопрос № 2: Как я могу смешать все эти инструменты? Будет ли это иметь какой-то смысл?

В моем воображении и с моей точки зрения, вы могли бы пойти и

  • использовать OpenStack для создания собственного облака,
  • использовать Vagrant для управления виртуальными машинами, работающими в облаке,
  • используйте Chef для настройки этих виртуальных машин
  • и, наконец, использовать Docker для запуска процессов внутри виртуальных машин.

Это верно? И если да, то можете ли вы дать мне совет, как начать использовать все это (это довольно много одновременно, и я пока не знаю, с чего начать)?


1
Не достаточно опытный, чтобы ответить на этот вопрос полностью, но ваша оценка Vagrant и Chef кажется верной. На своем компьютере для разработки я раскручиваю виртуальные машины с помощью Vagrant, а затем предоставляю их Chef, и это работает очень хорошо.
GSP

Ответы:


54

Давайте использовать их соответствующие веб-страницы, чтобы узнать, о чем все эти проекты. Я изменю порядок, в котором вы перечислены, хотя:

  • Chef : Chef - это платформа автоматизации, которая превращает инфраструктуру в код.

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

  • Vagrant : создание и настройка облегченных, воспроизводимых и переносимых сред разработки.

    Он обеспечивает воспроизводимый способ создания полностью виртуализированных машин с использованием в качестве поставщиков технологий Oracle VirtualBox или VMWare . Vagrant может координировать свою работу с программным обеспечением для управления конфигурацией, чтобы продолжить процесс установки после завершения установки установщика операционной системы. Это известно как обеспечение .

  • Docker : проект с открытым исходным кодом для упаковки, доставки и запуска любого приложения в виде облегченного контейнера

    Функциональность этого программного обеспечения в некоторой степени совпадает с функциональностью Vagrant, в которой оно предоставляет средства для определения установок операционных систем, но значительно отличается в технологии, используемой для этой цели. Docker использует контейнеры Linux , которые сами по себе являются не виртуальными машинами, а изолированными процессами, работающими в изолированных файловых системах. Docker также может использовать систему управления конфигурацией для обеспечения контейнеров.

  • OpenStack : программное обеспечение с открытым исходным кодом для создания частных и общедоступных облаков.

    Хотя это правда, что OpenStack может быть развернут на одной машине , такое развертывание предназначено исключительно для проверки концепции, вероятно, не очень функционально из-за ограниченности ресурсов.

    Основной целью для установок OpenStack являются многоузловые среды с нулями, где различные компоненты могут использоваться в выделенном оборудовании для достижения лучших результатов.

    Ключевой функциональностью OpenStack является его поддержка многих технологий виртуализации, от полностью виртуализированных (VirtualBox, VMWare) до паравиртуализированных (KVM / Qemu), а также контейнеров (LXC) и даже пользовательского режима Linux (UML) .

Я пытался представить эти продукты как компоненты конкретной архитектуры. С моей точки зрения, имеет смысл сначала иметь возможность определять свои потребности в зависимости от среды, в которой вы нуждаетесь (Chef, Puppet, Ansible, ...), а затем иметь возможность развертывать ее контролируемым образом (Vagrant, Docker). , ...) и, наконец, масштабировать его до глобального размера, если это будет необходимо.

Сколько всего этой функциональности вам нужно, должно быть определено в рамках вашего проекта.

Также обратите внимание, что я упростил в основном все технические пояснения. Пожалуйста, используйте ссылки для получения подробной информации.


Являются ли Chef и Puppet одним и тем же инструментом? Я имею в виду они эквивалентны? Если вы хотите запустить это на хосте Windows 10, какие инструменты вы бы использовали?
ReynierPM

Кукольный инструмент похож на шеф-повара. Не уверен, лучше ли в Windows ..
Adeerlike

3

Я думаю, что опыт работы с разработчиками сделает становление «devops» более сложным, вашему вопросу уже почти 3 года, так что было бы интересно услышать, как вы находите путешествие, я дам ответ с точки зрения системный администратор о приложениях, которые вы упомянули выше, и, надеюсь, они пролят некоторый свет или дадут нетехническую перспективу, которая каким-то образом объяснит, почему человек (администратор или разработчик) начнет рассматривать именно то, что вы спросили, например, от devops Какова связь между x, y, z? Эти инструменты больше, чем сумма их частей?

Я на самом деле думаю, что системные администраторы одержали верх, большинство приложений, о которых вы упоминаете в своем вопросе, решают «проблемы» администраторов и при этом создают более абстрактную среду центра обработки данных, а это, в свою очередь, более программируемо для разработчиков и для новых пользователей ». стратегия devops (читай стратегию / команду, devops не человек). Так каковы отношения с приложениями, которые вы упоминаете? Как это обеспечивает целостный подход к ИТ-сервису?

OpenStack: инструмент, позволяющий создавать собственное частное облако, а значит, сопоставимое с чем-то вроде AWS

Вот что это такое, но что это делает? - наиболее подходящей операционной системой была DOS - она ​​управляла вашим диском путем абстрагирования BIOS, OpenStack управляет вашим центром обработки данных и абстрагирует вашу инфраструктуру (IaaS - это Jargon для операционной системы центра обработки данных). Теперь в вашем центре обработки данных есть API, командный синтаксис и графический интерфейс. OpenStack может управлять гипервизорами, коммутаторами, маршрутизаторами, межсетевыми экранами, сетями хранения данных, балансировщиками нагрузки, хостами докеров и т. Д. Openstack использует «плагин» вашего производителя оборудования или определенную функцию может существовать исключительно в программном обеспечении, так как программное обеспечение определило что-тоили виртуализация сетевых функций. Вдобавок к этому OpenStack и все другие облака могут управлять своей собственной инфраструктурой, читая сценарии, которые вы запускаете в механизме оркестровки или которые запускаются на основе правил (увеличение, уменьшение и т. Д.). Таким образом, openstack - это гигантский уровень абстракции, например, мне все равно, какой у меня есть переключатель, дайте мне сеть с этой командой или создайте сложную балансировку нагрузки, HA, общедоступный, автоматическое масштабирование, зарегистрированное доменное имя, хранилище Прикрепленная штуковина - с этим сценарием я нашел в интернете.

Docker: «Легкая виртуальная машина», основанная на нескольких концепциях ядра Linux, которые можно использовать для изолированного запуска процессов, например, в среде общего веб-хостинга.

Docker - это еще один уровень абстракции, и, подобно облаку, это разрушительная технология, она меняет отрасль, поскольку решает многие операционные «проблемы», такие как зависимости программного обеспечения, обновления, изоляция данных и полная переносимость. Java стала популярной из-за переносимости исходного кода, о которой разработчикам не нужно было думать, работающая JVM означала, что их код должен работать на кофемашине, пока она поддерживает java. Docker решает аналогичную проблему, для запуска моего приложения нужен докер, а неВам нужна эта версия Python, это ядро, этот дистрибутив Linux и так далее, конечно, у приложения все еще есть эти зависимости, но базовому хосту все равно, а администратору все равно, что вы делаете внутри изолированного контейнера ( в точку). Docker меняет парадигму разработки и эксплуатации, рассматривая всю операционную систему и ее сервисы как двоичный файл. мы можем получить их из репозитория , изменить их версию, изменить их, запустить с параметрами и т. д.

Chef: инструмент для настройки и настройки операционной системы, например, внутри виртуальной машины.

Да, и не так разрушительно, как первые два, Chef, puppet, ansible, salt, менеджер операций системного центра и множество других приложений в этом пространстве предоставляют разработчикам и администраторам возможность моделировать развертывания, обновления и другие действия (config изменения), кажется, нет никакого органа по стандартизации, который бы смотрел на эти усилия как на облачные . Но мы не имеем дело с чем-то таким определенным, как инфраструктура, поэтому учить их гораздо сложнее, и мало что можно перенести из одного в другое.

Вагрант: Насколько я понимаю, это автоматизация создания и управления виртуальными машинами: их настройка, запуск и остановка. Это можно сделать с помощью локальной виртуальной машины или удаленной, например, на облачной платформе.

Это самый странный из списка приложений, которые вы упомянули. Vagrant - это инструмент для разработчиков и игрушка для администраторов. Вы можете быстро создать среду разработки с помощью vagrant, например, я хочу разработать приложение для Android, получить IDE из Бродяга, я думаю, скоро Докер его настигнет.

Можете ли вы дать мне совет, как начать использовать все это (это довольно много в то же время, и я пока не знаю, с чего начать)?

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


0

Я только что закончил проект развертывания OpenStack, который использует сервер Chef внутри экземпляра Vagrant: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Основная проблема с этим - получение экземпляра Vagrant одного и того же IP-адреса каждый раз, когда вы хотите управлять узлами. Если вы делаете статическую адресацию, она работает хорошо. Делать это через VPN не идеально.


0

С моей стороны я использую только комбинацию Vagrant и Docker.

Я использую vagrant для предоставления компьютеров (есть дополнительные облачные провайдеры, но я использую встроенный VirtualBox. Поскольку я использую этот подход, внешняя сеть и хранилище в значительной степени ручные, но если вы используете что-то вроде плагина vagrant-aws, вы можете Скажите AWS для предоставления необходимых деталей для вас.

Сценарий инициализации, который я использую, указывает на безопасное местоположение, которое содержит сертификат CA и ключи, используемые для подписи CSR вместе с docker swarm joinтокенами. Кроме того, я устанавливаю docker-engine и настраиваю его для присоединения к рою (инициализирую, если его нет).

Как только это будет решено, я просто делаю docker stack deployсо своего локального компьютера или сборки, чтобы развернуть стек со всем, что мне нужно.

В моем случае я просто отказался от шеф-повара в пользу использования простых сценариев после установки, которые используются в качестве сценариев обеспечения yumили apt-getвключены.

Я также использую плагин vagrant- triggers для добавления дополнительных сценариев перед уничтожением (в моем случае, чтобы покинуть рой).

Приятной частью централизации с Vagrant является то, что вы можете копировать среду на другой системе или на одном компьютере для разработки, просто добавив или изменив providerраздел. Имейте в виду, я не прошел настройку OpenStack на одном компьютере для управления VirtualBox.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.