1 Введение

Настоящий документ представляет собой рукводство по быстрому старту использования публичного облака AITU. Рукводство определяет порядок использования/управления ресурсами облака пользователями.

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

2 Панель управления Horizon

В aitu.cloud имеется возможность использовать разные способы управления проектом и его ресурсами: Horizon Dashboard, API(например через openstack client), Terraform.

Ссылки на ресурсы:

  1. Облако Aitu
  2. Официальная страница проекта Openstack
  3. End User Guide
  4. Openstack wiki

Для использования Horizon необходмио авторизоваться в Aitu Cloud или использовать URL, предоставленный облачным провайдером со своими авторизационными данными.

Документация Openstack Horizon Dashboard

2.1 Минимальные требования перед созданием ВМ

Перед созданием Виртуальной машины(далее - ВМ), требуется создать следующие ресурсы:

  • Выбор flavor’a (тип ВМ)
  • Выбор источника для создания ВМ (image)
  • Создание диска(volume)
  • Создание внутренней сети
  • Создание роутера (для подключения внешних сетей, например - Интернет)

2.1.1 О flavors (тип ВМ)

Примечание:

Создание flavor’a доступно только администраторам облака/ проекта, поскольку это влияет на эффективное планирование в облаке.

Flavor - это тип инстанса или другими словами шаблон для его создания. В нем указываются объемы ресурсов выделяемых для ВМ (СPU Cores,RAM,Volume и т.д.).

Тарифы на ресурсы в облаке aitu можете посмотреть по ссылке.

Авторизуйтесь в облаке aitu и при создании и выборе параметров ВМ, укажите тот тип ВМ (flavor) который соответствует запрашиваемым ресурсам.

Список Flavors Ссылки на официальные ресурсы:

  1. Про flavor’ы

  2. Документация Openstack Horizon Dashboard

2.1.2 Операции с образами

Образ операционной системы (далее- образ ОС) представляет собой файл, в котором содержится виртуальный диск с уже установленной на нем операционной системой. Образы ОС используются для создания ВМ в облаке такикх как ui.aitu.cloud.

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

2.1.2.1 Выбор источника для создания ВМ

При создании ВМ необходимо выбрать образ ОС из которой она будет запущена.

Образ ОС можно выбрать при создании ВМ из предоставленных в Horizon.

Примечание:

Список указан в качестве примера. Список доступных образов ОС может изменяться.

Выбор источника для запуска ВМ.

2.1.3 Создание внутренней сети

Перед созданием ВМ Вам необходимо создать сеть которую сможете привязать к созданной ВМ. Если Вам необходим доступ из вне на ваши ресурсы посмотрите пункт “Создание роутера”.

Шаг 1. Войдите в панель Horizon и перейдите в Network -> Networks

Вкладка Networks.

Шаг 2. Нажмите Create Network

Создание сети.

Шаг 3. Заполните параметры

Заполнение параметров сети.

Шаг 4. Укажите адрес сети – например 192.168.0.0/24

Заполнение параметров сети.

Шаг 5. Укажите адреса DNS серверов которые будете использовать или введите те, которые предоставлены облачным провайдером

Заполнение параметров сети.

2.1.4 Создание Key Pair

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

Шаг 1. Для создания key pair перейдите во вкладку Compute -> Key Pairs и нажмите Create Key Pair

Вкладка Key Pairs.
Создание Key Pairs.

Шаг 2. Просмотрите список ключей

Список Key Pairs.

Шаг 3. Создайте пару ключей

Вкладка Key Pairs.

Примечание:

После создания ключ пары у вас сгенерируются public/private ключи и загрузится файл с раширением pem.

2.1.5 Создание Виртуальной Машины в Aitu.Cloud

После создания необходимых ресурсов можно перейти к созданию самой ВМ:

Перейдите во вкладку compute -> instances и нажмите Launch instance

Вкладка Compute со списком ВМ.

Далее заполните параметры. Пункты, отмеченные * звездочкой, обязательны к заполнению/выбору. Необходимо выбрать источник, флейвор и сеть.Также можно указать keypair для доступа к ВМ по public/private ключу. Можно указать дополнительные параметры необходимые для Вашего варианта развертывания.

