Перевод книги OpenStack Beginner’s Guide for Ubuntu - Natty

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


Перевод: Chemtech
Перевод: Hully
Координатор процесса перевода: Chemtech
Степень готовности:
Приблизителная дата окончания перевода:

Note-icon.gif

Если есть желание принять участие в переводе, напишите, пожалуйста, Chemtech, который знает, кто что здесь сейчас переводит.

Оригинал[OpenStack Beginner’s Guide for Ubuntu - Natty.]

Содержание

[править] Глава 1. Введение в OpenStack и его компоненты

[править] Облачные вычисления

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


Инфраструктуру, основанную на модели облачных вычислений, как правило, называют "облаком". На облаке доступны следующие категории услуг:

  • Инфраструктура как сервис (Infrastructure-as-a-Service, IaaS);
  • Платформа как сервис (Platform-as-a-Service, PaaS);
  • ПО как сервис (Software-as-a-Service, SaaS);


Amazon Web-сервис - один из главных игроков, предоставляющих IAAS. У них есть два популярных сервиса: Elastic Compute Cloud (EC2) и Simple Storage Service (S3). Эти сервисы доступны через Web.

[править] OpenStack

OpenStack это стек/набор открытого программного обеспечения для провайдеров услуг или частного использования, предназначенный для установки и запуска облачной инфраструктуры вычислений и хранения. RackSpace и NASA — ключевые инициаторы развития этого стека. Rackspace разработало свою платформу "Cloud Files" как часть объектов хранения OpenStack, а НАСА внесли свою "Nebula" как часть Compute. Консорциуму OpenStack удалось заручится поддержкой более 50 членов, включая IBM, Canonical, Dell, Citrix и др. менее чем за год.

OpenStack создает услуги доступные через API совместимый с Amazon EC2/S3 и, следовательно, клиентские приложения написанные для AWS (Amazon web services) могут быть использованы и для OpenStack. Есть 3 основных ключевых компонента/направления использования OpenStack:

  • Вычислительная инфраструктура (Compute Infrastructure, Nova)
  • Инфраструктура хранилища (Storage Infrastructure, Swift)
  • Служба образов (Imaging Service, Glance)

[править] Open Stack Compute Infrastructure (Nova)

Nova — контроллер, управляющий работой виртуальных машин. Все действия, необходимые для поддержки жизненного цикла виртуальной машины в облаке OpenStack обрабатывает Nova. Он управляет всеми вычислительными ресурсами, сетью, авторизацией и потребностями масштабируемости OpenStack облака. Nova — средство управления платформой и не предоставляет сама по себе никаких возможностей виртуализации, для виртуализации она использует интерфейсы Libvirt для взаимодействия с поддерживаемыми гипервизорами. Nova предоставляет свои возможности с помощью API веб-сервисов, совместимых с EC2 от Amazon Web Services.

[править] Функции и возможности
  • Управление жизненным циклом экземпляра (Instance life cycle management)
  • Управление вычислительными ресурсами (Management of compute resources)
  • Управление сетью и авторизация (Networking and Authorization)
  • REST-based API
  • Asynchronous eventually consistent communication (Асинхронная связь)
  • Гипервизоронезависимость: Поддержка виртуальных машин Xen, XenServer, KVM, UML and Hyper-V
[править] Компоненты OpenStack

Nova Cloud Fabric состоит из следующих основных компонентов:

  • Сервер API (API Server, nova-api)
  • Очередь сообщений (Message Queue, rabbit-mq server)
  • Вычислительные работники (Compute Workers, nova-compute)
  • Сетевой контроллер (Network Controller, nova-network)
  • Работники томов (Volume Worker, nova-volume)
  • Планировщик (Scheduler, nova-scheduler)
Simplified OpenStack Architecture.png
[править] API Server ( nova-api )

API сервер обеспечивает интерфейс с внешним миром, для взаимодействия с облачной инфраструктурой. API сервер является единственным компонентом, который внешний мир использует для управления инфраструктурой. Управление осуществляется через веб-сервисы с помощью EC2 API. API сервера в свою очередь взаимодействует с соответствующими компонентами облачной инфраструктуры посредством очереди сообщений.

[править] Очередь сообщений ( Rabbit MQ Server )

Контроллер облака OpenStack (OpenStack Cloud Controller) взаимодействует с другими компонентами nova (такими как Планировщик, Сетевой контроллер и Контроллер томов) посредством AMQP (Advanced Message Queue Protocol, дополнительного протокола очереди сообщений). Nova использует асинхронные вызовы для ответа на запрос с помощью обратного вызова, который посылается, когда ответ получен. Так как используется асинхронная коммуникация, то ни одна из конечных точек не зависает надолго в состоянии ожидания. Это особенно актуально, так как многие действия (запуск виртуальной машины или загрузка образа) при взаимодействии с вызовами API требуют много времени.

[править] Compute Worker ( nova-compute )

Вычислительные работники (узлы, ноды, compute workers) занимаются управлением жизненным циклом экземпляров (инстанциями). Они получают управляющие запросы через очередь сообщений и выполняют соответствующие операции. В обычной инсталляции используется несколько вычислительных работников. Экземпляр размещается на каком-либо из доступных работников в соответствии с используемым алгоритмом планирования.

[править] Network Controller ( nova-network )

Сетевой контроллер имеет дело с сетевой конфигурацией хост машины. Его задачей является выделение IP-адресов, конфигурирование сетей VLAN для проектов, реализация групп безопасности и настройка сетей для вычислительных узлов.

[править] Volume Workers ( nova-volume )

Volume workers are used for the management of LVM-based instance volumes. Volume Workers perform volume related functions such as creation, deletion, attaching a volume to an instance, and detaching a volume from an instance. Volumes provide a way of providing persistent storage for use by instances, as the main disk attached to an instance is non-persistent and any changes made to it are lost when the volume is detached or the instance is terminated. When a volume is detached from an instance or when an instance, to which the volume is attached, is terminated, it retains the data that was stored on it when it was attached to an instance earlier. This data can be accessed by reattaching the volume to the same instance or by attaching it to another instances. Any valuable data that gets accumulated during the life cycle of an instance should be written to a volume, so that it can be accessed later. This typically applies to the storage needs of database servers, etc.

Обработчики томов используются для управления LVM томами экземпляров. Обработчики томов выполняют операции связанные с томами как создание, удаление присоединение тома к экземпляру, и отсоединение тома. Тома дают возможности по предоставлению постоянных хранилищ для использования экземплярами, например основной диск присоединен к экземпляру как не постоянный и любые изменения внесенные на него будут утеряны при отсоединении тома, или выключении экземпляра. Когда том отключается от экземпляра или когда экземпляр выключается, данные на томе приводятся к состоянию предшествующему до подключения к экземпляру. Эти данные могут быть доступны когда том будет переподключен к экземпляру (к этому же или к другим). Любые значительные данные созданные в жизненном цикле экземпляра должны быть записаны на том, что бы быть доступны позднее. Наиболее часто это применим к серверам баз данных, и т.д. (Здесь шла речь о работе томов: постоянные - persistent, и не постоянные - non-persistent, на постоянных данные сохраняются, а на не постоянных данные возвращаются к исходному состоянию после отключения тома).

[править] Планировщик (nova-scheduler)

The scheduler maps the nova-API calls to the appropriate openstack components. It runs as a daemon named nova-schedule and picks up a compute/network/volume server from a pool of available resources depending upon the scheduling algorithm in place. A scheduler can base its decisions on various factors such as load, memory, physical distance of the availability zone, CPU architecture, etc. The nova scheduler implements a pluggable architecture. Currently the nova-schedule implements a few basic scheduling algorithms:

• chance: In this method, a compute host is chosen randomly across availability zones.
• availability zone: Similar to chance, but the compute host is chosen randomly from within a specified availability zone.
• simple: In this method, hosts whose load is least are chosen to run the instance.

Планировщик перенаправляет вызовы nova-API к соответствующим компонентам openstack. Он работает как демон nova-schedule и поднимает вычислительные ресурсы/сети/размер тома из пула доступных ресурсов в зависимости от алгоритма планирования. Планировщик может принимать решения на основе различных факторов, таких как нагрузка, память, физическое расстояние от доступной зоны, архитектуры процессора и т.д. nova-schedule реализует подключаемые архитектуры. В настоящее время nova-schedule реализует несколько основных алгоритмов планирования:

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

[править] OpenStack хранилище инфраструктуры ( Swift )

Swift это хранилище для хранения большого количества объектов распределенных между узлами. Swift имеет встроенные средства для резервирования и управления отказоустойчивостью, а так же средства для резервного копирования, архивирования данных. Возможность масштабирования до нескольких петабайт и миллиардов объектов. Swift обеспечивает гибкую облачную систему хранения данных для веб-приложений.

[править] Функции и возможности

  • Хранение образов машин
  • Работа в качестве самостоятельного контейнера данных
  • Обеспечение избыточности и отказоустойчивости
  • Создание резервных копий и архивирование
  • Очень хорошая масштабируемость

[править] OpenStack Imaging Service ( Glance )

OpenStack Imaging Service is a lookup and retrieval system for virtual machine images. It can be configured to use any one of the following 3 storage backends:

• OpenStack Object Store to store images
• S3 storage directly
• S3 storage with Object Store as the intermediate for S3 access.

OpenStack Imaging Service - сервис для работы с образами виртуальных машин. Он может быть настроен на использование как бэкеннд любым из трех следующих способов:

  • OpenStack Объекта Хранения для хранения образов
  • S3 непосредственного хранения
  • S3 хранения с Объектом Хранения, как промежуточный для S3 доступа.
[править] Functions and Featues ( Glance ) Функции ( Glance )
• Provides imaging service. Предоставляет возможность работы с образами виртуальных машин
[править] Components of OpenStack Imaging Service ( Glance ) Компоненты OpenStack Imaging Service ( Glance )
• Glance-api
• Glance-registry. Glance-реестр

[править] Глава 2. Установка и конфигурация

[править] 2.1 Вступление

The following section describes how to set up a minimal cloud infrastructure based on OpenStack using 3 machines. These machines are referred to in this and subsequent chapters as Server1 and Server2 and Client1. Server1 runs all the 7 components of Nova as well as Glance and OpenStack dashboard. Server2 runs only nova-compute. Since OpenStack components follow a shared-nothing policy, each component or any group of components can be installed on any server.

