Курс молодого бойца

Итак, мы запустили кластер. различные статусы сервисов нам говорят, что всё UP и Running, однако запустить виртуалку у нас до сих пор не вышло. А теперь мы настроим свой первый теннант (проект по OpenStack'овски, причём смешно, они сначала приучили всё коммьюнити к этому слову, а потом отказались)

Создание админа

Перед тем как создать админа нам потребуется доп роль

# openstack role create _member_

Тут вроде ничего сложного1) Из-под дефолтного админа, которым рулим нашим облаком заводим пользователя

[root@mgt1 neutron]# openstack user create --domain owlhost --project service --password-prompt owl
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | 9d77fe15e5324b92b9b56da8122f9c4d |
| domain_id           | 5d2d4f2864de4d13b7e2b1ab4d579c3c |
| enabled             | True                             |
| id                  | 6cdae2bb5cd4467d80ea57099708db20 |
| name                | owl                              |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

И добавляем пользователю роль

# openstack role add --user owl --project service admin

Теперь мы можем сделать файлик с кредами нашего нового пользователя или, если у нас dashboard настроен в режиме мультидомена (или дефолтным доменом указан домен созданного пользователя) - можем вломиться через вебморду. Так как я не сторонник GUI - пойдём интересным путём. Создаём файлик

[root@mgt1 neutron]# cat << EOF > /etc/creds.owl
> export OS_USERNAME=owl
> export OS_PASSWORD="OWL_PASSWORD"
> export OS_PROJECT_NAME=service
> export OS_USER_DOMAIN_NAME=owlhost
> export OS_PROJECT_DOMAIN_NAME=owlhost
> export OS_AUTH_URL=http://mgt1.cloud.ow1.in:5000/v3
> export OS_IDENTITY_API_VERSION=3
> EOF

Теперь подключаем наши креды и проверяем, что они подходят

[root@mgt1 neutron]# . /etc/creds.owl
[root@mgt1 neutron]# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2019-05-11T21:06:42+0000                                                                                                                                                                |
| id         | gAAAAABc1ytS51zrF9E9FYfCsUnccy4mvhNSG29ke9hgshjltyeORwXmVTrtbNcB7WatWKoQF3pgNbdZQL50MRUNIm42mSDWNOPpW6EbNl7hd6NV_kmYGm-C8g5O0qJbRNI0DLJutGl2tpQrqPFXLuPPFRRYJ1n3_5wDAMzK6vze2T-cnFdbyUc |
| project_id | c43a159f6d904212bf9ca17d10b5a361                                                                                                                                                        |
| user_id    | bfdb77e0ad79416b8a41af991f42f1e0                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Если 401 - проверяем с самого начала что у нас не так.

Первичная настройка домена

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

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

# openstack network create --external --provider-network-type vlan --provider-physical-network provider --provider-segment 10 --project service owlhost_external

Внутри сети, как водится, создаём подсеть

# openstack subnet create --no-dhcp --project service --subnet-range 172.16.0.0/24 --gateway 172.16.0.1 --network owlhost_external owlhost_external_subnet

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

Далее нам потребуется создать шаблоны ресурсов для ВМ (flavor'ы) Начнём с одного, остальное по тому же принципу

# openstack flavor create --disk 10 --vcpus 1 --ram 1024 --public cpu1ram1hdd10

Какой-нибудь образ, из которого будем стартовать ВМ я надеюсь уже залит в glance.

Создание обычного проекта

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

# openstack project create --domain owlhost first

И пользователя:

# openstack user create --domain owlhost --project first --password-prompt first_user
# openstack role add --user first_user --project first _member_

Делаем для него свой creds файлик и “логинимся” под ним. Создаём для проекта first роутер

# openstack router create first_router

Теперь создаём внутренню сеть для проекта и оттачим её к роутеру

# openstack network create --project first --provider-network-type vxlan --provider-segment 512 first_network
# openstack subnet create --dhcp --subnet-range 192.168.0.0/24 --gateway 192.168.0.1 --network first_network first_subnet
# openstack router add subnet first_router first_subnet

И финальнымм штрихом зададим роутеру его гейтвей

# openstack router set first_router --external-gateway owlhost_external

Запуск первой виртуалки

Всё достаточно тривиально

# openstack server create --flavor cpu1ram1hdd10 --image cirros --network first_network first_vm

Если всё пройдёт успешно, то в статус появится ACTIVE

openstack server show first_vm
+-----------------------------+----------------------------------------------------------+
| Field                       | Value                                                    |
+-----------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL                                                   |
| OS-EXT-AZ:availability_zone | nova                                                     |
| OS-EXT-STS:power_state      | Running                                                  |
| OS-EXT-STS:task_state       | None                                                     |
| OS-EXT-STS:vm_state         | active                                                   |
| OS-SRV-USG:launched_at      | 2019-05-11T21:17:28.000000                               |
| OS-SRV-USG:terminated_at    | None                                                     |
| accessIPv4                  |                                                          |
| accessIPv6                  |                                                          |
| addresses                   | first_network=192.168.0.14                               |
| config_drive                |                                                          |
| created                     | 2019-05-11T21:16:59Z                                     |
| flavor                      | cpu1ram1hdd10 (639525e6-2dc5-4f5b-8b6c-f458a6d33a1b)     |
| hostId                      | 948d6a74333e37ba3da8ce68c8aee5ca0f9fa9eb489bd5cd3d8ae3de |
| id                          | 0b27a2d2-54ec-43e8-a51c-87e59dfb4a33                     |
| image                       | cirros (5db2fe4e-747c-48aa-a7f7-e60771fae43e)            |
| key_name                    | None                                                     |
| name                        | first_vm                                                 |
| progress                    | 0                                                        |
| project_id                  | c43a159f6d904212bf9ca17d10b5a361                         |
| properties                  |                                                          |
| security_groups             | name='default'                                           |
| status                      | ACTIVE                                                   |
| updated                     | 2019-05-11T21:17:28Z                                     |
| user_id                     | d150fdc97dfd44c79d92bf5886076869                         |
| volumes_attached            |                                                          |
+-----------------------------+----------------------------------------------------------+

Теперь можно получить vnc доступ для проверки связности с внешним миром

# openstack console url show --novnc first_vm

Получаем прямой линк и открываем в браузере VNC. Логинимся в ВМ и проверяем, что всё работает.

1)
если мы конечно же поднимали всё по инструкции выше, то у нас должна быть роль админ, а так же проект service в домене owlhost, если нет - подгоняйте под свои параметры