Как мне подготовить MAAS для обслуживания изображений в OpenStack?
У меня есть готовый Openstack с MAAS, как мне подготовить облако с образами Ubuntu, чтобы я мог развернуть его с помощью Juju?
1 ответ
Подготовка MAAS для Juju и OpenStack с использованием Simplestreams
Когда Juju загружает облако, ему нужны две критически важные информации:
- UUID изображения для использования при запуске новых вычислительных экземпляров.
- URL-адрес, с которого можно загрузить правильную версию архива инструментов.
Эта необходимая информация хранится в формате метаданных json, который называется "простые потоки". Для поддерживаемых общедоступных облачных сервисов, таких как Amazon Web Services, HP Cloud, Azure и т. Д., Конечный пользователь не предпринимает никаких действий. Однако те, кто настраивает частное облако, или кто хочет изменить работу вещей (например, использовать другое изображение Ubuntu), могут создать свои собственные метаданные, немного поняв, как это работает.
Формат simplestreams используется для структурного описания связанных элементов. Смотрите проект Launchpad lp: simplestreams. Ниже мы обсудим, как Juju определяет, какие метаданные использовать, и как создавать свои собственные изображения и инструменты, чтобы Juju использовал их вместо значений по умолчанию.
Основной рабочий процесс
Будь то изображения или инструменты, Juju использует путь поиска, чтобы попытаться найти подходящие метаданные. Компоненты пути (в порядке поиска):
- Пользователь указал местоположение (указано
tools-metadata-url
или жеimage-metadata-url
настройки конфига). - Среда облачного хранения.
- Определенные местоположения провайдера (например, конечная точка keystone, если на Openstack).
- Веб-сайт с метаданными для поддерживаемых общедоступных облаков - https://streams.canonical.com/
Метаданные могут быть встроенными или без подписи. Мы указываем, что файл метаданных подписан с использованием расширения ".sjson". Каждое местоположение в пути сначала ищется для подписанных метаданных, и, если ни одно из них не найдено, предпринимаются попытки подписать метаданные без знака, прежде чем перейти к следующему местоположению пути.
Juju поставляется с открытыми ключами, используемыми для проверки целостности метаданных изображений и инструментов, полученных с https://streams.canonical.com/. Таким образом, Juju будет "Просто работать" с любым поддерживаемым публичным облаком, используя подписанные метаданные. Настройка метаданных для частного облака (например, Openstack) требует, чтобы метаданные генерировались с помощью инструментов, поставляемых с Juju.
Содержимое метаданных изображения
Метаданные изображения используют тип контента simplestreams "image-id". Идентификатор продукта формируется следующим образом:
com.ubuntu.cloud:server:<series_version>:<arch>
Например:
com.ubuntu.cloud:server:14.04:amd64
Не выпущенные изображения (например, бета-версия, ежедневные и т. Д.) Имеют идентификаторы продукта, такие как
com.ubuntu.cloud.daily:server:13.10:amd64
Индекс метаданных и файлы продукта должны находиться в следующем дереве каталогов (относительно URL-адреса, связанного с каждым компонентом пути):
<path_url>
|-streams
|-v1
|-index.(s)json
|-product-foo.(s)json
|-product-bar.(s)json
Индексный файл должен называться "index.(S)json" (sjson для подписанного). Различные файлы продукта именуются в соответствии со значениями пути, содержащимися в файле индекса.
Инструменты метаданных используют контент типа simplestreams "content-download". Идентификатор продукта формируется следующим образом:
"com.ubuntu.juju:<series_version>:<arch>"
Например:
"com.ubuntu.juju:12.04:amd64"
Индекс метаданных и файлы продукта должны находиться в следующем дереве каталогов (относительно URL-адреса, связанного с каждым компонентом пути). Кроме того, ожидаются инструменты tarballs, которые Juju нужно скачать.
|-streams
| |-v1
| |-index.(s)json
| |-product-foo.(s)json
| |-product-bar.(s)json
|
|-releases
|-tools-abc.tar.gz
|-tools-def.tar.gz
|-tools-xyz.tar.gz
Индексный файл должен называться "index.(S)json" (sjson для подписанного). Имя файла (ов) файла и инструментов совпадает с тем, что есть в файлах индекса / продукта.
конфигурация
Для поддерживаемых общедоступных облаков дополнительная настройка не требуется; все работает из коробки. Однако для целей тестирования или для неподдерживаемых облачных развертываний Juju необходимо знать, где найти инструменты и какой образ использовать. Даже для поддерживаемых общедоступных облаков, где доступны все необходимые метаданные, пользователь может поместить свои собственные метаданные в путь поиска, чтобы переопределить то, что предоставляется облаком.
Пользователь указал URLОни изначально указаны в .juju/environments.yaml
файл (и затем впоследствии копируется в файл jenv при загрузке среды). Для изображений используйте image-metadata-url
; для инструментов, используйте tools-metadata-url
, URL-адреса могут указывать на общедоступный контейнер / контейнер в облаке, адрес, обслуживаемый http-сервером, или даже на общий каталог, доступный для всех экземпляров узлов, работающих в облаке.
Предположим, что сервер Apache http с базовым URL https://juju-metadata
, предоставляя доступ к информации на <base>/images
а также <base>/tools
, Файл yaml среды Juju может содержать следующие записи (одну или обе):
tools-metadata-url: https://juju-metadata/tools
image-metadata-url: https://juju-metadata/images
Необходимые файлы в каждом месте соответствуют макету каталога, описанному ранее. Для общего каталога используйте URL-адрес в форме file:///sharedpath
,
Если в указанном пользователем URL-адресе не найдено подходящих метаданных, выполняется поиск в облачном хранилище среды. Пользовательская конфигурация здесь не требуется - все среды Juju настроены с облачным хранилищем, которое используется для хранения информации о состоянии, обаяний и т. Д. Настройка облачного хранилища зависит от поставщика; для облаков Amazon и Openstack хранилище определяется значением "control-bucket", для Azure значение "storage-account-name" является релевантным.
(Необязательно) структура каталогов внутри облачного хранилища выглядит следующим образом:
|-tools
| |-streams
| |-v1
| |-releases
|
|-images
|-streams
|-v1
Конечно, если требуются только пользовательские метаданные изображения, каталог инструментов не потребуется, и наоборот.
Обратите внимание, что если Juju Bootstrap запускается с --upload-tools
Опция, инструменты и метаданные размещаются в соответствии с приведенной выше структурой. Вот почему инструменты для Juju доступны.
Поставщики могут разрешить дополнительные места для поиска метаданных и инструментов. Для OpenStack конечные точки Keystone могут быть созданы администратором облака. Они определены следующим образом:
juju-tools значение, как описано выше в Tools Metadata Contentsproduct-streams значение
Другие провайдеры также могут указывать местоположения, хотя реализация будет отличаться.
Это местоположение по умолчанию, используемое для поиска метаданных изображений и инструментов, и используется, если ранее ни в одном из указанных местоположений не найдено совпадений. Конфигурация пользователя не требуется.
При развертывании частного облака существует две основные проблемы:
- Идентификаторы изображений будут привязаны к облаку.
- Часто внешний доступ в интернет блокируется
Проблема 1 означает, что метаданные идентификатора изображения должны быть созданы и доступны.
Проблема 2 означает, что инструменты должны быть отражены локально, чтобы сделать их доступными.
Существуют инструменты Juju, помогающие создавать и проверять метаданные изображений и инструментов. Для инструментов часто легче всего просто отразить https://streams.canonical.com/tools
, Однако метаданные изображения не могут быть просто зеркально отражены, потому что идентификаторы изображения взяты у поставщика облачного хранилища, поэтому их необходимо сгенерировать и проверить с помощью команд, описанных ниже.
Доступные инструменты метаданных Juju можно увидеть с помощью команды help:
juju help metadata
Общий рабочий процесс:
- Создать метаданные изображения
- Скопируйте метаданные изображения куда-нибудь в пути поиска метаданных
- Опционально, зеркалируйте инструменты где-нибудь в пути поиска метаданных
- При необходимости настройте tools-metadata-url и / или image-metadata-url
Генерация метаданных изображения с использованием
juju metadata generate-image -d <metadata_dir>
Как минимум, приведенная выше команда должна знать идентификатор изображения для использования и каталог для записи файлов.
Другие обязательные параметры, такие как регион, серия, архитектура и т. Д., Взяты из текущей среды Juju (или среды, указанной с помощью опции -e). Эти параметры также могут быть переопределены в командной строке.
Команда метаданных изображения может быть запущена несколько раз с разными регионами, сериями, архитектурой и будет продолжать добавление в файлы метаданных. После того как все необходимые идентификаторы изображений будут добавлены, json-файлы индекса и продукта могут быть загружены в папку в пути поиска метаданных Juju. Согласно разделу Конфигурация, это может быть где-то указано image-metadata-url
настройка или облачное хранилище и т. д.
Примеры:
изображения метаданных URL
- загрузить содержимое в
http://somelocation
- установите для image-metadata-url значение
http://somelocation/images
- загрузить содержимое в
Облачное хранилище
При запуске без параметров команда проверки будет брать все необходимые данные из текущей среды Juju (или, как указано в -e) и выводить идентификатор изображения, который будет использоваться для ускорения экземпляра. Кроме того, в командной строке можно указать ряд, регион, архитектуру и т. Д., Чтобы переопределить значения в конфигурации среды.
Метаданные инструментовКак правило, инструменты и соответствующие метаданные отражаются от https://streams.canonical.com/tools
, Тем не менее, можно вручную сгенерировать метаданные для специального встроенного архива инструментов.
Во-первых, создайте tarball соответствующих инструментов и поместите в каталог, структурированный следующим образом:
<tools_dir>/tools/releases/
Теперь сгенерируйте соответствующие метаданные для инструментов, выполнив команду:
juju generate-tools -d <tools_dir>
Наконец, содержимое может быть загружено в место в пути поиска метаданных Juju. Согласно разделу "Конфигурация", это может быть где-то задано настройкой tools-metadata-url или настройками пути хранения в облаке и т. Д.
Примеры:
инструменты-метаданные URL
- загрузить содержимое каталога инструментов в
http://somelocation
- установить tools-metadata-url в
http://somelocation/tools
- загрузить содержимое каталога инструментов в
Облачное хранилище
загружать содержимое непосредственно в облачное хранилище среды
Как и в случае с метаданными изображения, команда проверки используется для обеспечения доступности инструментов для Juju:
juju metadata validate-tools
Те же комментарии применимы. Запустите инструмент проверки без параметров, чтобы использовать детали из среды Juju, или переопределите значения, как требуется в командной строке. Увидеть juju help metadata validate-tools
Больше подробностей.
Следующий шаг: