Создание решений с помощью IBM SmartCloud Enterprise: Практические рекомендации и инструменты

Эффективное управление ИТ-ресурсами предприятия в облаке

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

Этот цикл статей посвящен использованию пакетов программного обеспечения, управлению образами, и другим инструментам IBM® SmartCloud Enterprise для решения практических задач управления ИТ на предприятии.

Алекс Эймис, старший инженер-программист, IBM

Фото Алекса ЭймисаАлекс Эймис (Alex Amies) работает старшим инженером-программистом в IBM GTS Development Lab в Китае. В настоящее время занимается архитектурой IBM SmartCloud Enterprise. Ранее работал архитектором и разработчиком продуктов на основе облака и средств безопасности в других подразделениях IBM.



Алексей Карве, научный сотрудник, IBM

Алексей Карве (Alexei Karve) работает старшим инженером-программистом в Научно-исследовательском центре IBM им. Томаса Дж. Уотсона. Член проектной группы SmartCloud Enterprise, специализирующейся на пакетах ПО и VPN/VLAN для облачных систем поддержки бизнеса. Имеет богатый опыт работы в области служб оперативной поддержки, виртуализации и Tivoli Provisioning Manager. Работая в IBM с 1993 года, занимался самой разнообразной деятельностью в области системного управления.



Андрей Кочут, доктор философии, научный сотрудник, IBM

Андрей Кочут (Andrew Kochut) входит в состав проектной группы SmartCloud Enterprise, специализирующейся на системах поддержки бизнеса. Проживает в США.



Хидаятула Шейх, Ведущий инженер-программист, IBM

Хидаятула Шейх (Hidayatullah H. Shaikh) является ведущим инженером-программистом в IBM T.J. Watson Research Center's On-Demand Architecture and Development Team. В область его интересов входят моделирование и интеграция бизнес-процессов, ориентированная на службы архитектура, сетевые вычисления, электронная коммерция, enterprise Java, системы управления базами данных и кластеры повышенной готовности. Вы можете связаться с Хидаятулой по адресу hshaikh@us.ibm.com.



Цян Го Тон, консультирующий инженер-программист, IBM

Цян Го Тон (Qiang Guo Tong) работает в IBM с 2004 года. Один из руководителей группы разработки IBM SmartCloud Enterprise, ответственный за создание новых функций. Также является архитектором решения для упрощения глобализации SmartCloud. Обладает опытом работы в сфере глобализации технологий JavaEE. Более 8 лет занимается разработкой Web-приложений на основе архитектуры JavaEE и специализируется на технологиях Web 2.0, таких как Dojo и JSON-RPC.



Рэнди Рендал, старший инженер, IBM

Рэнди Рендал (Randy Rendahl) — ведущий изобретатель и член проектной группы SmartCloud Enterprise. В настоящее занимается службами поддержки бизнеса и специализируется в области биллинга и определения стоимости, автоматизации бизнес процессов и проектирования моделей данных BSS. Проживает в Ресеч-Траянгл-Парк (Дарем, штат Северная Каролина, США). Обладает широкими знаниями в сфере облачных технологий BSS, накопленными на протяжении продолжительной и разнообразный работы в сфере системного управления с момента прихода в IBM в 1989 году.



Скотт Педдл, программист-консультант, IBM

Фото Скотта ПеддлаСкотт Педдл (Scott Peddle) работает программистом-консультантом по IBM SmartCloud Enterprise. Возглавляет проекты, относящиеся к интеграции Rational Asset Manager в облачной среде. Руководил проектом по интеграции инструментов WebSphere BPM, таких как WebSphere Business Modeler и WebSphere Integration Developer, с применением Rational Asset Manager. Также был выпускающим инженером продуктов Rational для проектирования и сборки, таких как Rational Software Architect и Rational Application Developer.



21.09.2012