Следующий раздел описывает, как настроить минимальную инфраструктуру облака, основанную на OpenStack, используя 3 машины. Эти машины, упомянутые в этой и последующих главах, называются Server1, Server2 и Client1. Server1 запускает все 7 компонентов Nova, а также Glance и приборную панель dashboard. Server2 запускает только nova-compute. OpenStack компоненты следуют без четкого порядка установки, каждый компонент или любая группа компонентов могут быть установлены на любом сервере.

Client1 is not a required component. In our sample setup, it is used for bundling images and for using as a client for web interface and to run euca commands for managing the infrastructure. Having this client ensures that you do not need to meddle with the servers for tasks such as bundling. Also, bundling of Desktop Systems including Windows will require GUI and it is better to have a dedicated machine for this purpose. We would recommend this machine to be VT-Enabled so that KVM can be run and Windows VMs can be run during image creation for bundling. The installation steps use certain specifics such as hostnames/IP addresses etc. Modify them to suit your environment before using them. The following table summarizes these specifics.

Client1 не является обязательным компонентом. В нашем примере установки, он используется для комплектации образов и для использования в качестве клиента для веб-интерфейса и запуска команды euca для управления инфраструктурой. После этого клиент гарантирует, что вы не должны вмешиваться в сервера для таких задач, как комплектация. Кроме того, комплектацию настольных систем, включая Windows, потребуется графический интерфейс, и для этого лучше иметь выделенную машину для этой цели. Мы рекомендуем, чтобы эта машина была VT-Enabled, чтобы KVM мог запускать и Windows, виртуальные машины могут быть запущены во время создания образа для комплектации.

OpenStack Setup.png

Шаги установки используют определенную специфику, такие как имена хостов/IP адреса и т.д. Измените их в соответствии с вашими потребностями перед их использованием. В следующей таблице приведены эти особенности.

Server 1 Server 2 Client 1
FunctionalityAll components of Open Stack including nova-computenova-computeClient
No of NICseth0-Public N/W,eth1-Private N/Weth0-Public N/W,eth1-Private N/Weth0-Public N/W
IP addresseseth0-10.10.10.2,eth1-192.168.3.1eth0-10.10.10.3,eth1-192.168.3.2eth0-10.10.10.4
Hostnameserver1.example.comserver2.example.comclient.example.com
DNS servers10.10.10.310.10.10.310.10.10.3
Gateway IP10.10.10.110.10.10.110.10.10.1
                            Table 2.1: Network configuration

[править] Server1

[править] Base OS

Boot the server off the Ubuntu server 11.04 CD. At the graphical menu select Install Ubuntu Server and proceed with basic installation steps.

Загрузитесь с диска Ubuntu server 11.04 CD. В графическом установочном меню выбрать Install Ubuntu Server и продолжить процес с базовыми установочными шагами.

We will also be running nova-volume on this server and it is ideal to have a dedicated partition for the use of nova-volume. So, ensure that you choose manual partitioning scheme while installing Ubuntu Server and create a dedicated partition with adequate amount of space for this purpose. We have referred to this partition in the rest of the chapter as /dev/sda6. You can substitute the correct device name of this dedicated partition based on your local setup while following the instructions. Also ensure that the partition type is set as Linux LVM ( 8e ) using fdisk either during install or immediately after installation is over.

Мы будем также работать под управлением nova-volume на этом сервере и он идеально подходит чтобы иметь специальный раздел, предназначенный для использования nova-volume. Так что, убедитесь, что вы выбираете ручную схему разбиения диска во время установки Ubuntu Server и создаете специальный раздел с достаточным количеством места для этой цели. Мы сослались на этот раздел в остальной части этой главы, как /dev/sda6. Вы должны заменить имя устройства на правильное для этого специальный раздел на основе локальной установки, следуя инструкциям. Также убедитесь, что тип раздела устанавливается как Linux LVM (8e) с помощью FDISK либо во время установки или сразу после установки.

• Создайте первого пользователя с именем ’localadmin’ .
• Installation lets you setup the IP address for the first interface i.e. eth0. Set the IP address details. Установка позволяет настроить IP-адрес для первого интерфейса eth0. Установите IP-адрес полностью.
• Во время установки в установочном меню выделите только openssh-server.

Nova and Glance включены в репозитории Universe. Включите репозиторий Universe в вашем файле /etc/apt/sources.list. Обновите систему используя команды:

sudo apt-get update
sudo apt-get upgrade

Установите bridge-utils:

sudo apt-get install bridge-utils

Перезагрузите сервер и залогинтесь под админской учеткой (localadmin) созданой на протяжении установки Ubuntu.

[править] Настройка сети

Отредактируйте файл /etc/network/interfaces как показано ниже:

auto lo
 iface lo inet loopback
 
auto eth0
 iface eth0 inet static
 address 10.10.10.2
 netmask 255.255.255.0
 broadcast 10.10.10.255
 gateway 10.10.10.1
 dns-nameservers 10.10.10.100
 
auto br100
 iface br100 inet static
 bridge_ports eth1
 bridge_stp off
 bridge_maxwait 0
 bridge_fd 0
 address 192.168.3.1
 netmask 255.255.0.0
 broadcast 192.168.255.255

Перезапустите сетевой сервис

sudo /etc/init.d/networking restart

[править] Сервер времени NTP Server

Установите пакет NTP. Этот сервер будет выступать как сервер времени (NTP server) для нодов. Время на всех компонентах системы OpenStack будет синхронизировано. Мы должны запустить сервер времени (NTP server) для синхронизации других машин.

sudo apt-get install ntp 

Откройте файл /etc/ntp.conf и добавьте 2 строчки чтобы убедится что сервер времени обслуживается, даже когда подключения к интернету отсутствует. Следующие параметры указывают, что сервер времени (NTP server) используется собственные часы в качестве источника синхронизации:

server 127.127.1.0 
fudge 127.127.1.0 stratum 10

Перезапустите сервер времени (NTP service), чтобы изменения вступили в силу.

sudo /etc/init.d/ntp restart

[править] Glance

Glance is an image server that Nova can use to pickup images from. Glance is very modular and can use several types of storage backends such as filestore, s3 etc. We install Glance before installing Nova, so that when we get to configuring Nova, glance is ready to be used by Nova.

Glance - сервер образов, который Nova может использовать для подгрузки образов. Glance очень модульный и может использовать несколько типов бэкэндов хранения таких как filestore, s3 и т.д. Мы устанавливаем Glance, прежде чем устанавливать Nova, так что, когда мы перейдем к настройке Nova, Glance будет готов для того, чтобы Nova его использовала.

sudo apt-get install glance

The default config file at /etc/glance/glance.conf is good to use for a simple file store as the storage backend. Glance can be configured to use other storage backends such as Swift. Glance uses sqlite as the default database backend. While sqlite offers a quick and easy way to get started, for production use, you may consider a database such as MySQL or PostgreSQL. Glance has two components - glance-api and glance-registry. These can be controlled using the corresponding upstart jobs.

По умолчанию конфигурационный файл в /etc/glance/glance.conf хорошо использовать для простого хранилища файлов в качестве системы хранения данных. Glance может быть настроен на использование других подсистем хранения данных, такие как Swift. Glance использует SQLite в качестве серверной базы данных по умолчанию. Хотя SQLite предлагает быстрый и простой способ, чтобы начать работу, для промышленного использования, вы можете рассмотреть базы данных, такие как MySQL или PostgreSQL. Glance состоит из двух компонентов - glance-api и glance-registry. These can be controlled using the corresponding upstart jobs.

[править] MySQL Server

Установите пакет mysql-server

sudo apt-get install -y mysql-server
[править] configuration

Установить переменную "MYSQL_PASS" для использования в различных команд ниже:

MYSQL_PASS="mygreatsecret"

Измените привязку адресов с 127.0.0.1 на 0.0.0.0 в /etc/mysql/my.cnf, и она должна выглядеть следующим образом:

bind-address = 0.0.0.0

Перезагрузите MySQL сервер, чтобы убедиться, что он начинает слушать на всех интерфейсах.

sudo restart mysql

Если вы не установили пароль MySQL root во время установки, установите ее сейчас.

mysqladmin -u root password $MYSQL_PASS

Создать базу данных с именем nova.

sudo mysql -uroot -p$MYSQL_PASS -e ’CREATE DATABASE nova ;’

Update the database to grant super-user privileges for root user to login from any IP.

sudo mysql -uroot -p$MYSQL_PASS -e "GRANT ALL PRIVILEGES ON * .* TO ’root’@’%’ WITH GRANT OPTION ;"

Set MySQL root password for login from any IP.

sudo mysql -uroot -p$MYSQL_PASS -e "SET PASSWORD FOR ’root’@’%’ = PASSWORD (’$MYSQL_PASS’);"

[править] Компоненты Nova

Установите сервер очереди сообщений RabbitMQ и некоторые дополнительные компоненты.

 sudo apt-get install -y rabbitmq-server nova-common nova-doc python-nova \
nova-api nova-network nova-volume nova-objectstore nova-scheduler nova-compute \
iscsitarget iscsitarget-source iscsitarget-dkms

Установите euca2ools - набор программ для управления nova из командной строки.

 sudo apt-get install -y euca2ools

Установите unzip для распаковки архивов.

 sudo apt-get install -y unzip

Отредактируйте /etc/nova/nova.conf как показано ниже.

--dhcpbridge_flagfile=/etc/nova/nova.conf 
--dhcpbridge=/usr/bin/nova-dhcpbridge 
--logdir=/var/log/nova 
--lock_path=/var/lock/nova 
--state_path=/var/lib/nova 
--verbose 
--s3_host=10.10.10.2 
--rabbit_host=192.168.3.1 
--cc_host=192.168.3.1 
--ec2_url=http://10.10.10.2:8773/services/Cloud 
--fixed_range=192.168.0.0/16 
--network_size=8 
--FAKE_subdomain=ec2 
--routing_source_ip=192.168.3.1 
--sql_connection=mysql://root:mygreatsecret@10.10.10.2/nova 
--glance_host=192.168.3.1 
--image_service=nova.image.glance.GlanceImageService 
--iscsi_ip_prefix=192.168. 

Включите автозапуск iscsitarget при загрузке.

sudo sed -i 's/false/true/g' /etc/default/iscsitarget

Перезапустите сервис iscsitarget

sudo service iscsitarget restart

Создайте логический раздел диска.