Ниже Вы можете увидеть примеры выбора параметров для запуска/создания ВМ. (Для более подробной инструкции перейти по ссылке)

Заполнение/Выбор параметров ВМ.
Заполнение/Выбор параметров ВМ.
Заполнение/Выбор параметров ВМ.
Заполнение/Выбор параметров ВМ.
Заполнение/Выбор параметров ВМ.
Список созданных ВМ.

2.2 Операции с дисками

2.2.1 Типы дисков

$ openstack  volume type list
+--------------------------------------+---------------+-----------+
| ID                                   | Name          | Is Public |
+--------------------------------------+---------------+-----------+
| 2f50e7ca-41b2-4340-a5ba-9350f840d45b | encr_standard | True      |
| 75715241-df3f-486e-a2a1-dcb2c39cfc36 | encr_fast     | True      |
| d5c2f8bf-6759-416b-9020-a02a26015462 | standard      | True      |
| da73daf1-66e2-4c83-8788-91a57cf96115 | fast          | True      |
+--------------------------------------+---------------+-----------+
  • encr - зашифрованный диск.
  • standard - стандартный диск.
  • fast - быстрый диск(скорость чтения/записи быстрее чем у стандартного).

2.2.2 Создание диска в Horizon

Шаг 1. Войдите в панель Volumes -> Volumes -> Create Volume. Нажмите Create volume

Вкладка со списком дисков в ui.aitu.cloud.

Шаг 2. Укажите имя диска и выберите необходимые параметры диска

Horizon:

Выбор параметров диска.

2.2.3 Создание зашифрованного диска

Шифрование диска — технология защиты информации, переводящая данные на диске в нечитаемый код, который нелегальный пользователь не сможет легко расшифровать.

Зашифрованный диск создается также как и обычный диск. При создании передайте флаг, указывающий, что типом диска будет encr_standard или encr_fast. Если этот аргумент опущен, используется тип диска по умолчанию.

Авторизуйтесь при помощи своих учетных данных в панели управления облаком и перейдите во вкладку Volumes :

Нажмите на кнопку Create Volume и в поле Type выберите необходимый тип диска .

Создание зашифрованного диска

После создания диска можете его присоединить к существующей ВМ.

Дополнительная информация по зашифрованным дискам.

2.2.4 Присоединение диска к Виртуальной Машине

В Horizon присоединение диска выполняется наведением на ВМ и раскрытием дополнительного меню. Нажмите Attach и выберите необходимый volume/disk

Панель выбора опций ВМ.
Присоединение диска к ВМ.

2.2.5 Увеличение диска ВМ

Увеличить диск можно двумя способами: “на лету” и отсоединив диск от ВМ.

Увеличение диска “на лету” можно выполнить через Openstack CLI и Horizon UI. В Horizon UI находим сам диск, выбираем Extend Volume и указываем новый размер.

Увеличить размер диска “на лету” через Openstack CLI производится следующей командой, размер диска задатеся в ГБ, следом нужно указать volume id:

openstack --os-volume-api-version 3.42 volume set --size 20 5d09fd2e-e312-4d03-b8b7-b5a680d1bcdf

Примечание:

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

Как выглядит процесс увеличения размера диска offline:

  1. Необходимо отсоединить его от самой ВМ
  2. Задать новый размер диска
  3. Определить новый размер диска в операционной системе и сделать resize

Для начала необходимо отсоединить диск /dev/vdb в системе,а затем отсоединить от самой ВМ. Как видно из рисунка ниже, объем диска 10 Гб.

Отмонтируйте диск в системе

Отсоедините диск в Horizon.

Перейдите во вкладку Volumes. Нажмите Detach Volume.

Detach Volume
Выбор отсоединяемого диска

Нажмите Extend Volume и выбирите новый размер диска.

Расширение диска
Выбор нового размера диска

После этого нужно обратно присоединить диск к ВМ и сделать resize диска.

Присоединение диска

Далее заходим на ВМ по SSH и монтируем диск, меняем размер диска:

$ lsblk
$ sudo mount /dev/vdb /mnt

Затем меняем размер:

$ resize2fs /dev/vdb

2.3 Создание роутера (Интернет)