Одна из целей облачных вычислений ― предоставить пользователям облака богатый выбор рабочих ресурсов; другая ― сохранить управляемый объем нагрузки по решению задач поддержки для групп разработчиков образов и программного обеспечения. Может показаться, что это взаимоисключающие цели, но настоящий цикл статей (см. обзор цикла) демонстрирует, как можно эффективно использовать ресурсы пакетов ПО и образов и управлять ими, делая достижимыми обе эти цели.

В этой статье:

  • приводится обзор концепций управления пакетами ПО и образами;
  • объясняется ресурсная модель;
  • приводится сравнение этой модели с другими платформами управления пакетами ПО;
  • обсуждаются примеры практического применения;
  • исследуются имеющиеся инструменты.

Концепции иллюстрируются на примере приложения калькулятора электроэнергии. Мы покажем, как создать простое решение с весьма небольшим количеством кода на языке Python, и дадим инструкции по созданию пакета RPM. Читатель узнает, как установить этот пакет ПО на виртуальную машину в облаке. В последующих статьях этого цикла будут более подробно рассматриваться отдельные инструменты, API и способы применения с использованием того же примера приложения.

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

Этот цикл статей посвящен использованию пакетов ПО, управлению образами и другим инструментам IBM SmartCloud Enterprise для решения практических задач управления корпоративными ИТ; различные функции и инструменты, доступные в облаке, демонстрируются на простом примере приложения калькулятора электроэнергии.

Далее будут рассматриваться следующие темы:

  • обзор средств управления пакетами ПО и образами в IBM SmartCloud Enterprise;
  • импорт образов в IBM SmartCloud Enterprise;
  • управление пакетами ПО в IBM SmartCloud Enterprise с помощью ICCT;
  • управление пакетами ПО с помощью API IBM SmartCloud Enterprise;
  • управление пакетами ПО в IBM SmartCloud Enterprise с помощью CohesiveFT;
  • организация служб предприятия с помощью IBM Workload Deployer в составе IBM SmartCloud Enterprise;
  • обзор примеров использования средств управления пакетами ПО образами;
  • копирование образов из IBM SmartCloud Enterprise;
  • создание служб предприятия на базе IBM SmartCloud Enterprise.

Предварительные замечания

В контексте IBM SmartCloud Enterprise пакет ПО — это совокупность файлов программного обеспечения, конфигурации и метаданных, которые можно установить на экземпляр виртуальной машины.

В SmartCloud Enterprise пакеты ПО можно создавать и администрировать с помощью инструмента IBM Image Construction and Composition Tool (ICCT), REST-API SmartCloud Enterprise и сторонних инструментов.

Программное обеспечение образов виртуальных машин обычно бывает предустановлено и настроено разработчиком образов. Проблема такого подхода "сублимированного продукта" заключается в том, что трудно найти образ с нужным набором программного обеспечения, а это может привести к подходу "сделай сам", когда выбирают готовые образы виртуальной машины и рассматривают их как основу для установки собственного ПО. Это способствует размножению образов виртуальных машин, что в ИТ-кругах принято называть их расползанием (sprawl).

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

Другим, более портативным решением служит автономный инструмент IBM Image Construction and Composition Tool (ICCT), который позволяет добавлять ПО к виртуальным машинам. В настоящее время ICCT поставляется с IBM Workload Deployer 3.1, IBM SmartCloud Provisioning 1.2 и IBM SmartCloud Enterprise. ICCT хранит образы в виде пакетов Open Virtual Format Archive (OVA), которые можно устанавливать с помощью IBM Workload Deployer 3.1, IBM SmartCloud Enterprise и продуктов VMware.

Образы виртуальных машин могут содержать:

  • операционные системы;
  • промежуточное ПО;
  • приложения;
  • конфигурации пользователя.

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

Принятие решений о том, что именно включать в образ и как сделать его шаблоном ― две основополагающие задачи в искусстве разработки образов.


Модель ресурсов SmartCloud Enterprise

На рисунке 1 показана упрощенная логическая модель ресурсов.

Рисунок 1. Модель ресурсов образов и пакетов ПО
Модель ресурсов образов и пакетов ПО