sudo pvcreate /dev/sda6

Создайте группу раздела с названием nova-volumes.

sudo vgcreate nova-volumes /dev/sda6

Создайте системную группу "nova".

sudo groupadd nova

Измените владельца папки /etc/nova and разрешения для /etc/nova/nova.conf:

sudo chown -R root:nova /etc/nova
sudo chmod 644 /etc/nova/nova.conf

Restart all the nova related services.

sudo /etc/init.d/libvirt-bin restart;  sudo restart nova-network;  sudo restart nova-compute; \
sudo restart nova-api;  sudo restart nova-objectstore;  sudo restart nova-scheduler;\
sudo restart nova-volume; sudo restart glance-api;  sudo restart glance-registry

Create nova schema in the MySQL Database. Создайте схему nova в базе данных MySQL.

sudo nova-manage db sync

Create a list of IPs to be used from the network of fixed Ips set inside nova.conf. Создайте список IP-адресов, которые будут использоваться с сетью фиксированной Ips установленной внутри nova.conf.

sudo nova-manage network create 192.168.3.0/24 1 255

Allocate 32 pubic IP addresses for use by the instances starting from 10.10.10.225. Выделяют 32 публичных IP адреса для использования в случаях, начиная с 10.10.10.225.

sudo nova-manage floating create 10.10.10.2 10.10.10.224/27

Create a user with admin rights on nova. Создайте пользователя с правами администратора на nova.

sudo nova-manage user admin novaadmin

Create a project named proj. Создайте проект под названием Proj.

sudo nova-manage project create proj novaadmin

Create a directory to download nova credentials and download the zip file. Создайте каталог для загрузки учетных данных nova и загрузки архива.

mkdir /home/localadmin/creds

Generate and save credentials for accessing/managing the nova cloud.

Создайте и сохраните учетные данные для доступа/управления облако nova.

sudo nova-manage project zipfile proj novaadmin /home/localadmin/creds/novacreds.zip

Contents of novacreds.zip are required to use euca2ools to manage the cloud infrastructure and you will need to transfer this zip file to any machine from where you want to run the commands from euca2ools. We will be using these credentials from client1 as well.

Содержание novacreds.zip необходимо использовать euca2ools, чтобы управлять облачной инфраструктурой и вам нужно будет перенести этот файл на любую машине, с которой вы хотите запустить команды из euca2ools. Мы будем использовать эти учетные данные из client1 также.

Navigate to the folder created and extract the files and change their ownership.

cd /home/localadmin/creds
unzip novacreds.zip
sudo chown localadmin:localadmin /home/localadmin/creds/ -R

Here are the files extracted:

cacert.pem, cert.pem, novarc, pk.pem

novarc contains several environmental variables including your nova credentials to be set before you can use the commands from euca2ools such euca-describe-images, euca-describe-instances etc. these variables can be set by sourcing novarc file.

source /home/localadmin/creds/novarc

Restart all the nova related services.

sudo /etc/init.d/libvirt-bin restart;  sudo restart nova-network ;  sudo restart nova-compute; \
sudo restart nova-api;  sudo restart nova-objectstore;  sudo restart nova-scheduler;\ 
sudo restart nova-volume;  sudo restart glance-api;  sudo restart glance-registry

Check if the credentials are working and if nova has been setup properly by running:

Проверьте, если полномочия работают, и если nova настроен надлежащим образом, выполните:

euca-describe-availability-zones verbose

If you see something like the following with all components happy, it means that the set up is ready to be used.

Если вы видите что-то вроде следующего, в которой все компоненты включены, это значит, что установка будет готова к использованию.

AVAILABILITYZONE nova available
AVAILABILITYZONE |- server1
AVAILABILITYZONE | |- nova-compute enabled : -) 2011-04-03 07:48:50
AVAILABILITYZONE | |- nova-scheduler enabled : -) 2011-04-03 07:48:48
AVAILABILITYZONE | |- nova-network enabled : -) 2011-04-03 07:48:49
AVAILABILITYZONE | |- nova-volume enabled : -) 2011-04-03 07:48:49

[править] приборная панель Nova-dashboard

OpenStack-dashboard is a web interface for managing users, user credentials, key pairs, images, instances etc.

OpenStack-приборная панель - это веб-интерфейс для управления пользователями, учетными данными пользователей, парами ключей, образами виртуальных машин, работающими виртуальными машинами и т.д.

Install bazaar version control system to fetch required software from the repository at launchpad. Установите систему контроля версий bazaar для извлечения необходимого программного обеспечения из репозитория на launchpad.

sudo apt-get install -y bzr
sudo easy_install virtualenv

You have already finished setting up credentials for a user called localadmin in the Nova configuration section above. The credentials of this user will need to embedded into the dashboard’s configuration file.

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

Checkout the source of OpenStack-dashboard from bzr and run run_tests.sh, which does not only test the installation, but also installs several dependencies of the dashboard.

Получите сорцы OpenStack-панели из BZR и запустите run_tests.sh, который не только проверит правильность установки, но и установит несколько зависимостей приборной панели.

sudo bzr init-repo .
sudo bzr branch lp:openstack-dashboard -r 46 /opt/osdb
cd /opt/osdb
sudo sh run_tests.sh
cd openstack-dashboard

Note: It has been tested with reversion 46 of OpenStack Dashboard Since you are trying to checkout from bzr anonymously, a message saying "You have not informed bzr of your Launchpad ID..." is displayed. You can safely ignore that.

Примечание: Это было проверено на реверсии 46 OpenStack Dashboard. Поскольку вы пытаетесь выгрузить сорцы из bzr анонимно, отображается сообщение: "Вы не сообщили bzr вашего Launchpad ID...". Вы можете спокойно игнорировать это.

Edit /opt/osdb/openstack-dashboard/local/local_settings.py to include certain details required for connecting to nova-api.

Отредактируйте /opt/osdb/openstack-dashboard/local/local_settings.py для включения определенных сведений, необходимых для подключения к nova-api.

NOVA_DEFAULT_ENDPOINT = ’http ://localhost :8773/services/Cloud’
NOVA_DEFAULT_REGION = ’nova’
NOVA_ACCESS_KEY = ’b6a7e3ca-f894-473b-abca-84329d9829fa:proj’
NOVA_SECRET_KEY = ’2d61a361-965a-4ed6-966a-d9f543b42531’
NOVA_ADMIN_USER = ’novaadmin’
NOVA_PROJECT = ’proj’

A simple way of doing this will be to copy the relevant lines from novarc file that we discussed above.

Простой способ сделать это - скопировать соответствующие строки из файла novarc, который был рассмотрен выше.

[править] Setting Up E-mail service for the web interface Настройка E-mail-сервиса для веб-интерфейса

In order to to have mails generated by OpenStack dashboard delivered, we need to configure dashboard with the details of an smtp server by editing local_settings.py file.

Для того, чтобы получать сообщения, генерируемые OpenStack dashboard, мы должны настроить smtp-сервер посредством редактирования файла local_settings.py.

EMAIL_HOST = ’server1.example.com’
EMAIL_PORT = 25

If the mail server provides only authenticated SMTP, add the following lines: Если почтовый сервер обеспечивает SMTP только с аутентификацией , добавьте следующие строки:

EMAIL_USER =
EMAIL_PASSWORD =

If the mail server requires a TLS connection, add the following lines: Если почтовый сервер требует TLS соединения, добавьте следующие строки:

EMAIL_USE_TLS = ’True’

Create a openstack-dashboard database and its schema with the syncdb command. Provide the name/email address/desired password of the administrative user when prompted. Создайте базу данных openstack-dashboard и ее схему командой syncdb. Введите имя/email адрес/желаемый пароль администратора, когда это будет предложено.

sudo tools/with_venv.sh dashboard/manage.py syncdb

While creating the schema, the above command asks you to create an admin account for the dashboard. Choose the user name as the project admin’s user name you chose above while creating the project ( novadmin in our case). You can choose any password you like.

При создании схемы, вышеприведенная команда предложит вам создать учетную запись администратора приборной панели. Выберите то же самое имя пользователя, которое вы выбрали выше как администратора проекта при создании проекта (novadmin в нашем случае). Пароль можете выбрать любой.

Launch the default python-django server. If you want the dashboard application to be available on port 8000:

Запустите python-django сервер. Если вы хотите, чтобы приборная панель была доступна на порту 8000:

sudo tools/with_venv.sh dashboard/manage.py runserver 10.10.10.2:8000

To check the installation open a browser and enter the following URL http://10.10.10.2:8000 Чтобы проверить установку, откройте браузер и введите следующий адрес: http://10.10.10.2:8000

You should be able to login as "novaadmin" using the password chosen above. Any other user trying to access the interface for the first time, will need to sign up and will be able to use the interface after the account is approved by the administrator.

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

A successful login and display of the project named "proj" on the dashboard will indicate that the dashboard has been setup successfully.

Успешный вход и отображение на приборной панели проекта с именем "proj" будет означать, что приборная панель веб-интерфейса установлена успешно.

[править] OpenStack Dashboard with MySQL Database

Dashboard uses SQLite database by default. For production use, MySQL or PostgreSQL may be preferable. The procedure for MySQL is given below. Procedure for PostgreSQL will be very similar.

По умолчанию приборная панель использует базу данных SQLite. Для практического же использования предпочтительнее MySQL или PostgreSQL. Порядок установки и настройки MySQL приводится ниже. Процедура для Interbase/firebird будет очень похожа.

Install python-dev and libmysqlclient-dev

Установите python-dev и libmysqlclient-dev

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev

Activate virtualenv and install mysql-python package inside the virtual environment of Dashboard.

Активируйте virtualenv и установите mysql-python пакет внутри виртуальной среды в Приборной панели.

cd /opt/osdb/openstack-dashboard
sudo bash
source .dashboard-venv/bin/activate
easy_install mysql-python

Create a MySQL database user with all privileges on OpenStack Dashboard database

Создайте пользователя MySQL со всеми правами на базу данных OpenStack-приборной панели

mysql -uroot -pmygreatsecret
>create database dashboarddb;
>grant ALL on dashboarddb .* to nova@localhost identified by ’mygreatsecret’;

Update the DATABASES section of the Django’s local_settings.py file (/opt/osdb/openstack-dashboard/local/local_settings.py) with the MySQL database settings. Here is the relevant extract from the updated file:

Обновите секцию DATABASES файла local_settings.py (/opt/osdb/openstack-dashboard/local/local_settings.py) Django настройками базы данных MySQL. Вот соответствующие выдержки из обновленного файла:

DATABASES = {
     ’default’: {
          ’ENGINE’: ’django .db .backends .mysql ’,
          ’NAME’: ’dashboarddb’,
          ’USER’: ’nova’,
          ’PASSWORD’: ’mygreatsecret ’,
          ’HOST’: ’localhost’,
          ’default-character-set’: ’utf8 ’,
                 } 
           } 

Create the schema in the database

Создайте схему в базе

sudo tools/with_venv.sh dashboard/manage.py syncdb
[править] Running Dashboard on apache2 with mod_wsgi

While the webserver that is included in Django is good for testing, for production use, it is recommended to use a web server like Apache with mod_wsgi.

Хотя для тестирования вполне подходит веб-сервер, входящий в состав Django, для практического использования рекомендуется веб-сервер типа Apache с mod_wsgi.

Install apache2 and wsgi module.

Установите apache2 и wsgi модуль.

sudo apt-get install apache2 libapache2-mod-wsgi

Dashboard includes a file django.wsgi(/opt/osdb/openstack-dashboard/dashboard/wsgi/django.wsgi) to help in running dash-board under Apache with WSGI. You can replace the default file with the file below.

Для облегчения работы с приборной панелью под Apache с WSGI, она включает в себя файл django.wsgi (/opt/osdb/openstack-dashboard/dashboard/wsgi/django.wsgi). Вы можете заменить стандартный файл нижеследующим файлом.

# Ref:  http://jmoiron.net/blog/deploying-django-mod-wsgi-virtualenv/
import sys
import site
import os
#we are adding virtual enviornment path .
vepath = ’/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages’
os.environ [’PYTHON_EGG_CACHE’] = ’/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages’
prev_sys_path = list(sys.path )
# add the site-packages of our virtualenv as a site dir
site.addsitedir(vepath)
# reorder sys .path so new directories from the addsitedir show up first
new_sys_path = [p for p in sys.path if p not in prev_sys_path]
for item in new_sys_path:
sys.path .remove (item)
sys.path [:0] = new_sys_path
# import from down here to pull in possible virtualenv django install from django.core.handlers.wsgi import WSGIHandler
os.environ [’DJANGO_SETTINGS_MODULE’] = ’dashboard .settings’
application = WSGIHandler ()
[править] Setting up the virtual host and WSGI alias in Apache Настройка виртуального хоста и WSGI псевдонима в Apache

Create /etc/apache2/sites-available/openstack with the following contents:

Создайте файл /etc/apache2/sites-available/openstack со следующим содержимым:

Listen 8000 
<VirtualHost 10.10.10.2:8000> 
    ServerName 10.10.10.2 
    WSGIScriptAlias / /opt/osdb/openstack-dashboard/dashboard/wsgi/django.wsgi 
    Alias /media /admin/ /opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages /django/contrib/admin/media / 
</VirtualHost> 

Enable virtual host.

Включите виртуальный хост.

sudo a2ensite openstack 
sudo /etc/init.d/apache2 reload 

Dashboard should now be available at http://10.10.10.2:8000

Теперь приборная панель должна быть доступна по адресу: http://10.10.10.2:8000

[править] Server 2

[править] BaseOS

Установка 64-битной версии Ubuntu Natty Server

[править] Networking configuration

Установите bridge-utils:

sudo apt-get install bridge-utils

Отредактируйте файл /etc/network/interfaces как показано ниже:

auto lo
 iface lo inet loopback

auto eth0
 iface eth0 inet static
 address 10.10.10.3
 netmask 255.255.255.0
 broadcast 10.10.10.255
 gateway 10.10.10.1
 dns-nameservers 10.10.10.100

auto br100
 iface br100 inet static
 bridge_ports eth1
 bridge_stp off
 bridge_maxwait 0
 bridge_fd 0
 address 192.168.3.2
 netmask 255.255.0.0
 broadcast 192.168.255.255

Перезапустите сетевой сервис

sudo /etc/init.d/networking restart

[править] NTP Client

Установите пакет NTP.

sudo apt-get install ntp

Откройте файл /etc/ntp.conf и добавьте строчку для синхронизации с server1.

server 10.10.10.2

Перезапустите службу времени (NTP service), чтобы изменения вступили в силу.

sudo /etc/init.d/ntp restart

[править] Nova Components (nova-compute alone)

Установите nova-components и его зависимости.

sudo apt-get install -y nova-common python-nova nova-compute vlan

Установите euca2tools - набор программ для управления euca из командной строки.

sudo apt-get install -y euca2ools

Установите unzip для распаковки архивов.

sudo apt-get install -y unzip

Отредактируйте файл /etc/nova/nova.conf как показано здесь. Этот файл по существу аналогичный файлу конфигурации (/etc/nova/nova.conf) для Server1.

--dhcpbridge_flagfile=/etc/nova/nova.conf 
--dhcpbridge=/usr/bin/nova-dhcpbridge 
--logdir=/var/log/nova 
--lock_path=/var/lock/nova 
--state_path=/var/lib/nova 
--verbose 
--s3_host=10.10.10.2 
--rabbit_host=192.168.3.1 
--cc_host=192.168.3.1 
--ec2_url=http://10.10.10.2:8773/services/Cloud 
--fixed_range=192.168.0.0/16 
--network_size=8 
--FAKE_subdomain=ec2 
--routing_source_ip=192.168.3.2 
--sql_connection=mysql://root :mygreatsecret@10.10.10.2/nova 
--glance_host=192.168.3.1 
--image_service=nova.image.glance.GlanceImageService

[править] Client1

[править] BaseOS

Установите 64-битную версию Ubuntu Natty Desktop

[править] Networking configuration

Отредактируйте файл /etc/network/interfaces как показано ниже:

auto lo
 iface lo inet loopback

auto eth0
 iface eth0 inet static
 address 10.10.10.4
 netmask 255.255.255.0
 broadcast 10.10.10.255
 gateway 10.10.10.1
 dns-nameservers 10.10.10.100

[править] NTP Client

Установите пакет NTP.

sudo apt-get install ntp

Откройте файл /etc/ntp.conf и добавьте строчку для синхронизации с server1.

server 10.10.10.2

Перезапустите службу времени (NTP service), чтобы изменения вступили в силу.

sudo /etc/init.d/ntp restart

[править] Client Tools

As mentioned above, this is a desktop installation of Natty to be used for tasks such as bundling of images. It will also be used for managing the cloud infrastructure using euca2ools. Install euca tools, for command line tools.

Как уже упоминалось выше, это настольные установки Natty, которые будут использоваться для таких задач, как объединение образов. Он также будет использоваться для управления облаком инфраструктуры с использованием euca2ools.

Установить euca инструментов, инструментов командной строки:

sudo apt-get install -y euca2ools

Установить qemu-kvm:

sudo apt-get install qemu-kvm

Скачать учетные данные (credentials), которые мы создали для localadmin этой машины: Download the credentials we created for localadmin to this machine:

mkdir /home/localadmin/creds
cd /home/localadmin/creds
scp localadmin@10.10.10.2:/home/localadmin/creds/novacreds.zip .
unzip creds.zip

Source novarc file and see if connectivity to api server is working correctly: Смотрим исходный код файла novarc и проверяем, что его присоединие к API сервера работает верно:

source novarc
euca-describe-availability-zones verbose

The output should be similar to what is shown above in the configuration section for server1.

Вывод должен быть похож на то, что показано выше в разделе конфигурации для server1. Note: If you want to avoid manually sourcing the novarc file everytime, the user can add the following line to the .profile file in his home directory:

Примечание: Если вы не хотите вручную импортировать novarc файл каждый раз, пользователь может добавить следующие строки в файл .profile в своем домашнем каталоге:

source /home/localadmin/creds/novarc

[править] Глава 3. Image Management

[править] Вступление

There are several pre-built images for OpenStack available from various sources. You can download such images and use them to get familiar with OpenStack.You can refer to http://docs.openstack.org/cactus/openstack-compute/admin/content/starting-images.html for details on using such images.

Для ознакомления с OpenStack вы можете использовать готовые системные образы. Для загрузки доступно несколько таких образов. Более подробную информацию об использовании готовых системных образов вы можете получить, пройдя по следующей ссылке: http://docs.openstack.org/cactus/openstack-compute/admin/content/starting-images.html.

For any production deployment, you may like to have the ability to bundle custom images, with a custom set of applications or configuration. This chapter will guide you through the process of creating Linux images of Debian and Redhat based distributions from scratch. We have also covered an approach to bundling Windows images.

При работе с OpenStack вам может понадобиться создавать пользовательские системные образы, каждый из которых будет обладать своим уникальным набором настроек и установленных приложений. В этой главе содержится пошаговое руководство по созданию образов Linux-систем на основе дистрибутивов Debian и Redhat. Также мы постарались осветить проблему создания образов Windows-систем.

There are some minor differences in the way you would bundle a Linux images, based on distributions. Ubuntu makes it very easy by providing cloud-init package, which can be used to take care of the instance configuration at the time of launch.

В зависимости от используемого дистрибутива способы создания образа Linux-системы будут слегка различаться. Создание системного образа для Ubuntu изрядно упрощается с использованием пакета cloud-init, который может быть использован для конфигурации виртуальной машины во время запуска.

cloud-init handles importing ssh keys for password-less login, setting hostname etc. The instance acquires the instance-specific configuration from nova-compute by connecting to a meta data interface running on 169.254.169.254.

cloud-init управляет импортом ssh-ключей для аутентификации без использования пароля, для задания имени хоста, и т.д. Виртуальная машина получает свою конфигурацию от nova-compute через интерфейс метаданных на 169.254.169.254.

While creating the image of a distro that does not have cloud-init or an equivalent package, you may need to take care of importing the keys etc. by running a set of commands at boot time from rc.local.

Если вы создаете системный образ с использованием дистрибутива, который не содержит пакет cloud-init или аналогичные пакеты, то вам может понадобиться уделить отдельное внимание импорту ключей и т.п., использовав дополнительный набор команд при загрузке системы из rc.local.

The process for creating an image of Ubuntu and Fedora is largely the same with a few minor differences, which is explained below. In both cases, the documentation below assumes that you have a working KVM installation to use for creating the images. We are using the machine called ’client1’ as explained in the chapter on "Installation and configuration" for this purpose.

