Primeiros passos com a API OpenStack

Ver como Markdown

Descubra como gerir as suas instâncias com a ajuda do cliente Python OpenStack

Info

Esta tradução foi automaticamente gerada pelo nosso parceiro SYSTRAN. Em certos casos, poderão ocorrer formulações imprecisas, como por exemplo nomes de botões ou detalhes técnicos. Recomendamos que consulte a versão inglesa ou francesa do manual, caso tenha alguma dúvida. Se nos quiser ajudar a melhorar esta tradução, clique em "Contribuir" nesta página.

Objetivo

Com o objetivo de automatizar as suas operações no Public Cloud é possível utilizar as APIs OpenStack de forma a gerar diferentes scripts.

Info

O cliente Nova era anteriormente utilizado para gerir as suas instâncias bem como os seus discos. Este cliente está agora obsoleto e os comandos foram integrados no cliente Python OpenStack.

Poderá, por exemplo, lançar a criação de uma instância suplementar assim que as ferramentas de monitorização detetarem um pico de carga para evitar uma saturação na sua infraestrutura. É igualmente possível programar a criação de snapshots de forma regular.

Este guia ajudá-lo-á a gerir as suas instâncias com a ajuda do cliente Python OpenStack.

Requisitos

Instruções

Pode obter a lista dos comandos possíveis lendo a documentação do cliente:

admin@server-1:~$ openstack command list

Pode filtrar os comandos indicados indicando o grupo:

admin@server-1:~$ openstack command list --group compute

Também é possível obter informações sobre um comando adicionando help a este:

admin@server-1:~$ openstack help flavor list 
usage: openstack flavor list [-h] [-f {csv,json,table,value,yaml}] [-c COLUMN]
                             [--quote {all,minimal,none,nonnumeric}] [--noindent]
                             [--max-width `<integer>`] [--fit-width] [--print-empty]
                             [--sort-column SORT_COLUMN]
                             [--sort-ascending | --sort-descending] [--public | --private | --all]
                             [--min-disk `<min-disk>`] [--min-ram `<min-ram>`] [--long]
                             [--marker `<flavor-id>`] [--limit `<num-flavors>`]
List flavors ...
Tip

Consulte a documentação do cliente diretamente no site OpenStack.

Operações básicas

Adição de uma chave SSH pública

Primeiro, é necessário adicionar uma chave SSH pública que permita ligar-se às instâncias.

  • Listar os comandos associados às chaves SSH:
admin@server-1:~$ openstack help | grep keypair         
  keypair create  Create new public or private key for server ssh access
  keypair delete  Delete public or private key(s)
  keypair list    List key fingerprints
  keypair show    Display key details
  • Adicionar a chave SSH pública:
admin@server-1:~$ openstack keypair create --public-key ~/.ssh/id_rsa.pub SSHKEY
  • Listar as chaves SSH disponíveis:
admin@server-1:~$ openstack keypair list
+---------------+-------------------------------------------------+------+
| Name          | Fingerprint                                     | Type |
+---------------+-------------------------------------------------+------+
| SSHKEY        | 5c:fd:9d:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:3a | ssh  |
+---------------+-------------------------------------------------+------+

Listar os modelos das instâncias

De seguida, deverá recuperar o ID do modelo que se deseja utilizar:

admin@server-1:~$ openstack flavor list
+--------------------------------------+-----------------+--------+------+-----------+-------+-----------+
| ID                                   | Name            |    RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+-----------------+--------+------+-----------+-------+-----------+
| 0062dad0-f93c-4d7d-bde7-6add4ad6baaa | win-b2-15-flex  |  15000 |   50 |         0 |     4 | True      |
| 022f8ac5-b6a7-4365-9db8-c69775d67a2d | t2-180          | 180000 |   50 |         0 |    60 | True      |
| 07124b62-dd6d-4bf2-80d7-d9ea3c923cf3 | i1-180          | 180000 |   50 |         0 |    32 | True      |
| 0cb50da2-cd4d-4a14-8a22-bbc59d94c814 | c2-120-flex     | 120000 |   50 |         0 |    32 | True      |
| 0d338e52-cfba-4e32-914e-c2ea19d2a9df | d2-4            |   4000 |   50 |         0 |     2 | True      |
| 0dbcff05-2da0-40a6-87dc-96a1e98d9ffc | b2-30           |  30000 |  200 |         0 |     8 | True      |
| 11530c24-bc02-48c3-b272-802791795176 | i1-45           |  45000 |   50 |         0 |     8 | True      |
| 11fc4ed3-5198-4043-b093-063787a144e1 | c2-7            |   7000 |   50 |         0 |     2 | True      |
| 13d9146d-f519-4f8b-b87c-245d76bd21b0 | b2-120-flex     | 120000 |   50 |         0 |    32 | True      |
| ...                                  | ...             | ...    | ..   | ...       |       | ...       |
+--------------------------------------+-----------------+--------+------+-----------+-------+-----------+