Описание ресурсов, атрибуты и отношения приведены в таблице 1.

Таблица 1. Описание ресурсов, атрибуты и отношения
РесурсОписаниеАтрибуты и отношения
ОбразДвоичный файл, который можно хранить и устанавливать на экземпляр виртуальной машины, и описывающие его метаданные.Образ хранится в определенном месте. Состояние указывает, готов ли он к использованию или находится в некотором переходном состоянии. Образ можно использовать для создания экземпляра.
МестоположениеЦентр обработки данных или другое место, где располагаются физические машины.Образы, экземпляры и VLAN должны размещаться в одном и том же месте.
ЭкземплярВиртуальная машина.Процесс инициализации принимает в качестве входных данных образ и InstanceType, а также, при необходимости, адреса и тома для создания действующего экземпляра. Состояние указывает, выполняется ли он или находится при некоторых других состояниях.
InstanceTypeШаблон ресурсов, связанных с виртуальной машиной.Количество виртуальных процессоров, памяти, дискового пространства и архитектура (32- или 64-разрядная).
SoftwareBundleСценарии установки и активации, а также двоичные файлы и другие ресурсы, которые могут быть установлены по мере необходимости.SoftwareBundle можно добавить к образу. Когда создается экземпляр этого образа, в файловую систему виртуальной машины вводятся SoftwareBundle и сценарии активации.
ТомВиртуальное блочное устройство хранения данных, которое можно использовать для хранения данных и образов.Том можно прикрепить к экземпляру во время инициализации или позднее, когда он выполняется. Пока том не прикреплен к экземпляру, содержащиеся в нем данные недоступны.
АдресПредставление IP-адреса, которым можно управлять как независимым ресурсом.Адрес можно присоединить к экземпляру. Адрес всегда ассоциируется с VLAN.
VLANВиртуальная локальная сеть или подсеть.VLAN могут быть публичными или частными, допускающими подключение только через VLAN или многосетевую виртуальную машину.
КлючПредставление SSH-ключа; закрытый ключ должен храниться у пользователя; облако предоставляет открытый ключ и позволяет пользователю при необходимости создавать новый ключ.Ключ вводится в виртуальные машины Linux во время инициализации и перед запуском.

Системы управления пакетами программного обеспечения

Управление пакетами ПО ― важный аспект управления вычислительными системами, в том числе облачными. Управление пакетами специфично для контекста облака, потому что происходит взаимодействие с экземплярами виртуальной машины, которые создаются динамически. Это открывает возможности для добавления дополнительного программного обеспечения "на лету" и вселяет в пользователя уверенность, что система будет «просто работать».

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

В этом разделе описываются системы управления пакетами программного обеспечения для Linux и их применение к облачным системам. Приводится пример создания программного модуля на языке Python, его привязки в качестве RPM и внедрения в виртуальную машину на основе облака на время подготовки.

Управление пакетами RPM и YUM

Red Hat Package Manager (RPM) разработан компанией Red Hat в 90-е годы и входит в состав Linux Standard Base. Он перенесен и на другие операционные системы, такие как IBM AIX ®:

  • это помогает поддерживать согласованность между пакетами;
  • может использоваться для получения сведений об установленных пакетах;
  • проверяет пакеты на подлинность с помощью криптографической подписи;
  • обновляет уже установленные пакеты;
  • позволяет получать пакеты из Интернета.

Для RPM существует несколько интерфейсов, в том числе Yellow Dog Updater Modified (YUM), up2date, Zypper и Smart Package Manager. RPM используется главным образом для Red Hat Enterprise Linux, CentOS и Fedora. Для систем на базе Debian, в том числе SUSE и Ubuntu, используются системы управления пакетами для Debian.

YUM разработан в Дюкском университете в качестве интерфейса управления системами Red Hat Linux для RPM. YUM обеспечивает RPM дополнительными функциями автоматического обновления и управления зависимостями и работает с центральными репозиториями пакетов ПО. RPM "понимает" зависимости, но не разрешает их. Это задача, решение которой значительно облегчает YUM.

Пакет устанавливается командой rpm с параметром -i:

# rpm -i <package-name>

Если существуют обязательные зависимости, то команда rpm завершится с ошибкой. Для установки, удаления или обновления пакетов нужно иметь полномочия root.

Для установки пакета с помощью YUM используется команда yum с опцией install. Например, вот команда для установки dos2unix:

# yum install dos2unix

Если существуют зависимости, YUM установит их автоматически.

Управление пакетами для Debian

В Debian-системах, в том числе Ubuntu и SUSE, используется система управления пакетами Advanced Packaging Tool (APT). Как и в случае RPM и YUM, данные пакетов хранятся в центральной базе данных.

Пакет можно установить командой apt-get install. Вот команда для установки пакета dos2unix:

# apt-get install dos2unix

apt-get находит информацию о пакете в удаленном репозитории, определяет зависимости, загружает пакет и устанавливает его.

Модули Python

У Python есть встроенные возможности для распространения и установки модулей. С точки зрения установки и использования программного обеспечения Python эти возможности легко используются путем загрузки модуля, его распаковки и выполнения команды setup. Python – это удобный язык для демонстрации процесса распространения и управления ПО. Для понимания этой статьи о Python не нужно знать ничего сверх того, что объясняется в этом разделе.

Прежде чем приступить, приведем некоторые основные термины, используемые при работе с Python (см. таблицу 2).

Таблица 2. Термины, используемые при работе с кодом Python
ТерминОписание
МодульЕдиница многократно используемого кода Python.
Чистый Python-модуль Модуль, написанный на Python и содержащийся в файле module.py.
ПакетКаталог, содержащий один или более чистых Python-модулей и файл инициализации __init__.py.
Модуль расширенияМодуль, написанный на C/C++ или Java™ для Jython.
Модуль дистрибутиваНабор модулей, распространяемый как один ресурс. Это эквивалент пакета программного обеспечения на многих других платформах и в общем смысле этого термина.

Команда для установки модуля Python:

# python setup.py install

Это обычно делается при полномочиях root, и модуль устанавливается в каталог {INSTALL_ROOT}//site-packages, например, /usr/lib/python2.6/site-packages. Иначе, его можно установить на правах обычного пользователя в домашний каталог с помощью следующей команды:

$ python setup.py install --user

Python содержит инструментарий Distutils, который помогает разработчикам модулей распространять свое ПО и делает возможными эти команды.


Пример кода: модуль дистрибутива Python

Теперь мы создадим модуль Python, сценарий установки и установим его, чтобы проверить. Пакет ecalc представляет собой калькулятор электроэнергии и содержит один модуль energy_calculator с классом EnergyCalculator. В этом простом примере код просто выводит некоторые образцы данных; однако те же идеи легко применить к более сложному сценарию, где требуется высоко организованная система управления пакетами ПО.

Код класса EnergyCalculator:

# energy_calculator.py
"""
energy_calculator module for computing energy usage
"""

class EnergyCalculator:
    """EnergyCalculator class"""

    def __init__(self):
        self._base = 200

    def energy_used(self):
        return self._base

Код его вызова из клиента калькулятора электроэнергии:

#!/usr/bin/python
# energy_client.py

""" EnergyCalculator client """

from energy_calculator import EnergyCalculator

ec = EnergyCalculator()
print("You used {0} kJ today".format(ec.energy_used()))

При вызове пример выводит:

$ ./energy_client.py
You used 200 kJ today

Сначала создадим сценарий установки:

# setup.py
# Setup script for libenery

from distutils.core import setup
setup(name='libenergy',
      version='0.1',
      py_modules=['energy_calculator'],
      )

Затем создадим модуль дистрибутива:

$ python setup.py sdist