Процессы создания системных образов Ubuntu и Fedora практически идентичны, за исключением ряда нюансов, описанных ниже. В обоих случаях подразумевается, что у вас имеется рабочая KVM для использования при создании образов. Машину, используемую для этой цели, мы будем называть 'client 1'.

The approach explained below will give you disk images that represent a disk without any partitions. nova-compute can resize such disks (including resizing the file system) based on the instance type chosen at the time of launching the instance. These images cannot have ’bootable’ flag and hence it is mandatory to have associated kernel and ramdisk images. These kernel and ramdisk images need to be used by nova-compute at the time of launching the instance.

С помощью описанного подхода вы сможете создавать образы дисков без учета разделов. nova-compute может менять размер этих дисков (а также менять размер файловой системы) в зависимости от выбранного при загрузке типа виртуальной машины. Эти образы дисков не будут загрузочными и, соответственно, должны будут использоваться с соответствующими образами ядра и виртуального диска. Образы ядра и виртуального диска должны быть предоставлены nova-compute при запуске виртуальной машины.

However, we have also added a small section towards the end of the chapter about creating bootable images with multiple partitions that can be be used by nova to launch an instance without the need for kernel and ramdisk images. The caveat is that while nova-compute can resize such disks at the time of launching the instance, the file system size is not altered and hence, for all practical purposes, such disks are not re-sizable.

В конце главы вы сможете найти информацию о создании загрузочных образов дисков с несколькими разделами, которые могут быть использованы Nova для запуска виртуальной машины без необходимости использовать еще и образы ядра и виртуального диска. Нюанс заключается в том, что хотя nova-compute может изменять размер таких дисков при запуске виртуальной машины, размер файловой системы меняться не будет, и таким образом на практике размер дисков также меняться не сможет.

[править] Создаём образ Linux-системы: Ubuntu и Fedora

The first step would be to create a raw image on Client1. This will represent the main HDD of the virtual machine, so make sure to give it as much space as you will need.

Сперва вам понадобится создать raw-образ на машине Client1. Он станет главным жёстким диском виртуальной машины, поэтому в качестве размера образа укажите значение желаемого объема диска.

kvm-img create -f raw server.img 5G 

[править] Установка операционной системы

Download the iso file of the Linux distribution you want installed in the image. The instructions below are tested on Ubuntu 11.04 Natty Narwhal 64-bit server and Fedora 14 64-bit. Most of the instructions refer to Ubuntu. The points of difference between Ubuntu and Fedora are mentioned wherever required.

Валидность данного руководства была проверена на 64-битной серверной Ubuntu 11.04 Natty Narwhal и 64-битной Fedora 14. Используемые ниже примеры команд приведены для Ubuntu. Обо всех различиях в процессе установки будет сказано дополнительно.

Загрузите iso-файл нужного Linux-дистрибутива.

wget http://releases.ubuntu.com/natty/ubuntu-11.04-server-amd64.iso 

Boot a KVM instance with the OS installer ISO in the virtual CD-ROM. This will start the installation process. The command below also sets up a VNC display at port 0

Загрузите KVM с помощью установочного образа ОС с виртуального CD-ROM. Это запустит процесс установки. Указанная команда также установит VNC-display на порт 0.

sudo kvm -m 256 -cdrom ubuntu-11.04-server-amd64.iso -drive file=server,if=scsi,index=0 \
-boot d -net nic -net user -nographic ~-vnc :0 

Connect to the VM through VNC (use display number :0) and finish the installation.

Подключитесь к VM через VNC (используйте номер дисплея :0) и дождитесь окончания установки.

For Example, where 10.10.10.4 is the IP address of client1:

Например, где 10.10.10.4 - это IP-адрес client1:

vncviewer 10.10.10.4:0

During the installation of Ubuntu, create a single ext4 partition mounted on ’/’. Do not create a swap partition.

При установке Ubuntu, создайте один раздел ext4, смонтированный на '/'. Не создавайте раздел подкачки.

In the case of Fedora 14, the installation will not progress unless you create a swap partition. Please go ahead and create a swap partition.

В случае Fedora 14, установка не будет продолжена если раздел подкачки не создан, поэтому его придется создать чтобы продолжить установку.

After finishing the installation, relaunch the VM by executing the following command.

После окончания установки, перезагрузите VM, выполнив следующую команду.

sudo kvm -m 256 -drive file=server.img,if=scsi,index=0,boot=on -boot c -net nic -net user -nographic -vnc :0 

At this point, you can add all the packages you want to have installed, update the installation, add users and make any configuration changes you want in your image.

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

At the minimum, for Ubuntu you may run the following commands

Как минимум, для Ubuntu, вы можете выполнить следующие команды

sudo apt-get update 
sudo apt-get upgrade 
sudo apt-get install openssh-server cloud-init 

For Fedora run the following commands as root

Для Fedora выполните следующие команды из под пользователя root

yum update 
yum install  openssh-server 
chkconfig sshd on 

Also remove the network persistence rules from /etc/udev/rules.d as their presence will result in the network interface in the instance coming up as an interface other than eth0.

Кроме того, удалите правила определения сетевых карт в /etc/udev/rules.d, так как их присутствие приведет к тому, что сетевой интерфейс в случае, приходящих на интерфейс других, чем eth0.

sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules 

Shutdown the virtual machine and proceed with the next steps.

Завершите работу виртуальной машины и приступайте к следующим шагам.

[править] Extracting the EXT4 partition

The image that needs to be uploaded to OpenStack needs to be an ext4 filesystem image.

Образ, который должен быть загружен на OpenStack должен быть образ файловой системы ext4.

Here are the steps to create a ext4 filesystem image from the raw image i.e server.img

Вот шаги, чтобы создать образ файловой системы ext4 из образа raw, т.е server.img

sudo losetup -f server.img
sudo losetup -a

You should see an output like this:

Вы должны увидеть примерно такой вывод:

/dev/loop0 : [0801]:16908388 ($filepath)

Observe the name of the loop device ( /dev/loop0 in our setup) when $filepath is the path to the mounted .raw file.

Наблюдать имя loop устройства (/dev/loop0 в нашем случае), когда $filepath-путь к конной .raw файла.

Now we need to find out the starting sector of the partition. Run:

Теперь нам нужно выяснить, начальный сектор этого раздела. Запустите:

sudo fdisk -cul /dev/loop0

You should see an output like this:

Вы должны увидеть примерно такой вывод:

Disk /dev/loop0 : 5368 MB , 5368709120 bytes
149 heads, 8 sectors/track, 8796 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
Disk identifier: 0x00072bd4
Device Boot Start End Blocks Id System
/dev/loop0p1 * 2048 10483711 5240832 83 Linux

Make a note of the starting sector of the /dev/loop0p1 partition i.e the partition whose ID is 83. This number should be multiplied by 512 to obtain the correct value of the offset in bytes. In this case: 2048 x 512 = 1048576

Запишите сектора начиная с /dev/loop0p1, то есть раздела, ID-83. Это число нужно умножить на 512, чтобы получить правильное значение смещения в байтах. В этом случае: 2048 x 512 = 1048576

Unmount the loop0 device: Размонтируйте loop0 устройство:

sudo losetup -d /dev/loop0

Now mount only the partition (/dev/loop0p1) of server.img which we had previously noted down, by adding the -o parameter with value previously calculated value

Сейчас смонтирован только раздел (/dev/loop0p1) server.img что мы раньше и записали, добавив -o параметр с ранее вычисленном значением

sudo losetup -f -o 1048576 server.img
sudo losetup -a

You’ll see a message like this:

Вы должны увидеть примерно такой вывод:

/dev/loop0 : [0801]:16908388 ($filepath) offset 1048576

Make a note of the mount point of our device(/dev/loop0 in our setup) when $filepath is the path to the mounted .raw file.

Примите к сведению точку монтирования нашего устройства (/dev/loop0 в нашей случае), когда $filepath-путь к смонтированному файлу .raw.

Copy the entire partition to a new .raw file

Скопируйте весь раздел на новый файла .raw

sudo dd if=/dev/loop0 of=serverfinal.img

Now we have our ext4 filesystem image i.e serverfinal.img

Теперь у нас есть образ файловой системы ext4, т.е. serverfinal.img

Unmount the loop0 device

Размонтируйте устройство loop0

sudo losetup -d /dev/loop0

[править] Tweaking /etc/fstab

You will need to tweak /etc/fstab to make it suitable for a cloud instance.

Вам нужно поправить /etc/fstab, чтобы сделать его подходящим для облака инстанции.

nova-compute may resize the disk at the time of launch of instances based on the instance type chosen.

nova-compute может изменить размер диска на момент запуска примеров, основанных на экземпляр типа выбранного.

This can make the UUID of the disk invalid.

Это можно сделать UUID диск поврежденным.

Hence we have to use file system label as the identifier for the partition instead of the UUID. Поэтому мы должны использовать метки файловой системы в качестве идентификатора вместо метки UUID.

Loop mount the serverfinal.img, by running

Цикл монтажа serverfinal.img, запустив

sudo mount -o loop serverfinal.img /mnt
UUID=e7f5af8d-5d96-45cc-a0fc-d0d1bde8f31c / ext4 errors=remount-ro 0 1

to

LABEL=uec-rootfs / ext4 defaults 0 0

[править] Fetching Metadata in Fedora

Since Fedora does not ship with cloud-init or an equivalent, you will need to take a few steps to have the instance fetch the meta data like ssh keys etc.

Fedora не поставляет облако инициализации или эквивалент, и вам необходимо сделать несколько шагов, чтобы принести мета данных, например как SSH-ключей и т.д.

Edit the /etc/rc.local file and add the following lines before the line "touch /var/lock/subsys/local"

Измените /etc/rc.local и добавите следующие строки перед линией "touch /var/lock/subsys/local"

depmod -a
modprobe acpiphp
  1. simple attempt to get the user ssh key using the meta-data service
  2. простая попытка получить ключ пользователь SSH использованием мета-данных службы
mkdir -p /root/.ssh
echo >> /root/.ssh/authorized_keys
curl -m 10 -s http ://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep ’ssh-rsa’ >> /root/.ssh/authorized_keys
echo "AUTHORIZED_KEYS :"
echo "************************"
cat /root/.ssh/authorized_keys
echo "************************"

[править] Kernel and Initrd for OpenStack