Listar as imagens disponíveis

Basta recuperar o ID da imagem que será utilizada pela instância:

admin@server-1:~$ openstack image list 
+--------------------------------------+-----------------------------------------------+--------+
| ID                                   | Name                                          | Status |
+--------------------------------------+-----------------------------------------------+--------+
| 814f0f1d-5c06-40c6-b582-842fbf4995d2 | AlmaLinux 10                                  | active |
| 2d1914bb-266b-4049-b4bd-c195d9e920bd | AlmaLinux 10 - UEFI                           | active |
| b442e71d-2ce4-43ad-a9c6-03d0ee2359ee | AlmaLinux 8                                   | active |
| 268b6be2-68f7-42c1-8d12-ba5fab40a84b | AlmaLinux 8 - UEFI                            | active |
| f9170d19-919e-49a0-b1a3-f217fe48ab0b | AlmaLinux 8 - cPanel                          | active |
| dbb258c0-a4ff-4b97-a695-6cd99763132c | AlmaLinux 9                                   | active |
| 57659466-a19d-418e-8d98-4cb74fe1d717 | AlmaLinux 9 - UEFI                            | active |
| 326ba25a-644c-4e6f-867a-f4fbc60b9c9b | AlmaLinux 9 - cPanel                          | active |
| bc6eb0f9-2a59-4ea6-86b8-8f6a2befba5c | Baremetal - Debian 11                         | active |
| 67b90767-19bc-4f4e-8982-77c227810f02 | Baremetal - Debian 12                         | active |
| fee70d7e-e32a-44ec-af2d-20201eeeaf6d | Baremetal - Debian 13                         | active |
| ...                                  | ...                                           | ...    |
+--------------------------------------+-----------------------------------------------+--------+

Criação de uma instância

Com os elementos obtidos anteriormente, é possível criar uma instância:

admin@server-1:~$ openstack server create --key-name SSHKEY --flavor d2-2 --image "Ubuntu 22.04" InstanceTest
+-----------------------------+-----------------------------------------------------+
| Field                       | Value                                               |
+-----------------------------+-----------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL                                              |
| OS-EXT-AZ:availability_zone |                                                     |
| OS-EXT-STS:power_state      | NOSTATE                                             |
| OS-EXT-STS:task_state       | scheduling                                          |
| OS-EXT-STS:vm_state         | building                                            |
| OS-SRV-USG:launched_at      | None                                                |
| OS-SRV-USG:terminated_at    | None                                                |
| accessIPv4                  |                                                     |
| accessIPv6                  |                                                     |
| addresses                   |                                                     |
| adminPass                   | xxxxxxxxxxxx                                        |
| config_drive                |                                                     |
| created                     | 2022-10-13T19:05:54Z                                |
| flavor                      | d2-2 (14c5fa3f-fdad-45c4-9cd1-14dd99c341ee)         |
| hostId                      |                                                     |
| id                          | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx                |
| image                       | Ubuntu 22.04 (0ea24976-fb6c-46ef-acb5-0cb88b0493aa) |
| key_name                    | SSHKEY                                              |
| name                        | InstanceTest                                        |
| progress                    | 0                                                   |
| project_id                  | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                    |
| properties                  |                                                     |
| security_groups             | name='default'                                      |
| status                      | BUILD                                               |
| updated                     | 2022-10-13T19:05:55Z                                |
| user_id                     | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                    |
| volumes_attached            |                                                     |
+-----------------------------+-----------------------------------------------------+

Após alguns instantes, pode verificar a lista de instâncias existentes para encontrar a instância recém-criada:

admin@server-1:~$ openstack server list                                                                 
+--------------------------------------+--------------+--------+-------------------------------------+--------------+--------+
| ID                                   | Name         | Status | Networks                            | Image        | Flavor |
+--------------------------------------+--------------+--------+-------------------------------------+--------------+--------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | InstanceTest | ACTIVE | Ext-Net=xxxx:xxxx::xxxx, 51.xx.xx.x | Ubuntu 22.04 | d2-2   |
+--------------------------------------+--------------+--------+-------------------------------------+--------------+--------+

Eliminação de uma instância

Para eliminar uma instância basta efetuar o seguinte comando:

admin@server-1:~$ openstack server delete InstanceTest

Saiba mais

Fale com nossa comunidade de utilizadores.

Esta página foi útil?