Роутер необходим чтобы соединить разные сети и передавать дата трафик между этими сетями. В этом примере рассмотрим создание роутера, присоединение интерфейсов внешней и внутренней сети, присваивание floating IP на ВМ для получения доступа из сегмента Интернет по протоколу SSH, 22 port TCP(security groups).

Для этого зайдите в Horizon, введите логин и пароль, предоставленные при регистрации. Перейдите во вкладку Network.

Шаг 1. Нажмите на кнопку Create Network. Создайте внутренню сеть и далее соедините внутреннюю сеть с роутером. После этого можно будет присваивать floating IP для ВМ

Выбор параметров роутера.
Выбор параметров роутера
Выбор параметров роутера.

Шаг 2. Во вкладке Routers нажмите на Create Router. И далее введите необходимые параметры - название роутера и внешнюю сеть.

Создание и выбор параметров роутера.
Список текущих интерфейсов роутера.
Добавление интерфейсов роутера.
Список добавленных интерфейсов роутера.

2.4 Привязка плавающего адреса к ВМ

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

Меню действий ВМ Панель привсвоения и выбора плавающего IP

Примечание:

Если в открывшемся окне видите надпись ‘No Floating IP addresses allocated’, Вам необходимо нажать на значок плюса ‘Allocate Floating IP’ в графе Pool выбрать необходимый пул адресов и нажать на ‘Allocate IP’ для выделения и присвоения адреса ВМ.

Выделение плавающего IP
Выделение плавающего IP
ВМ с плавающим адресом

2.5 Доступ из Внешней сети на 22/SSH порт

Шаг 1.Для этого Вам необходимо перейти во вкладки Network > Security Groups и нажать на кнопку Manage Rules.

Security Groups
Управление правилами Security Groups

Шаг 2. Далее нажать на Add Rule и в пункте Rule выбрать SSH. Добавить IP адрес/сеть в формате CIDR откуда требуется доступ. Опционально можно добавить в пункт Description описание доступа.

Создание правил в Security Groups

Также выбрав Custom TCP/UDP rule или Other Protocol вы можете создавать свои правила.

2.5.1 Авторизация по SSH на ВМ

После настройки правил в Security Groups и импорта ваших ключей, Вы можете зайти на ВМ по SSH.

Используйте логин для авторизации ниже из таблицы в соответствии с используемым образом ОС.

+----------------------------------+------------------------+
| Image                            | Cloud user login       |
+----------------------------------+------------------------+
| Centos 8 Stream                  | centos                 |
| Centos 7                         | centos                 |
| Alma Linux                       | almalinux              |
| Ubuntu                           | ubuntu                 |
+----------------------------------+------------------------+

Пример команды SSH авторизации:

$ ssh centos@192.168.0.1

2.6 Affinity & Anti Affinity policy

Политики Anti-Affinity и Affinity дают возможность распологать Виртуальные Машины на разных или на одном хосте гипервизора в зависимости от требований.

Для примемения политик к ВМ, перед созданием ВМ необходимо создать Server Group. Далее при создании ВМ выбрать необходимую группу серверов.

Создание Server Groups
Выбор Server Groups при создании ВМ

Server Group - это группа серверов, которая предоставляет механизм для группировки серверов в соответствии с определенной политикой. Список доступных политик по Server Group:

  • Anti Affinity - Server Group c обязательным расположением виртуальных машин на разных хостах(hypervisor). Если не останется свободного пространства на хостах (hypervisor), то виртуальные машины не будут созданы.

  • Soft Anti Affinity - Server Group c необязательным расположением виртуальных машин на разных хостах(hypervisor).Система попытается создать виртуальные машины на разных хостах. Но если не останется свободного пространства (hypervisor), виртуальные машины будут созданы на одном хосте.

  • Affinity - Server Group c обязательным расположением виртуальных машины на одном хосте (hypervisor). Если на хосте (hypervisor) не будет свободного пространства, то виртуальные машины не будут созданы.

  • Soft Affinity - Server Group c необязательным расположением виртуальных машин на одном хосте(hypervisor). Система попытается создать виртуальные машины на одном хосте. Но если на хосте (hypervisor) не будет свободного пространства, то виртуальные машины будут созданы на разных хостах.

3 Openstack CLI

