%3F.png)
Я веб-разработчик, но мне также интересны некоторые административные задачи. Поэтому новый переход от чистого администрирования к dev-ops оказался для меня полезным.
В любом случае, у меня есть некоторые проблемы с тем, чтобы вложить некоторые вещи в отношения. Может, их и нет, поэтому я хотел попросить помощи, чтобы прояснить ситуацию.
В принципе, я хочу сопоставить четыре типа программного обеспечения (насколько я понимаю). Конкретные продукты не имеют значения, вы можете разместить любое похожее программное обеспечение в качестве альтернативы:
- Vagrant: Насколько я понимаю, это автоматизация создания и управления виртуальными машинами: их настройка, запуск и остановка. Это можно сделать с помощью локальной виртуальной машины или удаленно, например, на облачной платформе.
- Docker: «легковесная виртуальная машина», основанная на нескольких концепциях ядра Linux, которую можно использовать для изолированного запуска процессов, например, в общей среде веб-хостинга.
- Chef: инструмент для установки и настройки операционной системы, например, внутри виртуальной машины.
- OpenStack: инструмент, позволяющий вам создать собственное частное облако, сопоставимое с чем-то вроде AWS.
Вопрос №1: Верны ли мои объяснения или я ошибаюсь относительно некоторых (или всех) из этих привычек?
Вопрос №2: Как мне смешать все эти инструменты? Будет ли в этом смысл?
В моем воображении и с моей точки зрения, вы могли бы пойти и
- используйте OpenStack для создания собственного облака,
- используйте Vagrant для управления виртуальными машинами, запущенными в облаке,
- используйте Chef для настройки этих виртуальных машин
- и, наконец, использовать Docker для запуска процессов внутри виртуальных машин.
Это правильно? И если да, то можете ли вы дать мне совет, как начать всем этим пользоваться (это довольно много одновременно, и я пока не знаю, с чего начать)?
решение1
Давайте воспользуемся их веб-страницами, чтобы узнать, о чем все эти проекты. Я изменю порядок, в котором вы перечислили:
Шеф-повар: Chef — это платформа автоматизации, которая преобразует инфраструктуру в код.
Этопрограммное обеспечение для управления конфигурацией. Большинство из них используют одну и ту же парадигму: они позволяют вам определитьсостояниевы хотите, чтобы машина была, в отношении файлов конфигурации, установленного программного обеспечения, пользователей, групп и многих других типов ресурсов. Большинство из них также предоставляют функциональность для передачи изменений на определенные машины, процесс, обычно называемыйоркестровка.
бродяга: Создание и настройка легких, воспроизводимых и переносимых сред разработки.
Он обеспечиваетвоспроизводимыйспособ созданияполностью виртуализированные машиныиспользуя технологию Oracle VirtualBox или VMWare в качествепоставщики. Vagrant может координировать работу с программным обеспечением управления конфигурацией, чтобы продолжить процесс установки там, где установщик операционной системы завершает работу. Это известно какпредоставление.
Докер: проект с открытым исходным кодом для упаковки, отправки и запуска любого приложения в виде легкого контейнера.
Функциональность этого программного обеспечения несколько совпадает с Vagrant, в котором оно предоставляет средства для определения установок операционных систем, но существенно отличается по технологии, используемой для этой цели. Docker используетLinux-контейнеры, которые не являются виртуальными машинами как таковыми, а изолированными процессами, работающими в изолированных файловых системах. Docker также может использоватьсистема управления конфигурациейдля снабжения контейнеров.
OpenStack: Программное обеспечение с открытым исходным кодом для создания частных и публичных облаков.
Хотя верно, что OpenStackможет быть развернут на одной машинетакое развертывание предназначено исключительно для проверки концепции и, вероятно, не очень функционально из-за ограничений ресурсов.
Основной целью установок OpenStack являются среды с несколькими узлами на «голом железе», гдеразные компонентыможет использоваться в специализированном оборудовании для достижения лучших результатов.
Ключевой функциональностью OpenStack является поддержка множества технологий виртуализации, от полностью виртуализированных (VirtualBox, VMWare) до паравиртуализированных (KVM/Qemu), а также контейнеров (LXC) и дажеПользовательский режим Linux (UML).
Я попытался представить эти продукты как компоненты определенной архитектуры. С моей точки зрения, имеет смысл сначала определить свои потребности в отношении необходимой среды (Chef, Puppet, Ansible, ...), затем иметь возможность развернуть ее контролируемым образом (Vagrant, Docker, ...) и, наконец, масштабировать ее до глобальных размеров, если это необходимо.
Объем всех этих функций, которые вам понадобятся, следует определить в рамках вашего проекта.
Также обратите внимание, что я слишком упростил в основном все технические объяснения. Пожалуйста, используйте указанные ссылки для получения подробной информации.
решение2
Думаю, что с опытом разработчика стать «devops» будет сложнее. Вашему вопросу почти 3 года, поэтому было бы интересно услышать, как вы оцениваете этот путь. Я дам ответ с точки зрения системного администратора о приложениях, которые вы упомянули выше, и, надеюсь, это прольет свет или даст нетехническую точку зрения, которая в какой-то степени объяснит, почему человек (администратор или разработчик) начнет рассматривать именно то, о чем вы спросили. Например, с точки зрения devops какова связь между x, y, z? Являются ли эти инструменты больше, чем сумма их частей?
Я на самом деле думаю, что системные администраторы здесь имеют преимущество, большинство приложений, которые вы упомянули в своем вопросе, решают административные «проблемы» и тем самым предоставляют более абстрактную среду центра обработки данных, а это, в свою очередь, более программируемо для разработчиков и новой стратегии «devops» (читай стратегия/команда, devops — это не человек). Так какова связь с приложениями, которые вы упомянули? Как это обеспечивает целостный подход к ИТ-услугам?
OpenStack: инструмент, позволяющий вам создать собственное частное облако, сопоставимое с чем-то вроде AWS.
Это то, что есть, но что она делает? - наиболее удачно названная операционная система была DOS - она управляла вашим диском, абстрагируя BIOS, OpenStack управляет вашим центром обработки данных и абстрагирует вашу инфраструктуру (IaaS - жаргонное слово для операционной системы центра обработки данных). Теперь у вашего центра обработки данных есть API, синтаксис команд и графический интерфейс, OpenStack может управлять гипервизорами, коммутаторами, маршрутизаторами, брандмауэрами, сетями хранения данных, балансировщиками нагрузки, хостами Docker и т. д. OpenStack использует 'плагин' вашего производителя оборудованияиликонкретная функция может существовать исключительно в программном обеспечении как программное обеспечение, определенноечто-нибудьили виртуализация сетевых функций. Поверх этого OpenStack и все другие облака могут организовывать свою собственную инфраструктуру, считывая скрипты, которые вы бросаете в механизм оркестровки или которые запускаются на основе правил (масштабирование вверх, масштабирование вниз и т. д.). Так что openstack — это гигантский уровень абстракции, например, мне все равно, какой у меня коммутатор, дайте мне сеть сэтоткоманда, или, создайте мне сложную сбалансированную нагрузку, HA, общедоступная, автоматическое масштабирование, зарегистрированное доменное имя, подключенное хранилищештуковина-с помощью этого скрипта, который я нашел в интернете.
Docker: «легковесная виртуальная машина», основанная на нескольких концепциях ядра Linux, которую можно использовать для изолированного запуска процессов, например, в общей среде веб-хостинга.
Docker — это еще один уровень абстракции, и как облако — это революционная технология, он меняет отрасль, поскольку решает множество операционных «проблем», таких как зависимости программного обеспечения, обновления, изоляция данных и чистая переносимость. Java стала популярной из-за переносимости исходного кода, о которой разработчикам не нужно было думать, работающая JVM означала, что их код должен работать на кофемашине, если она поддерживает Java. Docker решает похожую проблему, чтобы запустить мое приложение, вам нужен хост docker,нет, вам нужна эта версия python, это ядро, этот дистрибутив linux и так далее, у приложения, конечно, все еще есть эти зависимости, но базовому хосту все равно, а администратору все равно, что вы делаете внутри изолированного контейнера (до определенной степени). Docker меняет как парадигму разработки, так и парадигму эксплуатации, рассматривая всю операционную систему и ее службы как двоичный файл.мы можем получить их из репозитория, версионировать их, изменять их, запускать их с параметрами и т. д.
Chef: инструмент для установки и настройки операционной системы, например, внутри виртуальной машины.
Да, и не такие разрушительные, как первые два, Chef, Puppet, Ansible, Salt, System Center Operations Manager и огромное множество других приложений в этой области предоставляют разработчикам и администраторам возможность моделировать развертывания, обновления и другие действия (изменения конфигурации). Похоже, что нет какого-либо органа по стандартизации, который бы контролировал эти усилия, напримересть для облака. Но мы не имеем дело с чем-то столь определенным, как инфраструктура, поэтому изучать их сложнее, и мало что можно перенести из одного в другое.
Vagrant: Насколько я понимаю, это автоматизация создания и управления виртуальными машинами: их настройка, запуск и остановка. Это можно сделать с помощью локальной виртуальной машины или удаленно, например, на облачной платформе.
Это приложение выделяется из списка упомянутых вами. Vagrant — это инструмент для разработчиков и игрушка для администраторов. С помощью Vagrant можно быстро создать среду разработки. Например, если я хочу разработать приложение для Android, то беру IDE от Vagrant. Думаю, Docker скоро его вытеснит.
можете ли вы дать мне совет, как начать всем этим пользоваться (это довольно много одновременно, и я пока не знаю, с чего начать)?
Вот почему я думаю, что администраторы имеют преимущество: нам приходилось делать большую часть работы вручную, и мы знаем, что может пойти не так. Манифесты Puppet, облачные вычисления и оркестровка Docker будут для нас проще, разработчикам придется выбирать из множества дополнительных направлений, поэтому мой совет всем потенциальным разработчикам DevOps — сначала станьте администратором.
решение3
Я только что завершил проект развертывания OpenStack, в котором используется сервер Chef внутри экземпляра Vagrant:https://github.com/bluechiptek/bluechipstack/blob/master/README.md
Основная проблема при таком подходе — получение экземпляром Vagrant того же IP-адреса каждый раз, когда вы хотите управлять узлами. Если вы используете статическую адресацию, это работает хорошо. Делать это через VPN — неидеально.
решение4
Со своей стороны я использую только комбинацию Vagrant и Docker.
Я использую Vagrant для подготовки машин (естьдополнительные поставщики облачных услугно я использую встроенный VirtualBox. Поскольку я использую этот подход, внешняя сеть и хранилище в значительной степени ручные, но если вы используете что-то вродебродяга-awsплагин, с помощью которого вы можете указать AWS предоставить вам необходимые детали.
Скрипт подготовки, который я использую, указывает на безопасное место, которое содержит сертификат CA и ключи, используемые для подписи CSR вместе с docker swarm join
токенами. Кроме того, я устанавливаю docker-engine и настраиваю его для присоединения к рою (инициализирую, если его нет).
Как только это будет сделано, я просто выполняю сборку docker stack deploy
со своего локального компьютера или сборочного блока, чтобы развернуть стек со всем необходимым.
В моем случае я просто бросилшеф-поварв пользу простого использования простых скриптов после установки, которые выполняют yum
или apt-get
включают в себя мои скрипты подготовки.
Я также используюбродячие-триггерыплагин для добавления дополнительных скриптов перед уничтожением (в моем случае для выхода из роя).
Хорошая часть централизации с Vagrant заключается в том, что вы можете реплицировать среду на другой системе или одном компьютере для разработки, просто добавив или изменив раздел provider
. Заметьте, я не настраивал OpenStack на одном компьютере для управления VirtualBox.