Пакет ПО - это совокупность файлов программного обеспечения, конфигурации и метаданных, которые можно установить на экземпляр виртуальной машины. В этой статье из двух частей авторы показывают, как использовать инструмент IBM Image Construction and Composition Tool (ICCT) для создания пакета ПО и работы с ним в системе IBM SmartCloud Enterprise. ICCT решает задачи учета и обеспечивает удобный пошаговый процесс и графический интерфейс пользователя для создания пакетов ПО, настройки экземпляров виртуальных машин и создания образов. Во второй части авторы показывают, как создать специальный образ с пакетом программного обеспечения, составленным в Части 1.
Эта статья демонстрирует, как поддерживать пакеты программного обеспечения в среде IBM SmartCloud Enterprise. На конкретном примере описаны действия, необходимые для записи нового частного образа с предварительно установленным пакетом ПО и его использования на виртуальной машине Linux . Предполагается, что читатель знаком с идеями облачных вычислений. Для того чтобы повторить действия, описанные в этой статье, необходима учетная запись пользователя IBM SmartCloud Enterprise.
Из Части 1 вы узнали, как создавать пакеты программ для виртуальных машин в среде IBM SmartCloud Enterprise. Теперь воспользуемся таким пакетом для создания специального образа. Итак, приступим.
Создание специального образа
- Войдите в пользовательский интерфейс ICCT и выберите Images > Build Images. Или можно вернуться к странице приветствия и нажать кнопку Build and Manage Images.
Рисунок 1. Создание образов в ICCT
- Нажмите кнопку Import from Cloud Provider (импорт от поставщика облака).
- Выберите RedHat Enterprise Linux 6 64-bit на левой панели и нажмите кнопку Add, чтобы добавить эту ОС в окно импорта. Нажмите кнопку Import.
Рисунок 2. Импорт образа RedHat Enterprise Linux 6 64-bit
- Метаданные образа импортируются и перечисляются в окне левой панели. Выберите образ, чтобы увидеть его детали в окне правой панели.
Рисунок 3. Подробная информация по RedHat Enterprise Linux 6 64-bit
- Нажмите кнопку Extend на правой панели, введите данные и нажмите кнопку Create. На левой панели откроется новый проект образа.
Рисунок 4. Расширение образа
- На правой панели нажмите кнопку Start Editing (начать редактирование). Появится сообщение о состоянии образа "Out of Sync" (Синхронизация отсутствует). Разверните раздел Software Bundles, чтобы добавить пакет ПО Google Chrome, созданный в Части 1.
Рисунок 5. Обновление пакетов ПО
- Нажмите кнопку Add Bundle (Добавить пакет). Появится диалоговое окно, позволяющее выбирать пакеты, совместимые с этим образом. Google Chrome входит в список.
Рисунок 6. Добавление в образ пакета программного обеспечения Google Chrome
- Выберите Google Chrome и нажмите кнопку Add (Добавить).
Рисунок 7. GoogleChrome добавил проект в образ
- Нажмите кнопки Save, Done Editing и Synchronize. Появится страница соглашения. Обратите внимание на локальный пакет Enablement, который ICCT добавляет по умолчанию. Нажмите кнопку I agree (Я согласен) и Done (Готово).
Рисунок 8. Синхронизация образа
- ICCT вызывает API SmartCloud для инициализации базового образа. После создания экземпляра ICCT загружает и устанавливает пакеты ПО. Зайдите в SmartCloud Portal, чтобы увидеть их экземпляры. В SmartCloud Portal видны запрашиваемые временные экземпляры (см. имя с уникальным ID рядом с именем образа RHEL6WithGoogleChrome), а затем экземпляры в состоянии инициализации. Возможно, после инициализации экземпляра придется обновить панель управления, чтобы увидеть пакет ПО в списке.
Рисунок 9. Инициализация экземпляра в SmartCloud после синхронизации
- Когда временный экземпляр создан, он переходит в состояние Active на портале SmartCloud.
Рисунок 10. Инициализированный экземпляр в SmartCloud после синхронизации
- Когда экземпляр активен, ICCT начинает установку пакетов программного обеспечения. Можно вернуться в GUI ICCT и нажать кнопку Refresh (Обновить), относящуюся к образу. Статус образа показывает Synchronizing (Синхронизация), а ниже описание: Installing execution package on VM (Установка исполняемого пакета на ВМ).
Рисунок 11. Обновление статуса образа в инструменте Image Construction and Composition
Рисунок 12. Неудачная синхронизация в ICCT
В случае ошибки войдите во временный экземпляр, найдите и исправьте ошибку в сценариях RAM и ICCT и снова нажмите кнопку Synchronize. ICCT удалит старый временный экземпляр и создаст новый.
Рисунок 13. Успешная синхронизация в ICCT
Когда ICCT заканчивает установку пакетов, статус образа меняется на Synchronized. Можно войти в экземпляр и убедиться, что Google Chrome установлен. Проверьте IP-адрес временного экземпляра в SmartCloud Portal с помощью ${SmartCloud_VM}
, чтобы можно было войти в экземпляр через SSH как idcuser.
Проверка работоспособности Google Chrome
Чтобы убедиться, что Google Chrome работает в этом временном экземпляре, выполните следующие действия.
- Запустите vncserver в экземпляре и откройте порт 5901, подключитесь через vncviewer и запустите Google Chrome. В инструкциях используйте свой IP-адрес, а не тот, что показан в примере.
ssh idcuser@${SmartCloud_VM}
Last login: Fri Mar 2 14:43:35 2012 from vhost4244.site2.compute.ihost.com
[idcuser@vhost0134 ~]$ vncserver -geometry 1280x1024 -depth 16
|
- Для доступа к рабочим столам требуется пароль.
Password:
Verify:
xauth: creating new authority file /home/idcuser/.Xauthority
New 'vhost0134:1 (idcuser)' desktop is vhost0134:1
Creating default startup script /home/idcuser/.vnc/xstartup
Starting applications specified in /home/idcuser/.vnc/xstartup
Log file is /home/idcuser/.vnc/vhost0134:1.log
[idcuser@vhost0134 ~]$ sudo iptables -I INPUT -m state --state NEW -p
tcp --destination-port 5901 -j ACCEPT
|
- Выполните команды
vncviewer ${SmartCloud_VM}:1
и start /opt/google/chrome/google-chrome
, чтобы проверить, что он работает.
В целях безопасности, вместо процесса, приведенного выше, можно запустить VNC через SSH-туннель, например, так:
ssh -i ~/.ssh/key_name -L 5901:${SmartCloud_VM}:5901 idcuser@${SmartCloud_VM}
|
Затем выполните команды vncviewer localhost:1
и start /opt/google/chrome/google-chrome
, чтобы убедиться, что все работает.
Рисунок 14. Запуск Chrome в экземпляре SmartCloud
Закройте Google Chrome. Внесите любые дальнейшие ручные изменения, которые необходимо сохранить в экземпляре, и выйдите из него.
Запись образа
Теперь, когда временный экземпляр работает надлежащим образом, запишите его как образ, чтобы больше не переустанавливать Google Chrome.
- Нажмите кнопку Capture в ICCT. Образ перейдет в состояние синхронизации в ICCT GUI.
Рисунок 15. Создание образа в ICCT с помощью команды Capture
- На вкладке Instance временного экземпляра в SmartCloud Portal появляется уведомление о сохранении образа.
Рисунок 16. Уведомление о сохранении образа
Это означает начало записи нового частного образа с предварительно установленным Google Chrome.
- На вкладке Image в SmartCloud Portal новый частный образ RHEL6WithGoogleChrome находится в состоянии записи.
Рисунок 17. Запись образа в SmartCloud
Когда новый образ записан, можно создать новый экземпляр записанного образа прямо из SmartCloud Portal. ICCT автоматически удаляет временный экземпляр.
- Когда образ перейдет в состояние Captured, обновите панель управления, вернитесь на вкладку Images и выберите записанный образ, чтобы увидеть пакеты программного обеспечения этого образа. Пакеты ПО обновляются, когда ICCT обновляет файл Semantic Topology ресурса образа RAM после успешной записи образа.
Рисунок 18. Образ в SmartCloud
Теперь образ с предварительно установленным Google Chrome доступен для создания новых экземпляров.
- Если нажать кнопку Refresh в ICCT, статус образа должен смениться на Capture Complete (Запись завершена).
Рисунок 19. Статус "Запись завершена" в ICCT
- с деталями образа RHEL6WithGoogleChrome можно ознакомиться в RAM (ресурс Template Topology).
Рисунок 20. Обычные детали ресурса Template Topology в RAM
- В файле топологии Rhel6.1_x64.topology можно заметить ссылку на ресурс GoogleChrome SoftwareBundle с указанием UUID и версии RAM (см. рисунок 21 и листинг 1).
Рисунок 21. Файл семантической топологии ресурса
Листинг 1. Файл семантической топологии ресурса
<core:unit uuid="_z79cOWSIEeG4Dsea31AM7A" name="bundle_455977"
goalInstallState="installed" initInstallState="installed">
<core:capability uuid="_z79cOmSIEeG4Dsea31AM7A" name="cap" linkType="any">
<core:extendedAttribute uuid="_dZzakWSpEeG4Dsea31AM7A" name="symbolicName">
<core:data xsi:type="xsd:string" uuid="_z79cO2SIEeG4Dsea31AM7A">
<strong>com.google.chrome</strong>
</core:data>
</core:extendedAttribute>
<core:extendedAttribute uuid="_dZzakmSpEeG4Dsea31AM7A" name="version">
<core:data xsi:type="xsd:string" uuid="_z79cPGSIEeG4Dsea31AM7A">
1.0.0
</core:data>
</core:extendedAttribute>
<core:extendedAttribute uuid="_dZzak2SpEeG4Dsea31AM7A" name="bundleName">
<core:data xsi:type="xsd:string" uuid="_z79cPWSIEeG4Dsea31AM7A">
<strong>GoogleChrome</strong>
</core:data>
</core:extendedAttribute>
<core:extendedAttribute uuid="_dZzalGSpEeG4Dsea31AM7A" name="bundleRepoId">
<core:data xsi:type="xsd:string" uuid="_z79cPmSIEeG4Dsea31AM7A">
<strong>ryo-asset://07356E0D-3868-1709-0F95-AD9FF0355FF4_1.0.0@
https://www-147.ibm.com/cloud/enterprise/ram.ws</strong>
</core:data>
</core:extendedAttribute>
</core:capability>
|
- В листинге 2 показано, как воспользоваться API REST для извлечения списка SwBundles для записанного образа.
Листинг 2. Извлечение списка SwBundles с помощью API REST
curl -k -H 'Accept: application/json' -u <userid7gt;:<password>
https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/
offerings/image/${imageId}/swbundle
where imageId is 20045166
{"SwBundleImageDetails":
[
{"SwBundleNum":1,"SwBundlePricingDetails":
{"rate":0,"unitOfMeasure":"UHR","countryCode":"897","effectiveDate":1313107200000,
"currencyCode":"USD","pricePerQuantity":1},
"RamUuid":"07356E0D-3868-1709-0F95-AD9FF0355FF4",
"RamVersion":"1.0.0","name":"GoogleChrome","id":"2909","description":
"Install Latest Google Chrome using yum"}
]
}
|
Создание экземпляра
Чтобы использовать образ для создания экземпляра, выполните следующие действия.
- Подключитесь к SmartCloud Portal. Выберите образ на вкладке Image и нажмите кнопку Create Create (Создать экземпляр).
Рисунок 22. Создание экземпляра в SmartCloud
Рисунок 23. Принятие условий соглашения
- Обратите внимание на имя образа и пакет ПО на странице соглашения. Нажмите кнопку Submit (Отправить).
Рисунок 24. Отправка запроса на экземпляр в SmartCloud
- Когда экземпляр инициализирован, можно проверить, что Google Chrome работает, точно так же, как во временном экземпляре (см. выше). Если вы не закрыли браузер перед записью, то возможно, придется удалить /home/idcuser/.config/google-chrome/SingletonLock.
Рисунок 25. Успешное создание экземпляра в SmartCloud
Последние замечания
Специалист по программному обеспечению должен гарантировать, что в первой строке bash-сценария указано местоположение интерпретатора bash в виде #!/bin/bash
. Механизму Virtual System Activation Engine (VSAE), который запускает выполнение сценариев конфигурации и сброса, нужно указать местоположение интерпретатора, иначе сценарии не выполнятся.
Если нужно написать сценарии на платформах Windows, то до загрузки этих сценариев в ICCT их необходимо обработать dos2unix или аналогичным инструментом.
Во время создания виртуального образа ICCT загружает и устанавливает пакет программного обеспечения в экземпляре. Во время инициализации SmartCloud не копирует ресурс RAM Composable Software Bundle в экземпляр автоматически; однако SmartCloud позволяет копировать в экземпляр файлы из ресурса Template Topology (образа), так что возможна дополнительная ручная настройка путем обновления ресурса образа Template Topology RAM.
Образ Google Chrome не требует никакой дополнительной настройки. Однако если вы хотите внести незначительные изменения в экземпляр во время инициализации без использования ICCT для перезаписи нового образа, можно создать клон этого образа или обновить ресурс Template Topology записанного образа.
Все сценарии активации ресурса Template Topology должны быть упакованы в папку activation_scripts русурса в каталоге ресурсов IBM Rational. Эта папка должна также содержать файл scripts.txt с описанием дополнительных файлов, необходимых для создания экземпляра, и их местоположения. Файл scripts.txt определяет пары имен и значений для сценариев активации. Имя ― это фактическое имя файла, с которым вы работаете, а значение ― полный путь и имя файла, который должен присутствовать в экземпляре. Следующий пример демонстрирует файл scripts.txt для образа сервера Linux NFS.
run_once.txt=/etc/init.d/cloud-startup3.sh
config.txt=/etc/cloud/nfs_config.pl |
Файлы сценариев в папке activation_scripts и ссылки на них в scripts.txt копируются в указанные каталоги экземпляра до его запуска. Если какой-либо из файлов сценария уже существует в файловой системе вашего образа, он будет заменен тем, который находится в каталоге русурсов IBM Rational.
Заключение
Эти две статьи на простом примере научили читателей создавать и поддерживать пакеты программного обеспечения с помощью ICCT в среде IBM SmartCloud Enterprise; в них показано также, как создать образ с этим пакетом программного обеспечения с помощью ICCT.