Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
serverguide-precise-ru.pdf
Скачиваний:
77
Добавлен:
03.05.2015
Размер:
1.86 Mб
Скачать

Виртуализация

3.7. Установка образа из хранилища

Следующее является наиболее простым способом установки образа. Конечно, более опытных пользователей может заинтересовать Bundle their own image17.

Простейший способ добавить образ к UEC — это установить его из хранилища образов в веб-интерфейсе UEC.

1.Доступ к веб-интерфейсу может быть получен по следующему URL (не забудьте указать https):

https://<cloud-controller-ip-address>:8443/

2.Введите ваше имя пользователя и пароль (если требуется, так как вы, возможно, авторизовались ранее).

3.Нажмите на закладку Хранилище.

4.Выберите из списка доступных образов тот, что вам нужен

5.Нажмите Установить для желаемого выбранного образа

Как только образ будет скачан и установлен, вы можете нажать на "Как запустить?", которая будет отображена ниже кнопки с рисунком для просмотра команды для выполнения запуска (старта) этого образа. Образ также появится в списке на закладке "Образ".

3.8. Запуск образа

Есть несколько способов запустить образ в UEC:

Использовать командную строку.

Использовать один из совместимых с UEC инструментов управления,

таких как Landscape

Использовать дополнение ElasticFox18 для Firefox.

Здесь мы опишем процесс запуска из командной строки:

1.Перед запуском экземпляра вашего образа, вы сначала должны создать ключевую пару (ключ ssh), который вы можете использовать, чтобы зайти как root, как только ваш экземпляр загрузится. Ключ будет сохранён, так что вам это нужно будет сделать только один раз.

Выполните следующую команду:

17https://help.ubuntu.com/community/UEC/BundlingImages

18https://help.ubuntu.com/community/UEC/ElasticFox

381

Виртуализация

if [ ! -e ~/.euca/mykey.priv ]; then mkdir -p -m 700 ~/.euca

touch ~/.euca/mykey.priv chmod 0600 ~/.euca/mykey.priv

euca-add-keypair mykey > ~/.euca/mykey.priv

fi

Вы можете назвать ваш ключ как хотите (в этом примере ключ назван 'mykey'), но не забудьте, как вы его назвали. Если вы забыли, вы всегда можете выполнить команду euca-describe- keypairs для получения списка созданных ключей, хранимых на данной системе.

2.В вашем экземпляре вы должны открыть порт 22:

euca-authorize default -P tcp -p 22 -s 0.0.0.0/0

3.Далее, вы можете создать экземпляры вашего зарегистрированного образа:

euca-run-instances $EMI -k mykey -t m1.small

Если вы получили ошибку относительно image_id, вы можете найти её на странице просмотра образов или нажав на "Как выполнить" на странице Хранилище для просмотра образца команды.

4.Во время первого запуска экземпляра система установит кэш для образа, из которого был создан экземпляр. Так как образы виртуальных машин довольно велики в размере, первый запуск экземпляра может занять некоторое время.

Для мониторинга состояния вашего экземпляра выполните:

watch -n5 euca-describe-instances

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

'ожидание'

5.Как только экземпляр будет полностью запущен, его состояние сменится на 'запущен'. Посмотрите, какой IP-адрес был назначен экземпляру, и используейте этот адрес для подключения к экземпляру:

IPADDR=$(euca-describe-instances | grep $EMI | grep running | \ tail -n1 | awk '{print $4}') ssh -i ~/.euca/mykey.priv ubuntu@$IPADDR

382

Виртуализация

6.После окончания работы с экземпляром, завершите соединение SSH, затем остановите экземпляр:

INSTANCEID=$(euca-describe-instances | grep $EMI | grep running | \ tail -n1 | awk '{print $2}' euca-terminate-instances $INSTANCEID

3.8.1. Первая загрузка

Пакет cloud-init

Установка имени хоста

Помещение предоставленных публичных ключей ssh в ~ubuntu/.ssh/

authorized_keys.

Запуск сценария, предоставленного пользователем, или иное изменение образа.

Это не так ужасно интересно устанавливать имя хоста и настраивать систему, чтобы можно было просто запустить и войти в неё. Действительно интересные вещи, которые можно сделать при помощи cloud-init,

можно совершить благодаря пользовательским данным (user-data)19, предоставленным во время старта.

Вначале установите пакет cloud-init:

sudo apt-get install cloud-init

Если пользовательские данные (user-data) начинаются с '#!', то они будут сохранены и выполнены от имени root на позднем этапе процесса первой загрузки экземпляра (подобно традиционному сценарию 'rc.local'). Вывод из сценария направляется в консоль.

Например, можно создать файл с именем ud.txt, содержащий:

#!/bin/sh

echo ========== Hello World: $(date) ==========

echo "I have been up for $(cut -d\ -f 1 < /proc/uptime) sec"

Теперь запустите экземпляр с опцией --user-data-file:

euca-run-instances $EMI -k mykey -t m1.small --user-data-file=ud.txt

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

19 http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1085

383

Виртуализация

euca-get-console-output $EMI | grep --after-context=1 Hello

========== Hello World: Mon Mar 29 18:05:05 UTC 2010 ==========

I have been up for 28.26 sec

Ваш вывод может отличаться.

Показанный выше простой подход открывает огромные возможности. Файл пользовательских данных (user-data) может содержать сценарий на любом языке, интерпретатор которого уже содержится в образе (#!/bin/sh, #!/usr/ bin/python, #!/usr/bin/perl, #!/usr/bin/awk ... ).

Во многих случаях пользователь может быть не заинтересован в написании программы. На этот случай cloud-init предоставляет "cloud-config" — подход к настройке, основанный на конфигурационном файле. Для использования синтаксиса cloud-config файл пользовательских данных (user-data) должен начинаться с '#cloud-config'.

Например, можно создать файл с именем cloud-config.txt, содержащий:

#cloud-config apt_upgrade: true apt_sources:

- source: "ppa:ubuntu-server-edgers/server-edgers-apache "

packages:

-build-essential

-pastebinit

runcmd:

-echo ======= Hello World =====

-echo "I have been up for $(cut -d\ -f 1 < /proc/uptime) sec"

Создайте новый экземпляр:

euca-run-instances $EMI -k mykey -t m1.small --user-data-file=cloud-config.txt

Теперь, когда система загрузится, в ней будет:

Добавлен Apache Edgers PPA

Выполнено обновление

Установлены пакеты 'build-essential' и 'pastebinit'

Выведено сообщение, подобное имеющемуся в вышеописанном сценарии

Apache Edgers PPA из приведённого выше примера содержит последнюю версию Apache из репозиториев исходного кода в апстриме. Для версий пакета из PPA поддержка не предоставляется

384

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]