В aitu.cloud имеется возможность использовать разные способы управления проектом и его ресурсами: Horizon Dashboard, API(например через openstack client), Terraform.

Ссылки на ресурсы:

  1. Облако Aitu
  2. Официальная страница проекта Openstack
  3. End User Guide
  4. Openstack wiki

3.1 Установка CLI клиента

Шаги перед использованием openstack command line client:

  1. Установить openstackclient в соответствии с используемой операционной системой согласно официальной документации Openstack

  2. Настроить переменные среды для доступов к aitu.cloud API:

    Для использования openstack CLI можно воспользоваться импортом RC файла в Horizon (рис. ниже), или создать его самостоятельно по примерам из официальной документации Openstack.

Импорт Openstack RC File в Horizon Dashboard.

Данный файл необходим для передачи переменных среды чтобы авторизоваться

Содержимое RC файла выглядит следующим образом:

#!/usr/bin/env bash
# To use an OpenStack cloud you need to authenticate against the Identity
# service named keystone, which returns a **Token** and **Service Catalog**.
# The catalog contains the endpoints for all services the user/tenant has
# access to - such as Compute, Image Service, Identity, Object Storage, Block
# Storage, and Networking (code-named nova, glance, keystone, swift,
# cinder, and neutron).
#
# *NOTE*: Using the 3 *Identity API* does not necessarily mean any other
# OpenStack API is version 3. For example, your cloud provider may implement
# Image API v1.1, Block Storage API v2, and Compute API v2.0. OS_AUTH_URL is
# only for the Identity API served through keystone.
export OS_AUTH_URL=https://keystone.qshy.aitu.cloud:5000/v3
# With the addition of Keystone we have standardized on the term **project**
# as the entity that owns the resources.
export OS_PROJECT_ID=0123456789abcdef
export OS_PROJECT_NAME="aitu"
export OS_USER_DOMAIN_NAME="Default"
if [ -z "$OS_USER_DOMAIN_NAME" ]; then unset OS_USER_DOMAIN_NAME; fi
export OS_PROJECT_DOMAIN_ID="default"
if [ -z "$OS_PROJECT_DOMAIN_ID" ]; then unset OS_PROJECT_DOMAIN_ID; fi
# unset v2.0 items in case set
unset OS_TENANT_ID
unset OS_TENANT_NAME
# In addition to the owning entity (tenant), OpenStack stores the entity
# performing the action as the **user**.
export OS_USERNAME="user"
# With Keystone you pass the keystone password.
echo "Please enter your OpenStack Password for project $OS_PROJECT_NAME as user $OS_USERNAME: "
read -sr OS_PASSWORD_INPUT
export OS_PASSWORD=$OS_PASSWORD_INPUT
# If your configuration has multiple regions, we set that information here.
# OS_REGION_NAME is optional and only valid in certain environments.
export OS_REGION_NAME="KZ"
# Don't leave a blank variable, unset it if it was empty
if [ -z "$OS_REGION_NAME" ]; then unset OS_REGION_NAME; fi
export OS_INTERFACE=public
export OS_IDENTITY_API_VERSION=3

Как видно из текста, в файле RC указаны переменные, которые экспортируются как переменные среды. В зависимости от уровня доступа и способов доступа в aitu.cloud переменные могут отличаться и вы можете их менять самостоятельно. В таком случае, необходимую информацию рекомендуются искать в документации Openstack согласно Вашей версии Openstack.

3.2 Минимальные требования перед созданием ВМ

Перед созданием Виртуальной машины(далее - ВМ), требуется создать следующие ресурсы:

  • Выбор flavor’a (тип ВМ)
  • Выбор источник для создания ВМ(image)
  • Создание диска(volume)
  • Создание внутренней сети
  • Создание роутера (для подключения внешних сетей, например - Интернет)

3.2.1 О flavors (тип ВМ)

Примечание:

Создание flavor’a доступно только администраторам облака/ проекта, поскольку это влияет на эффективное планирование в облаке.

Flavor - это тип инстанса или другими словами шаблон для его создания. В нем указываются объемы ресурсов выделяемых для ВМ (СPU Cores,RAM,Volume и т.д.).

Тарифы на ресурсы в облаке aitu можете посмотреть по ссылке.