Copy the kernel and the initrd image from /mnt/boot to user home directory. These will be used later for creating and uploading a complete virtual image to OpenStack.

Скопируйте kernel и initrd с /mnt/boot пользователю в домашний каталог. Они будут использоваться в дальнейшем для создания и загрузки полного виртуального образа для OpenStack.

sudo cp /mnt/boot/vmlinuz-2.6.38-7-server /home/localadmin
sudo cp /mnt/boot/initrd.img-2.6.38-7-server /home/localadmin

Unmount the Loop partition

Отключите Loop раздел

sudo umount /mnt

Change the filesystem label of serverfinal.img to ’uec-rootfs’

Измените метку файловой системы serverfinal.img на "uec-rootfs'

sudo tune2fs -L uec-rootfs serverfinal.img

Now, we have all the components of the image ready to be uploaded to OpenStack imaging server.

Теперь у нас есть все компоненты образа готовы быть загружены на сервер образов OpenStack.

[править] Registering with OpenStack

The last step would be to upload the images to OpenStack Imaging Server glance. The files that need to be uploaded for the above sample setup of Ubuntu are: vmlinuz-2.6.38-7-server, initrd.img-2.6.38-7-server, serverfinal.img.

Последний шаг был бы для загрузки образов в Сервер образов OpenStack glance. Файлы, которые должны быть загружены для установки выше образец Ubuntu являются: vmlinuz-2.6.38-7-server, initrd.img-2.6.38-7-server, serverfinal.img. Run the following command

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

uec-publish-image -t image --kernel-file vmlinuz-2.6.38-7-server --ramdisk-file initrd.img \
-2.6.38-7-server amd64 serverfinal.img bucket1 

For Fedora, the process will be similar. Make sure that you use the right kernel and initrd files extracted above.

Для Fedora, этот процесс будет аналогичным. Убедитесь, что вы используете правильные ядра и файлы начального корневого диска, извлеченные выше. uec-publish-image, like several other commands from euca2ools, returns the prompt back immediately.

uec-publish-image, как и ряд других команд из euca2ools, возвращает строку обратно.

However, the upload process takes some time and the images will be usable only after the process is complete.

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

You can keep checking the status using the command ’euca-describe-images’ as mentioned below.

Вы можете продолжать проверять состояние, используя команду 'euca-describe-images’, как сказано ниже.

You can register bootable disk images without associating kernel and ramdisk images.

Вы можете зарегистрировать образы загрузочных дисков, не связывая ядро и образ ramdisk.

When you do not want the fiexibility of using the same disk image with different kernel/ramdisk images, you can go for bootable disk images.

Если вы не хотите, гибко использовать один и тот же образ диска с различными kernel/ramdisk образами, вы можете использовать их из загрузочных образов дисков.

This greatly simplifies the process of bundling and registering the images. However, the caveats mentioned in the introduction to this chapter apply. Please note that the instructions below use server.img and you can skip all the cumbersome steps related to extracting the single ext4 partition.

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

euca-bundle-image -i server.img 
euca-upload-bundle -b  mybucket -m /tmp/server.img.manifest.xml 
euca-register mybucket /server.img.manifest.xml

[править] 3.2.7 Image Listing Список образов

The status of the images that have been uploaded can be viewed by using euca-describe-images command. The output should like this:

Статус образов, которые были загружены, можно просмотреть с помощью команды euca-describe-images. Вывод должен быть таким:

localadmin@client1:~$ euca-describe-images
IMAGE ari-7bfac859 bucket1/initrd.img-2.6.38-7-server.manifest.xml css available \
private x86_64 ramdisk
IMAGE ~~ami-5e17eb9d bucket1/serverfinal.img.manifest.xml css available private \
x86_64 ~machine aki-3d0aeb08 ari-7bfac859
IMAGE aki-3d0aeb08 bucket1/vmlinuz-2.6.38-7-server.manifest.xml css available \
private x86_64 kernel
localadmin@client1:~$

[править] Creating a Windows Image Создание Образа Windows

The first step would be to create a raw image on Client1, this will represent the main HDD of the virtual machine, so make sure to give it as much space as you will need.

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

kvm-img create -f raw windowsserver.img 20G

OpenStack presents the disk using aVIRTIO interface while launching the instance. Hence the OS needs to have drivers for VIRTIO. By default, the Windows Server 2008 ISO does not have the drivers for VIRTIO. Download the virtual fioppy drive containing VIRTIO drivers from the following location

http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/

and attach it during the installation Start the installation by running

OpenStack представляет диск, используя aVIRTIO интерфейс при запуске экземпляра. Следовательно, операционная система должна иметь драйверы для VIRTIO. По умолчанию, Windows Server 2008 и ISO не имеют драйверы для VIRTIO. Скачать виртуальный fioppy диск, содержащий VIRTIO водителей по следующей ссылке

http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/

закрепите его во время установки Запустите установку, запуская

sudo kvm -m 1024 -cdrom win2k8_dvd.iso -drive file=windowsserver.img,if=virtio,boot=on \
-fda virtio-win-1.1.16.vfd -boot d -nographic -vnc :0

When the installation prompts you to choose a hard disk device you won’t see any devices available. Click on "Load drivers" at the bottom left and load the drivers from

A:\i386\Win2008

После установки попросит вас выбрать жесткий диск, вы не увидите каких-либо устройств. Нажмите на кнопку "Загрузить драйверы" , в левом нижнем углу и загрузить драйверы с

A:\i386\Win2008

After the Installation is over, boot into it once and install any additional applications you need to install and make any configuration changes you need to make. Also ensure that RDP is enabled as that would be the only way you can connect to a running instance of Windows. Windows firewall needs to be configured to allow incoming ICMP and RDP connections. For OpenStack to allow incoming RDP Connections, use euca-authorize command to open up port 3389 as described in the chapter on "Security". Shutdown the VM and upload the image to OpenStack

После Установки по, загрузку в это раз и устанавливать никаких дополнительных приложений, которые вам нужно установить и внести любые изменения конфигурации вы должны сделать. Также убедитесь, что RDP включен, так как это было единственное, как вы можете подключиться к запущенного экземпляра Windows. Windows firewall должен быть настроен, чтобы разрешить входящий ICMP-и RDP-соединения. Для OpenStack, чтобы разрешить входящие Соединения RDP, используйте euca-authorize команду, чтобы открыть порт 3389, как описано в главе "Безопасность". Отключение ВМ и загрузить изображение на OpenStack

euca-bundle-image -i windowsserver.img
euca-upload-bundle -b mybucket -m /tmp/windowsserver.img.manifest.xml
euca-register mybucket /windowsserver.img.manifest.xml

[править] Глава 4

Instance Management

[править] Introduction

An instance is a virtual machine provisioned by OpenStack on one of the nova-compute servers. When you launch an instance, a series of steps are triggered on various components of the OpenStack. During the life cycles of an instance, it moves through various stages as shown in the diagram below:

OpenStack Instance Lifecycle.png

There are four interfaces that can be used for managing instances in nova.

• Firefox with Hybridfox Plugin 
• Command line tools like euca2ools 
• OpenStack Dashboard 
• Custom applications developed using EC2 APIs

[править] Hybridfox

Elasticfox is an open source Mozilla Firefox extension that works on Firefox Version 2.0 or later to help you with managing AWS compute and associated resources - Launch new instances, mount Elastic Block Storage volumes, map Elastic IP addresses, and more. This was originally written for EC2, but, it has become possible to use to manage resources from other cloud platforms that are API compatible with EC2 as well, particularly Eucalyptus. Hybridfox is a fork from Elasticfox to make it usable with Eucalyptus, when Elasticfox worked only with AWS. The aim of Hybridfox was to be usable as the single interface to AWS and Eucalyptus as well as other cloud platforms API compatible with AWS. Recent versions of Hybridfox have been quick to add support for newer features from AWS such as handling streaming media etc.

[править] Features

•  List available Machine images (AMI) 
•  List running instances 
•  Launch new instances of an AMI 
•  Manage security groups and rules 
•  Manage Snapshots/EBS volumes 

[править] Installation

You can install the extension from http://code.google.com/p/hybridfox/downloads/list. The latest version (at the time of writing) is hybridfox-1.6.000040.xpi.

[править] configuration

Define a Region

•  Click on Regions button 
•  Enter a logical name for the region (Example:"Eucalyptus" , "MyEucalyptus" etc.) 
•  Enter the value of EC2_URL from your eucarc file as the Endpoint URL(http://192.168.10.121:8773/services/Eucalyptus in 
 our sample setup) 

Define Credentials

•  Click on Credentials button 
•  Enter a logical name for the credential set (Example: "EucaAcc1" etc.) 
•  Enter EC2_ACCESS_KEY and EC2_SECRET_KEY from your eucarc file as the AWS Access Key and AWS Secret Access 
 Key respectively 

Define Key Pairs

•  Click on KeyPairs tab 
•  Click on "Create a ney keypair" icon 
•  Enter a name for the key pair (Example: "eucakey" etc.) 
•  Choose location on the client machine to save the id file to (You will need this to use with putty etc. to make an SSH connection) 

Define Security Groups

•  Click on SecurityGroups tab 
•  Enter a name for the group (Example: "Eucalyptus", "EucaGroup" etc.) 
•  Enter the description and click on create button 

You will have an option to specify some basic ports like SSH/RDP to be opened up while creating the group itself. After the group is created, you can add rules any time by choosing the security group in the left pane titled "Your groups" and adding rules in the right pane titled "Group Permissions"

[править] Euca2ools-Command Line Tools

Euca2ools от Eucalyptus предоставляет огромное число консольных утилит для управления настройками Ecalyptus. Эти команды помогут вам управлять образами, сущностями, хранилищем, сетями и тд. Несколько команд, относящихся к управлению сущностями, представлено ниже. Для полного списка команд смотрите Преложение.

[править] Installation

sudo apt-get install euca2ools

[править] Creation of Key Pairs

OpenStack expects the client tools to use 2 kinds of credentials. One set of credentials are called Access Key and Secret Key that all clients would need to use to make any requests to the Cloud Controller. Each user registered on the web interface has this set created for him. You can download it from the web interface as mentioned in the chapter on "Web Interface". You will also need to generate a keypair consisting of private key/public key to be able to launch instances on Eucalyptus. These keys are injected into the instances to make passwordless SSH access to the instance possible. This depends on the way the necessary tools are bundled into the images. Please refer to the chapter on Image Management for more details. Keypairs can also be generated using the following commands.