Команда setup script в приведенном выше примере создает пакет дистрибутива исходного кода. Создается каталог dist со сжатым файлом libenergy-0.1.tar.gz, который можно использовать для установки пакета. Он не включает в себя клиентский сценарий energy_client.py. Сценарий предупреждает об отсутствии информации об авторе, URL и файла README. Кроме того, создается манифест в файле MANIFEST, который включен в файл TAR. Чтобы скопировать файл libenergy-0.1.tar.gz в целевую машину, используйте команду защищенного копирования:

$ scp -i ${key} libenergy-0.1.tar.gz idcuser@${vm}:libenergy-0.1.tar.gz

Эта команда предполагает, что вы работаете на машине Linux. В Windows все аналогично, но требуется команда scp. Она входит в OpenSSH. При этом используется ключ SSH ${key} для копирования файла в виртуальную машину с именем узла или IP-адресом ${vm} типа idcuser. Во избежание многократного ввода значений определите соответствующие переменные окружения. Затем можно развернуть и установить пакет удаленно, выполнив из каталога dist следующую команду:

$ ssh -i ${key} idcuser@${vm} 'gunzip libenergy-0.1.tar.gz; 
 tar -xvf libenergy-0.1.tar; cd libenergy-0.1; sudo python setup.py install'

Этот сценарий SSH выполняется удаленно, распаковывая пакет и устанавливая его как root командой sudo. Удаленные команды заключены в апострофы и разделены точкой с запятой.

Теперь, когда модуль energy_calculator установлен на целевом компьютере, для его вызова можно использовать клиентскую программу с помощью следующего сценария:

$ scp -i ${key} energy_client.py idcuser@${vm}:energy_client.py
$ ssh -i ${key} idcuser@${vm} './energy_client.py'
You used 200 kJ today

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

Итак, вот что мы имеем на данный момент:

  • мы написали пример модуля Python и клиентский сценарий для его исполнения;
  • создали установочный пакет для модуля;
  • удаленно установили модуль на виртуальной машине с помощью SSH;
  • удаленно вызвали модуль на виртуальной машине с помощью клиентского сценария.

Неплохо, особенно с учетом того, что до сих пор мы писали и использовали «свое собственное» программное обеспечение. Однако это простой пример; здесь становятся очевидными несколько недостатков.

  1. Потребитель должен знать, как устанавливать модули Python. Хотелось бы иметь возможность использовать один и тот же метод для установки пакетов, написанных на разных языках.
  2. Искать его и при необходимости редактировать не удобно никому, кроме программистов, знающих Python.
  3. В нем нет описания предпосылок, таких как необходимый тип и уровень операционной системы и Python.
  4. Во избежание проблемы расползания образов хотелось бы устанавливать пакет с консоли облака и внедрять его в виртуальные машины. По крайней мере, иметь другие варианты, помимо написания сложных на вид bash-сценариев, таких как в приведенном примере.

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


Установка модуля Python с помощью RPM

В Python есть некоторые дополнительные инструменты, помогающие создавать установочные пакеты для Red Hat Package Management(RPM), Windows и других форматов, исключая упомянутые выше недостатки 1, 2 и 3. Эти форматы удобнее использовать при написании сценариев активации и запуска.

В этом разделе показано, как написать сценарий активации для проверки того, что калькулятор электроэнергии уже установлен. Если он не установлен, то его можно установить командой rpm.

Создание пакета RPM:

$ python setup.py bdist_rpm

Эта команда создает пакет RPM libenergy-0.1-1.noarch.rpm в каталоге dist. Скопируйте его в целевую виртуальную машину командой scp:

$ scp -i ${key} libenergy-0.1-1.noarch.rpm idcuser@${vm}:/tmp/libenergy-0.1-1.noarch.rpm

Установите модуль калькулятора электроэнергии:

$ sudo rpm -i /tmp/libenergy-0.1-1.noarch.rpm

Команда rpm проверяет, установлен ли он, и не переустанавливает пакет, если он уже работает.

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


Клонирование образа с помощью Web-портала SmartCloud