До того как вы начнете, выполните в консоли команду для того чтобы экспортировать переменные среды в консоли для авторизации в сервисе Keystone и дальнейших доступов к ресурсам в aitu.cloud (шаг 1).

Ссылки на официальные ресурсы:

  1. Про flavor’ы

  2. Документация Openstack Horizon Dashboard

Шаг 1. Выполните комманду в консоли.

$ source openrc.sh.

Шаг 2. Отобразите список доступных flavor:

$ openstack flavor list

Шаг 3. Выберите для себя необходимый flavor:

+-------------+-----------+-------+-----+----------+------+---------+
| ID          | Name      |    RAM| Disk| Ephemeral| VCPUs|Is Public|
+-------------+-----------+-------+-----+----------+------+---------+
| 11f6a5a3-...| p1.xsmall |   4096|   10|         0|     1| True    |
| 135f76c9-...| r1.5xlarge| 393216|   10|         0|    48| True    |
| 2312fccc-...| g1.2xlarge| 131072|   10|         0|    32| True    |
| 26c7acd8-...| r1.2xlarge|  65536|   10|         0|     8| True    |
| 2987a268-...| g1.3xlarge| 196608|   10|         0|    48| True    |
| 3110f8a8-...| g1.5xlarge| 393216|   10|         0|    96| True    |
| 32cabb8a-...| r1.large  |  16384|   10|         0|     2| True    |
| 34a1a3c9-...| b1.small  |   2048|   10|         0|     1| True    |
| ...         |...        |...    |...  |...       |...   |...      |
+-------------+-----------+-------+-----+----------+------+---------+

3.2.2 Операции с образами

Образ операционной системы (далее - образ) представляет собой файл, в котором содержится виртуальный диск с уже установленной на нем операционной системой. Образы ОС используются для создания ВМ в облаке такикх как ui.aitu.cloud.

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

3.2.2.1 Выбор источника для создания ВМ

При создании ВМ необходимо выбрать образ ОС из которой она будет запущена.

Образ ОС можно выбрать при создании ВМ из предоставленных в Horizon.

$ openstack image list

Список образов ОС в облаке aitu.cloud

Примечание:

Список указан в качестве примера. Список доступных образов ОС может изменяться.

+--------------------------------------+------------------------------------------------+--------+
| ID                                   | Name                                           | Status |
+--------------------------------------+------------------------------------------------+--------+
| d03d26d7-a211-4254-8287-0b76f3b0f5de | AlmaLinux-8-GenericCloud-8.6-20220718.x86_64   | active |
| 49ea9425-efee-4df2-b06f-9af26e54d5e6 | CentOS-7-x86_64-GenericCloud-2003              | active |
| 7c1c7a68-f6c4-4172-b0d8-c7d1f2a977ab | CentOS-Stream-GenericCloud-8-20220125.1.x86_64 | active |
| 5dd801d5-fc70-4a5f-b745-8d529eb4bd4b | Rocky-8-GenericCloud.x86_64                    | active |
| dd0acdaf-5b62-4248-a364-42898ad805f6 | ubuntu-22.04-jammy-server-cloudimg-amd64       | active |
+--------------------------------------+------------------------------------------------+--------+

Примечание:

При создании образа ОС имеется возможность добавлять теги с ключом –tag. Теги могут помочь при поиске определенных образов. Для добавления нескольких тегов используйте ключ –tag для каждого тега. Примеры ниже.

$ openstack image create --tag <tag> <image>

Либо добавить тег к существующему образу

$ openstack image set --tag <tag> <image>

Добавление нескольких тегов.

$ openstack image set --tag <tag> --tag <tag>... <image>

Убрать тег с образа

$ openstack image unset --tag <tag> <image>

Для удаления образа в CLI выполните команду

$ openstack image delete <image>

3.2.3 Создание внутренней сети

Перед созданием ВМ Вам необходимо создать сеть которую сможете привязать к созданной ВМ. Если Вам необходим доступ из вне на ваши ресурсы посмотрите пункт “Создание роутера”.

Шаг 1. Войдите в панель Horizon и перейдите в Network -> Networks

$ openstack network create <network_name>
$ openstack subnet create <network_subnet_name> --network <network_name> --subnet-range 192.0.2.0/24