cd ~/creds
euca-add-keypair mykey > mykey.priv
chmod 600 mykey.priv

This creates a new keypair called mykey. The private key mykey.priv is saved locally which can be used to connect to an instance launched with mykey as the keypair. euca-describe-keypairs command to list the available keypairs. The output should like this:

uecadmin@client1 :~$ euca-describe-keypairs
KEYPAIR mykey f7 :ac :8e :f5 :05:19:2b :31:28:8c :9b :d7 :b8 :07:0c :3c :b6 :34:8f :79
KEYPAIR helloworld 12:96:b3 :21:34:8d :6a :3f :92:2e :2b :70:23:ff :7f :51:b5 :b7 :ad :37
KEYPAIR ubuntu f6 :af :9a :59:65:35:32:c4 :3a :c4 :62:0e :e1 :44:0f :71:29:03:2d :91
KEYPAIR lucid 74:04:70:33:ed :57:7a :30:36:1f :ca :c6 :ec :d5 :4f :10:34:1a :52:51
KEYPAIR karmic 01:f9 :aa :5f :4d :20:e2 :53:d1 :29:d0 :0f :e2 :f3 :8c :21:91:70:7e :c8

To delete an existing keypair:

euca-delete-keypair helloworld

The above tasks can be achieved using Hybridfox from the "Keypairs" tab.

[править] Launch and manage instances

There are several commands that help in managing the instances. Here are a few examples:

$ euca-run-instances emi-721D0EBA -k mykey -t c1.medium
RESERVATION r-55560977 admin admin-default
INSTANCE i-50630A2A emi-721D0EBA 0.0.0.0 0.0.0.0 pending mykey 2010-05-07T07
:17:48.23Z eki-675412F5 eri-A1E113E0
$ euca-describe-instances
RESERVATION r-55560977 admin default
INSTANCE i-50630A2A emi-721D0EBA 192.168.3.130 192.168.3.130 running
mykey 0 c1.medium 2010-05-07T07 :17:48.23Z myueccluster eki
-675412F5 eri-A1E113E0
$ euca-reboot-instances i-50630A2A
$ euca-terminate-instances i-50630A2A
$ euca-run-instances ami-XXXXXXXX -k mykey
$ euca-get-console-output i-50630A2A
i-50630A2A 2010-05-07T07 :22:40.795Z
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.32-21-server (buildd@yellow ) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5 ) ) #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 (Ubuntu 2.6.32-21.32-server 2.6.32.11+drm33 .2)
[ 0.000000] Command line : root=/dev/sda1 console=ttyS0
[ 0.000000] KERNEL supported cpus :
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Centaur CentaurHauls
[ 0.000000] BIOS-provided physical RAM map :
[ 0.000000] BIOS-e820 : 0000000000000000 - 000000000009f000 (usable )
[ 0.000000] BIOS-e820 : 000000000009f000 - 00000000000a0000 (reserved)
.............

You can make password less ssh access to the instance as follows:

ssh -i mykey.priv user@192.168.3.130

Make sure that you launch the instance with the correct VM type. If it is launched with a smaller VM type,then the following error is encountered. error : insufficient disk capacity remaining By default, m1.small is the VM type that is used which comes with a 2GB Hard Disk. So if you have a disk image of size 5GB, instead of

euca-run-instances ami-XXXXXXXX -k mykey

use

euca-run-instances ami-XXXXXXXX -k mykey -t c1.medium

VM type also has implications for amount of RAM and number of CPUs allocated to the instance. Check the VM types available.

sudo nova-manage instance_type list

[править] OpenStack Dashboard

[править] Creation of Keypairs

Creation of Keypairs.png

[править] Launching an instance

Launching an instance.png

[править] Terminating an instance

Terminating an instance.png

[править] Displaying the Console output

Displaying the Console output.png

[править] Глава 5. Storage Management

[править] nova-volume

nova-volume provides persistent block storage compatible with Amazon’s Elastic Block Store. The storage on the instances is non persistent in nature and hence any data that you generate and store on the file system on the first disk of the instance gets lost when the instance is terminated. You will need to use persistent volumes provided by nova-volume if you want any data generated during the life of the instance to persist after the instance is terminated. Commands from euca2ools package can be used to manage these volumes. Here are a few examples:

[править] Interacting with Storage Controller

Make sure that you have sourced novarc before running any of the following commands. The following commands refer to a zone called ’nova’, which we created in the chapter on "Installation and configuration". The project is ’proj’ as referred to in the other chapters. Create a 10 GB volume

euca-create-volume -s 10 -z nova

You should see an output like:

VOLUME vol-00000002 1 creating (proj , None , None , None ) 2011-04-21T07 :19:52Z

List the volumes

euca-describe-volumes

You should see an output like this:

VOLUME vol-00000001 1 nova available (proj, server1, None, None) 2011-04-21T05 :11:22Z
VOLUME vol-00000002 1 nova available (proj, server1, None, None) 2011-04-21T07 :19:52Z

Attach a volume to a running instance

euca-attach-volume -i i-00000009 -d /dev/vdb vol-00000002

A volume can only be attached to one instance at a time. When euca-describe-volumes shows the status of a volume as ’available’, it means it is not attached to any instance and ready to be used. If you run euca-describe-volumes, you can see that the status changes from "available" to "in-use" if it is attached to an instance successfully. When a volume is attached to an instance, it shows up as an additional SCSI disk on the instance. You can login to the instance and mount the disk, format it and use it. Detach a volume from an instance.

euca-detach-volume vol-00000002

The data on the volume persists even after the volume is detached from an instance. You can see the data on reattaching the volume to another instance. Even though you have indicated /dev/vdb as the device on the instance, the actual device name created by the OS running inside the instance may differ. You can find the name of the device by looking at the device nodes in /dev or by watching the syslog when the volume is being attached.

[править] Глава 6. Network Management

[править] Introduction

In OpenStack, the networking is managed by a component called "nova-network". This interacts with nova-compute to ensure that the instances have the right kind of networking setup for them to communicate among themselves as well as with the outside world. Just as in Eucalyptus or AWS, each OpenStack instance can have 2 IP addresses attached to it. One is the private IP address and the other called Public IP address. The private IP address is typically used for communication between instances and the public IP is used for communication of instances with the outside world. The so called public IP address need not be a public IP address routable on the Internet; it can even be an address on the corporate LAN. The network configuration inside the instance is done with the private IP address in view. The association between the private IP and the public IP and necessary routing is handled by nova-network and the instances need not be aware of it. nova-network provides 3 different network management options. Currently you can only choose one of these 3 options for your network management.

• Flat Network
• Flat DHCP Network
• VLAN Network

VLAN Network is the most feature rich and is the idea choice for a production deployment, while the other modes can be used while getting familiar with OpenStack and when you do not have VLAN Enabled switches to connect different components of the OpenStack infrastructure. The network type is chosen by using one of the following configuration options in nova.conf file. If no network manager is specified explicitly, the default network manager, VLANManager is used.

--network_manager = nova.network.manager.FlatManager
--network_manager = novanetwork.manager.FlatDHCPManager
--network_manager = nova.network.manager.VlanManager

In each of these cases, run the following commands to set up private and public IP addresses for use by the instances:

sudo nova-manage network create 192.168.3.0/24 1 255
sudo nova-manage floating create 10.10.10.2 10.10.10.224/27

The public IP which you are going to associate with an instance needs to be allocated first by using "euca-allocate-address" command:

euca-allocate-address 10.10.2.225

You can then associate a public IP to a running instance by using "euca-associate-address" command:

euca-associate-address -i i-0000008 10.10.2.225

Please refer to http://docs.openstack.org/openstack-compute/admin/content/ch04.html for more details about each of the net-working types.

[править] Глава 7. Управление доступом путём использования ролей

[править] Управление доступом путём использования ролей

Каждый пользователь nova имеет определенную, ассоциированную с ним, роль. Роль может быть назначена в момент создания учетной записи, при использовании "nova-manage add user (ИмяПользователя)" или путем редактирования профиля позже пользователем с правами менеджера проекта (project manager) через Панель управления OpenStack. Роль может быть как глобальная, так и особенная в рамках проекта. Все виды доступа в OpenStack задаётся ролями. Каждная роль имеет заранее заданный набор операций, которые разрешены в рамках области применения (глобальное или локальное).

[править] Администратор (admin)

Это базовая роль проекта. Пользователи, которые имеют права админстратора с момента своего создания. Они наделяются правами админстратора для выполнения таких задач как:

•  добавление сущности (instance);
•  удаление сущности; 
•  удаление образа; 
•  добавление ключа. 

[править] IT безопасность (itsec)

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

[править] Менеджер проекта (projectmanager)

Это роль по умолчанию для владельца проекта. Она позволяет следующие задачи:

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

[править] Администратор сети (netadmin)

Роль, которая позволяет определенному пользователю исполнять операции, связанные с сетью, а именно:

•  выделять публично доступные IP адреса; 
•  назначать публично доступные IP адреса; 
•  создавать правила брендмауэра (сетевого экрана); 
•  модифицировать правила брендмауэра (сетевого экрана);

[править] Разработчик (developer)

Это роль основного предназначения, которая присваивается пользователям по умолчанию. Эта роль позволяет создавать и скачивать ключи. Обший итог роли и разрешенных задач для каждой роли: Управление ролями осуществляется использованием команды "nova-manage role". Пожалуйста, обращайтесь к разделу "Команды OpenStack" для подробностей. Примеры: Добавить роль пользователю

nova-manage role add user1 netadmin

Удалить роль у определенного пользователя

nova-manage role remove user1 netadmin

[править] Таблица описания ролей

Роли Глобальные Локальные Управление ключами Управление сущностями Управление образами Управление проектами Управление модификацией Управление брендмауэром
Разработчик проектаНетДаДаНетНетНетНетНет
МенеджерНетДаДаДаДаДаДаДа
It безопасностьДаНетДаНетНетНетНетНет
Администратор облакаДаНетДаДаДаДаДаДа
Администратор сети НетНетНетНетНетНетНетДа
                                                  Таблица 7.1: Описание ролей

[править] Глава 8. Безопасность

[править] Безопасность