Ручной процесс создания пакетов ПО не так прост, как процесс с использованием инструментов типа ICCT, но он нагляднее для демонстрации и лучше поддается автоматизации с использованием API SmartCloud Enterprise. По этим причинам мы начнем с него.

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

  1. Запустите экземпляр виртуальной машины и выполните нужные настройки, включая установку программного обеспечения.
  2. Клонируйте существующий образ.

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

Чтобы клонировать образ, выполните следующие действия.

  1. Нажмите кнопку Add Image на странице Control Panel | Images. Откроется окно Base images (см. рисунок 2).
    Рисунок 2. Клонирование образа с помощью Web-портала SmartCloud
    Клонирование образа с помощью Web-портала SmartCloud
  2. Нажмите кнопку Next. Открывается шаг 2 мастера (см. рисунок 3).
    Рисунок 3. Шаг 2 мастера клонирования образов
    Шаг 2 мастера клонирования образов
  3. Введите имя и описание клонируемого образа. Проверьте данные на шаге 3 мастера и нажмите кнопку Next.
  4. Согласитесь с условиями на шаге 4 и нажмите кнопку Submit. Процесс клонирования займет несколько минут, затем появятся панель управления и каталог ресурсов.

Содержимое ресурсов образа в каталоге ресурсов выглядит как на рисунке 4.

Рисунок 4. Файлы, включенные в репозиторий ресурсов клонированного образа
Файлы, включенные в репозиторий ресурсов клонированного образа

Среди этих файлов есть файл parameters.xml, который описывает входные параметры и файлы, моделирующие топологию образа. Наиболее интересные для нас файлы находятся в папке activation_scripts, как показано на рисунке 5.

Рисунок 5. Файлы из папки activation_scripts
Файлы из папки activation_scripts

Введение сценариев установки в ВМ во время инициализации

Содержание клонированного образа из предыдущих разделов в каталоге ресурсов выглядит, как показано на рисунке 6.

Рисунок 6. Файлы, включенные в репозиторий ресурсов клонированного образа
Файлы, включенные в репозиторий ресурсов клонированного образа

Среди этих файлов есть файл parameters.xml, который описывает входные параметры и файлы, моделирующие топологию образа. Наиболее интересные для нас файлы находятся в папке activation_scripts, как показано на рисунке 7.

Рисунок 7. Файлы из папки activation_scripts
Файлы из папки activation_scripts

Ключом к введению файлов в виртуальную машину во время инициализации служит файл scripts.txt. Вот файл scripts.txt из клонированного образа RHEL 6:

cloud-startup3.txt=/etc/init.d/cloud-startup3.sh
activate.txt=/etc/cloud/activate.sh

Он приводит к тому, что файл cloud-startup3.txt вводится в ВМ как /etc/init.d/cloud-startup3.sh, а файл activate.txt ― как /etc/cloud/activate.sh.

Чтобы внедрить в виртуальную машину свой собственный файл, выполните следующие действия.

  1. Загрузите файлы из папки activation_scripts, помещая их в папку с таким же именем.
  2. Добавьте в эту папку файл libenergy-0.1-1.noarch.rpm.
  3. Создайте сценарий libenergy-activate.sh:
    /usr/bin/logger 'installing libenergy-0.1'
    rpm -i /tmp/libenergy-0.1-1.noarch.rpm  2> /tmp/energy.log
    /usr/bin/logger < /tmp/energy.log
  4. Будьте осторожны с разделителями строк в стиле UNIX или запустите утилиту dos2unix. Нужно скопировать этот сценарий в виртуальную машину и выполнять его при запуске. Для этого добавьте его в папку activation_scripts. Измените файл scripts.txt, как показано ниже:
    cloud-startup3.txt=/etc/init.d/cloud-startup3.sh
    activate.txt=/etc/cloud/activate.sh
    libenergy-0.1-1.noarch.rpm=/tmp/libenergy-0.1-1.noarch.rpm
    libenergy-activate.sh=/home/idcuser/libenergy-activate.sh
  5. Вызовите сценарий из сценария запуска в облаке cloud-startup3.sh. Отредактируйте cloud-startup3.sh и добавьте строки, выделенные жирным шрифтом:
        start)
            echo "== Cloud Starting"
            if [ ! -e /etc/cloud/idcuser_pw_randomized ]; then
                echo "Randomizing idcuser password"
                echo idcuser:'< /dev/urandom tr -dc _A-Z-a-z-0-9 |head -c16' | 
    			 /usr/sbin/chpasswd
                touch /etc/cloud/idcuser_pw_randomized
            fi
            /sbin/restorecon -R -v /home/idcuser/.ssh
            chmod +x /home/idcuser/libenergy-activate.sh
            /home/idcuser/libenergy-activate.sh
            ;;
  6. Сожмите папку и вызовите результирующий файл activation_scripts. Отредактируйте ресурс образа для клонированного образа и загрузите файл ZIP. Он распаковывается в процессе загрузки.