3.2.4 Создание Key Pair

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

3.2.4.1 Генерация пары ключей

Шаг 1. Выполните в консоли

$ source openrc.sh

Шаг 2. Сгенерируйте ssh ключ

$ ssh-keygen -q -N ""

Шаг 3. Импорт/добавление сгенерированной пары ключей{#keypair-import}

$ openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

    +-------------+-------------------------------------------------+
    | Field       | Value                                           |
    +-------------+-------------------------------------------------+
    | fingerprint | ee:3c:1e:56:d3:b2:63:6d:0d:ce:43:39:2c:ba:4d    |
    | name        | mykey                                           |
    | user_id     | 58126687cbcc4888bfa9ab73a2256f27                |
    +-------------+-------------------------------------------------+

Примечание:

Либо, Вы можете пропустить команду ssh-keygen и использовать существующий публичный ключ. Проверьте добавленую пару ключей:

Для просмотра доступных пар ключей в CLI выполните команду:

$ openstack keypair list

    +-------+-------------------------------------------------+
    | Name  | Fingerprint                                     |
    +-------+-------------------------------------------------+
    | mykey | ee:3d:2e:97:d4:e2:6a:54:6d:0d:ce:43:39:2c:ba:4d |
    +-------+-------------------------------------------------+

3.2.5 Создание Виртуальной Машины в CLI

Выбор параметров ВМ:

Шаг 1. Отобразите список доступных образов ОС:

$ openstack image list

Шаг 2. Выделите для себя необходимый image для запуска ВМ:

+----------------------+--------------------+--------+
| ID                   | Name               | Status |
+----------------------+--------------------+--------+
| 397e713c-b95b-418….  | cirros…            | active |
| df430cc2-3406-4061…  | cirros-...kernel…  | active |
| 3cf852bd-2332-48f4…  | cirros…            | active |
+----------------------+--------------------+--------+

Примечание:

Вы также можете выбрать необходимый образ при помощи команды grep:

$ openstack image list | grep 'cirros'

| df430cc2-3406-4061… cirros-0.3.5-x86_64-uec-kernel  | active |

Примечание:

В указанных примерах выше строки сокращены, так как это обучающий материал/инструкция.

Последний шаг создания ВМ со всеми вышеуказанными параметрами:

$ openstack server create --flavor m1.nano --image <image_name> \
  --network <network_name> --security-group default \
  --key-name <mykey> <vm_name>

3.3 Операции с дисками в CLI

3.3.1 Типы дисков

$ openstack  volume type list
+--------------------------------------+---------------+-----------+
| ID                                   | Name          | Is Public |
+--------------------------------------+---------------+-----------+
| 2f50e7ca-41b2-4340-a5ba-9350f840d45b | encr_standard | True      |
| 75715241-df3f-486e-a2a1-dcb2c39cfc36 | encr_fast     | True      |
| d5c2f8bf-6759-416b-9020-a02a26015462 | standard      | True      |
| da73daf1-66e2-4c83-8788-91a57cf96115 | fast          | True      |
+--------------------------------------+---------------+-----------+
  • encr - зашифрованный диск.
  • standard - стандартный диск.
  • fast - быстрый диск(скорость чтения/записи быстрее чем у стандартного).

3.3.2 Создание диска

$ openstack volume create --size 8 --availability-zone <availability_zone_name> <volume_name>

3.3.3 Создание зашифрованного диска

Шифрование диска — технология защиты информации, переводящая данные на диске в нечитаемый код, который нелегальный пользователь не сможет легко расшифровать.

Зашифрованный диск создается также как и обычный диск. При создании передайте флаг, указывающий, что типом диска будет encr_standard или encr_fast. Если этот аргумент опущен, используется тип диска по умолчанию.

Авторизуйтесь при помощи своих учетных данных:

    $ . openrc.sh

Создайте зашифрованный диск объемом 10 ГБ:

    $ openstack volume create --size 10 --type encr_standard <volume_name>

Дополнительная информация по зашифрованным дискам.

3.3.3.1 Присоединение диска к ВМ

Шаг 1. Необходимо узнать имя ли ID диска и ВМ:

$ openstack volume list
$ openstack server list

Пример присоединения диска:

$ openstack server add volume <server_name> <volume_name> --device /dev/vdb

Дополнительные команды:

  • Посмотреть информацию о самом диске и о том к какому серверу он подсоединен:
$ openstack volume show <volume_name>
  • Отсоединение диска/volume от ВМ:
$ openstack server remove volume <server_name> <volume_name>
  • Удаление диска:
$ openstack volume delete <volume_name>

3.3.4 Увеличение диска ВМ

Как выглядит процесс:

  1. Для увеличения диска ВМ необходимо отсоединить его от самой ВМ
  2. Задать новый размер диска
  3. Определить новый размер диска в операционной системе и сделать resize

Примечание:

Горячее увеличение диска не поддерживается.

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

Для изменения размера диска в CLI необходимо отмонтировать диск в системе.

$ umount /dev/vdX

Для отсоединения диска от ВМ выполните:

$ openstack server remove volume <server_name> <volume_name>

После этого можно задать новый размер диска:

$ openstack volume set 573e024d-5235-49ce-8332-be1576d323f8 --size 10

И заново присоединить диск к ВМ:

$ openstack server add volume <server_name> <volume_name>

Далее заходим на ВМ по SSH и монтируем диск, меняем размер диска:

$ lsblk
$ sudo mount /dev/vdb /mnt

Затем делаем resize в системе:

$ resize2fs /dev/vdb

3.4 Создание роутера (Интернет)

Роутер необходим чтобы соединить разные сети и передавать дата трафик между этими сетями. В этом примере рассмотрим создание роутера, присоединение интерфейсов внешней и внутренней сети, присваивание floating IP на ВМ для получения доступа из сегмента Интернет по протоколу SSH, 22 port TCP(security groups).

Создайте роутер в CLI

$ openstack router create <router_name>

Задайте шлюз роутера. В данном примере укажите как шлюз внешней сети. Например qshyospubliccloud.

$ openstack router set ROUTER --external-gateway <network_name>

Добавьте внутреннюю сеть через/на которую хотите получить доступ из/на ВМ

$ openstack router add subnet ROUTER <network_subnet_name>

Примечание:

Вы можете отобразить опции команды добавив --help в конце команды

3.5 Привязка плавающего адреса к ВМ

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

Вам необходимо зарезервировать плавающий IP-адрес из пула подсетей внешней сети. Это можно сделать с помощью команды:

$ openstack floating ip create --project admin --subnet <public_subnet> <public_network>

Далее выбрать созданный адрес и ВМ из списка:

  • Получить список floating ip
$ openstack floating ip list
  • Получить список ВМ
$ openstack server list
  • Присоединить его к ВМ:
$ openstack server add floating ip <server> <ip-address>

3.6 Доступ из Внешней сети на 22/SSH порт

Группы безопасности — это наборы правил IP-фильтрации, которые применяются ко всем ВМ проекта и определяют сетевой доступ к ВМ. Групповые правила зависят от проекта; участники проекта могут редактировать правила по умолчанию для своей группы и добавлять новые наборы правил. Для того чтобы получить доступ из/на ВМ необходимо добавить или изменить правила для группы безопасности(secutiry group). Потому что группа безопасности по умолчанию (default) будет сбрасывать все входящие соединения на ВМ. Чтобы получить список правил для группы безопасности, выполните следующую команду:

$ openstack security group rule list SECURITY_GROUP_NAME

Чтобы разрешить SSH-доступ к ВМ, ​​выберите один из следующих вариантов:

Разрешить доступ со всех IP-адресов в виде IP-подсети 0.0.0.0/0 в формате CIDR:

$ openstack security group rule create <secutiry_group_name> --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0

Разрешить доступ только с IP-адресов из других групп безопасности для доступа к указанному порту:

$ openstack security group rule create <secutiry_group_name> --protocol tcp --dst-port 22:22 --remote-group <source_secutiry_group_name>

Чтобы разрешить проверку связи с ВМ, выберите один из следующих вариантов:

Разрешить эхо-запрос ICMP (ping) со всех IP-адресов

$ openstack security group rule create --protocol icmp <security_group_name>

Разрешить пинговать ВМ только членам других групп безопасности.

$ openstack security group rule create --protocol icmp --remote-group <source_secutiry_group_name> <secutiry_group_name>

Чтобы разрешить доступ через UDP-порт, например разрешить доступ к DNS-серверу, работающему на ВМ, выберите один из следующих вариантов:

Разрешить доступ UDP со всех IP-адресов, указанных как IP-подсеть 0.0.0.0/0в нотации CIDR.

$ openstack security group rule create --protocol udp --dst-port 53:53 <secutiry_group_name>

Разрешить доступ к указанному порту только IP-адресам из других групп безопасности (исходных групп).

$ openstack security group rule create --protocol udp --dst-port 53:53 --remote-group <source_secutiry_group_name> <secutiry_group_name>

3.6.1 Авторизация по SSH на ВМ

После настройки правил в Security Groups и импорта ваших ключей, Вы можете зайти на ВМ по SSH.

Используйте логин для авторизации ниже из таблицы в соответствии с используемым образом ОС.

+----------------------------------+------------------------+
| Image                            | Cloud user login       |
+----------------------------------+------------------------+
| Centos 8 Stream                  | centos                 |
| Centos 7                         | centos                 |
| Alma Linux                       | almalinux              |
| Ubuntu                           | ubuntu                 |
+----------------------------------+------------------------+

Пример команды SSH авторизации:

$ ssh centos@192.168.0.1

3.7 Affinity & Anti Affinity policy

Политики Anti-Affinity и Affinity дают возможность распологать Виртуальные Машины на разных или на одном хосте гипервизора в зависимости от требований.

Для примемения политик к ВМ, перед созданием ВМ необходимо создать Server Group. Далее при создании ВМ выбрать необходимую группу серверов.

$ openstack server group create --policy <policy>  <name>
$ openstack server group list
$ openstack server create <server_name> --image <image_name> --flavor <flavor_name> --nic net-id=<network_name> --hint group=<server_group_ID>

Server Group - это группа серверов, которая предоставляет механизм для группировки серверов в соответствии с определенной политикой. Список доступных политик по Server Group:

  • Anti Affinity - Server Group c обязательным расположением виртуальных машин на разных хостах(hypervisor). Если не останется свободного пространства на хостах (hypervisor), то виртуальные машины не будут созданы.

  • Soft Anti Affinity - Server Group c необязательным расположением виртуальных машин на разных хостах(hypervisor).Система попытается создать виртуальные машины на разных хостах. Но если не останется свободного пространства (hypervisor), виртуальные машины будут созданы на одном хосте.

  • Affinity - Server Group c обязательным расположением виртуальных машины на одном хосте (hypervisor). Если на хосте (hypervisor) не будет свободного пространства, то виртуальные машины не будут созданы.

  • Soft Affinity - Server Group c необязательным расположением виртуальных машин на одном хосте(hypervisor). Система попытается создать виртуальные машины на одном хосте. Но если на хосте (hypervisor) не будет свободного пространства, то виртуальные машины будут созданы на разных хостах.

4 Terraform

Также для управления ресурсами в облаке можно использовать Terraform.

Terraform использует парадигму Infrastructure-as-Code в управлении ресурсами инфраструктуры. Инфраструктура как код (англ. Infrastructure-as-Code; Iac) — это подход для управления и описания инфраструктуры через код, а не через ручное редактирование конфигураций на серверах или интерактивное взаимодействие. Этот подход может включать в себя как декларативный способ описания инфраструктуры, так и императивный. Но декларативный подход встречается чаще.

Terraform — программное обеспечение с открытым исходным кодом, созданное HashiCorp. Пользователи могут определят инфраструктуру с помощью декларативного языка конфигурации, известного как HashiCorp Configuration Language (HCL) или JSON.

Для управления ресурсами в облаке AITU используйте Terraform OpenStack Provider

OpenStack Provider используется для взаимодействия со многими ресурсами, поддерживаемыми OpenStack. Провайдер должен быть настроен с использованием соответствующих учетных данных, прежде чем его можно будет использовать.

4.1 Публичный репозиторий кода terraform от Aitu.Cloud Team

В качестве шаблона для описания своей инфраструктуры можете использовать публичный репозиторий кода Aitu.Cloud