OpenStack обеспечивает фильтрацию входа для сущностей, основанных на концепции групп безопасности. OpenStack выполняет фильтрацию входа путем создания удобных правил IP таблиц. Группа безопасности - это группа правил, которая применяется к входящим пакетам для сущностей OpenStack. Вы можете задать группу безопасности, когда запускаете сущность. Каждая группа безопасности может иметь множество ассоциированых с ней правил. Каждое правило определяет источник, IP/подсеть, тип протокола, порты назначения пакета данных и т.д. Пакет данных, соответствующий правилам, будет допущен. Остальные пакеты данных будет блокированы. Группа безопасности, которая не имеет каких-либо правил, ассоциированных с ней, блокирует весь входящий траффик. Этот механизм обеспечивает только фильтрацию входящих пакетов данных и не обеспечивает фильтрацию исходящих пакетов данных. В результате этого, весь исходящий траффик разрешён. Если необходимо добавить фильтрацию исходящих пакетов, то нужно осуществлять это внтури сущности, используя брендмауэр. Такие инструменты, как Hybridfox, позволяют управлять группами безопасности и также позволяет указать группу безопасности при старте сущности. Также для этих целей можно использовать инструменты командной строки из пакета euca2ools, например команду euca-authorize. Вот несколько команд euca для управления группами безопасности. Как и в предыдущих главах, имя проекта "proj".

Создать группу безопасности с именем "myservers":

euca-add-group -d "My Servers" myservers

Добавить правило к группе безопасности "myservers", позволяющее icmp and tcp траффик от 192.168.1.1:

euca-authorize -P tcp -s 192.168.1.1 -p 22 myservers
euca-authorize -P icmp -s 192.168.1.1 -t -1: -1 myservers

Добавить правило принимать входящие RDP соединения для сущности Windows:

euca-authorize -P tcp -s 192.168.1.1 -p 3389 myservers

Правила могут быть показаны командой euca-describe-groups: $ euca-describe-groups GROUP proj myservers my servers

PERMISSION proj myservers ALLOWS tcp 22 22 FROM CIDR 192.168.1.1
PERMISSION proj myservers ALLOWS icmp -1 -1 FROM CIDR 192.168.1.1
PERMISSION proj myservers ALLOWS tcp 3389 3389 FROM CIDR 192.168.1.1

Удалить правило для ssh траффика из источника с ip 192.168.1.1 из группы безопасности "myservers":

euca-revoke -P tcp -s 192.168.1.1 -p 22 myservers

Удалить группу безопасности "myservers":

euca-delete-group myservers

Запустить сущность, ассоциированую с группой безопасности "myservers":

euca-run-instances emi-XXXXXXXX -k mykey -g myservers


Когда не указывается группа безопасности, сущность ассоциируется с встроенной группой безопасти по имени default". Правила для этой группы также могут быть изменены командами euca-add, euca-revoke. Группы безопасности могут быть просмотрены и изменены таким инструментом, как HybridFox. Скриншот со списком групп безопасности в HybridFox:

A screenshot of listing of security groups.png

[править] Глава 9. Команды OpenStack

[править] Команды управления Nova

OpenStack предоставляет команды для администрирования задач управления пользователями и ролями, управления сетью и другими задачами. Во всех примерах будет использоваться имя пользователя "novadmin" и имя проекта "proj". Все команды nova-manage должны быть запущены из под "root" пользователя. Либо запускать их из под "root" используя "sudo".

[править] Управление ролями и пользователями

Добавление нового пользователя

nova-manage user create novaadmin

Добавить пользователя администратора

nova-manage user admin novaadmin

Список существующих пользователей

nova-manage user list

Удаление пользователя

nova-manage user delete novaadmin

Ассоциирование пользователя с проектом

nova-manage project add proj novaadmin

Удаление пользователя из проекта

nova-manage project remove proj novaadmin

Просмотр ключей доступа и секретных ключей пользователя

nova-manage user exports novaadmin

Добавление роли пользователю. Обратитесь к главе "Управление доступом путём использования ролей" для большей информации об управлении ролями

nova-manage role add novaadmin netadmin

Удаление роли пользователя

nova-manage role remove novaadmin netadmin

С помощью этой команды вы сможете изменить любые ключи доступа, секретные ключи и роль администратора для пользователя. Синтаксис:

nova-manage user modify username new_access_key new_secret_key admin_flag <admin flag - Tor F>
nova-manage user modify novaadmin mygreatnewaccesskey "" ""
nova-manage user modify novaadmin "" mygreatsecretkey ""
nova-manage user modify novaadmin "" "" T

Проверить имеет ли конкретный пользователь указанную роль или нет. Указанная роль может быть локальная или глобальная. Вывод команды будет 'true' или 'false'

nova-manage role has novaadmin cloudadmin

True

nova-manage role has novaadmin netadmin proj

False

[править] Project Management

The following commands help you create and manage projects. "nova-manage account" command is an alias to "nova-manage project" and you can use them interchangeably. Create a project. It requires you to mention name of the project admin as well. css1 is the name of the project and user5 is the name of the project admin here.

nova-manage project create css1 user5

List the registered projects.

nova-manage project list

Download the credentials and associated file for a specific project. Please refer to the chapter on Installation & configuration" for more details.

nova-manage project zipfile csscorp user5 /home/user5/mysec.zip

Delete an existing project.

nova-manage project delete css1

Check the project wise resource allocation. The output will look like this:

nova-manage project quota css1
metadata_items: 128
gigabytes: 1000
floating_ips: 10
instances: 10
volumes: 10
cores: 20

[править] Работа с базой данных

Nova сохраняет данные связанные с проектами, пользователями и ресурсами по умолчанию в базу данных MySQL. Вывод текущей версии баззые данных

nova-manage db version

Sync the DB schema to be in sync with the current configuration.

nova-manage db sync

[править] Instance Type Management

Nova has the concept of instance types. Each instance type is defined with certain amount of RAM and certain size of the hard disk. When an instance is launched with a particular instance type, Nova resizes the disk image to suit the instance type and allocates the RAM as defined for the instance type chosen. Nova calls instance types as ’fiavors’ and lets you add to the list of fiavors. By default Nova has 5 types - m1.tiny, m1.small, m1.medium, m1.large and m1.xlarge. List the current instance types

nova-manage flavor list
m1.medium: Memory: 4096MB, VCPUS: 2, Storage: 40GB, FlavorID: 3, Swap: 0GB, RXTX Quota: 0
GB, RXTX Cap: 0MB
m1.large: Memory: 8192MB, VCPUS: 4, Storage: 80GB, FlavorID: 4, Swap: 0GB,
RXTX Quota: 0GB, RXTX Cap: 0MB
m1.tiny: Memory: 512MB, VCPUS: 1, Storage: 0GB, FlavorID: 1, Swap: 0GB,
RXTX Quota: 0GB, RXTX Cap: 0MB
m1.xlarge: Memory: 16384MB, VCPUS: 8, Storage: 160GB, FlavorID: 5, Swap: 0GB, RXTX Quota:
0GB, RXTX Cap: 0MB
m1.small: Memory: 2048MB, VCPUS: 1, Storage: 20GB, FlavorID: 2, Swap: 0GB,
RXTX Quota: 0GB, RXTX Cap: 0MB

Define a new instance type

nova-manage flavor create m1.verytiny 256 2 20 6 0 0 0

Remove an existing instance type.

nova-manage flavor delete m1.verytiny
m1.verytiny deleted

[править] Service Management

Check state of available services.

nova-manage service list
server1 nova-scheduler enabled :- ) 2011-04-06 17:01:21
server1 nova-network enabled :- ) 2011-04-06 17:01:30
server1 nova-compute enabled :- ) 2011-04-06 17:01:22
server2 nova-compute enabled :- ) 2011-04-06 17:01:28

Disable a running service

nova-manage service disable <hostname> <service>
nova-manage service disable server2 nova-compute
nova-manage service list
server1 nova-network enabled :- ) 2011-04-06 17:05:11
server1 nova-compute enabled :- ) 2011-04-06 17:05:13
server1 nova-scheduler enabled :- ) 2011-04-06 17:05:17
server2 nova-compute disabled :- ) 2011-04-06 17:05:19

Re-enable a service that is currently disabled

Syntax : nova-manage service enable <hostname> <service>
nova-manage service enable server2 nova-compute
nova-manage service list
server1 nova-scheduler enabled :- ) 2011-04-06 17:08:23
server1 nova-network enabled :- ) 2011-04-06 17:08:22
server1 nova-compute enabled :- ) 2011-04-06 17:08:23
server2 nova-compute enabled :- ) 2011-04-06 17:08:19\

Get Information about resource utlization of the OpenStack components

Syntax : nova-manage service describe_resource <hostname>
nova-manage service describe_resource server1
HOST PROJECT cpu mem (mb ) disk (gb )
server1 (total ) 2 3961 224
server1 (used ) 1 654 30
server1 proj 2 1024 0

[править] Euca2ools Commands

euca2ools provide a set of commands to communicate with the cloud. All these commands require you to authenticate and this is done by sourcing novarc file as detailed in the chapter on "Installation & configuration" Most of the euca2ools command line utilities work with OpenStack, just as they work with EC2 of AWS. There may be some differences due to some of the functionality that is yet to be implemented in OpenStack. Help is available for each of these commands with the switch --help.

•  euca-add-group 
•  euca-delete-bundle 
•  euca-describe-instances 
•  euca-register 
•  euca-add-keypair 
•  euca-delete-group 
•  euca-describe-keypairs 
•  euca-release-address 
•  euca-allocate-address 
•  euca-delete-keypair 
•  euca-describe-regions 
•  euca-reset-image-attribute 
•  euca-associate-address 
•  euca-delete-snapshot 
•  euca-describe-snapshots 
•  euca-revoke 
•  euca-attach-volume 
•  euca-delete-volume 
•  euca-describe-volumes 
•  euca-run-instances 
•  euca-authorize 
•  euca-deregister 
•  euca-detach-volume 
•  euca-terminate-instances 
•  euca-bundle-image 
•  euca-describe-addresses 
•  euca-disassociate-address 
•  euca-unbundle 
•  euca-bundle-vol 
•  euca-describe-availabity-zones 
•  euca-download-bundle 
•  euca-upload-bundle 
•  euca-confirm-product-instance 
•  euca-describe-groups 
•  euca-get-console-output 
•  euca-version 
•  euca-create-snapshot 
•  euca-describe-image-attribute 
•  euca-modify-image-attribute 
•  euca-create-volume 
•  euca-describe-images 
•  euca-reboot-instances