Назад | Перейти на главную страницу

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

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

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

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

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

Вопрос №2: Как мне смешать все эти инструменты? Есть ли в этом смысл?

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

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

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

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

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

  • Бродяга: Создавать и настраивать легкие, воспроизводимые и переносимые среды разработки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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