Чтобы проверить клонированный и измененный образ, инициализируйте виртуальную машину на основе клонированного образа; убедитесь, что модуль установлен, запустив клиент калькулятора электроэнергии energy_client.py:

$ scp -i ${key} energy_client.py idcuser@${vm}:energy_client.py
$ ssh -i ${key} idcuser@${vm} './energy_client.py'
You used 200 kJ today

Если вы не видите результат You used 200 kJ today, проверьте файл журнала событий /var/log/messages на наличие сообщения об ошибке.

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

В следующих разделах показано, как использовать некоторые из этих инструментов и как эффективнее автоматизировать процесс с помощью API. Заметим также, что мы не создали независимый ресурс пакета программного обеспечения в облаке; мы просто объединили файл установки RPM и сценарий установки с метаданными виртуального образа в репозитории ресурсов. Теперь поговорим о ресурсах пакета ПО на основе облака.


Создание компонуемых пакетов ПО

Чтобы создать компонуемый пакет ПО, загрузим и отредактируем один из шаблонов из каталога SmartCloud Asset Catalog. Найдите в левой колонке Asset Catalog поисковую ссылку Composable Software Bundles (рисунок 8). Просмотрите результаты поиска.

Рисунок 8. Частичные результаты поиска с фильтром composable software bundles
Частичные результаты поиска с фильтром composable software bundles

Существует много различных пакетов, доступных для использования в качестве шаблонов. Нажмите кнопку Asset Manager Clone, чтобы клонировать и изменить пакет. Это поможет вам создать ресурсы, которые можно использовать в своих собственных средствах автоматизации для применения в образах виртуальных машин, но они будут видны только вам. Чтобы создавать пакеты ПО для более широкого применения, их нужно регистрировать с помощью ICCT или другого инструмента.


Использование ICCT для управления пакетами ПО

ICCT включен в каталог образов IBM SmartCloud Enterprise, который позволяет запускать их в облаке. Чтобы воспользоваться им, войдите в панель управления SmartCloud Enterprise.

  1. Выберите Instance и нажмите кнопку Add Instance.
  2. Выберите центр обработки данных, затем выберите образ ICCT из каталога и инициализируйте новый экземпляр с помощью мастера инициализации.
  3. Введите имя пользователя ICCT и пароль. После инициализации экземпляра виртуальной машины для входа можно использовать ссылку на странице Getting Started.
  4. Войдя в ICCT, нажмите на ссылку Build and Manage Software Bundles.
  5. На левой панели есть пакет Enablement Bundle for SmartCloud Enterprise. Если вы планируете использовать ICCT или API пакетов ПО SmartCloud Enterprise, его нужно расширить, создав свои собственные пакеты.

Заключение

Читатели этой статьи, работая с простым примером, получили общее представление о возможностях по управлению образами и пакетами ПО в IBM SmartCloud Enterprise. В следующих статьях этот пример будет продолжен с применением инструментов, обладающих дополнительными возможностями для создания более сложных версий и автоматизации многих из тех задач, которые здесь выполнялись вручную.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления, Linux
ArticleID=836347
ArticleTitle=Создание решений с помощью IBM SmartCloud Enterprise: Практические рекомендации и инструменты
publish-date=09212012