SlideShare uma empresa Scribd logo
Dalton Cézane
About
Primeiros passos com Openstack
Dalton Cézane Oct 8 · 15 min read
Introdução
O Openstack é uma plataforma de código aberto, criada pela NASA e pela
Rackspace Hosting em 2010, para implantação e gerenciamento de serviços de
computação em nuvem. É muito utilizada com o paradigma de infraestrutura
como serviço (Infrastructure as a Service — IaaS) para prover recursos de
processamento, rede e armazenamento para variados tipos de aplicação.
Open in app
Os principais componentes do Openstack estão listados abaixo:
Nova — gerencia máquinas virtuais para realização de tarefas de computação
(computing).
Swift — gerencia o armazenamento de arquivos e objetos, possibilitando
referenciá-los por identificadores únicos ao invés dos caminhos completos
(paths).
Cinder — gerencia o armazenamento persistente (espaço em disco), em blocos,
para as máquinas virtuais.
Neutron — gerencia redes, subredes e os componentes necessários para
comunicação entre elas.
Horizon — painel de controle que possibilita gerenciar os componentes da
nuvem. Fornece uma API para que desenvolvedores possam interagir com todos
os componentes.
Keystone — gerencia o serviço de identidades, realizando a autenticação de
usuários e controlando acesso a recursos baseado em permissões.
Glance — gerencia as imagens de sistemas operacionais utilizadas pelas máquinas
virtuais.
Ceilometer — gerencia o uso dos recursos da nuvem, fornecendo serviços de
telemetria para os usuários.
Heat — gerencia a orquestração dos recursos para os serviços de nuvem.
Alguma comunidades e empresas mantêm diferentes versões do Openstack. Eu
tentei usar algumas, listadas abaixo:
Devstack — Simples de instalar e muito utilizada em ambiente de
desenvolvimento, para quem desenvolve funcionalidades para os componentes da
plataforma.
Kolla — Disponibiliza os componentes do Openstack em contêineres. Consegui
instalar, mas desisti de utilizar devido à documentação (falta dela!).
Packstack — Pacote de instalação do Openstack para Red Hat e CentOS. Como
utilizo Ubuntu, não cheguei a instalar essa versão.
Microstack —Mantido pela Canonical, possibilita a instalação e configuração do
Openstack no Ubuntu, de forma simples. Embora tenha encontrado alguns
problemas com esta versão, é a que possibilitou progresso no uso do Openstack.
Senti falta de uma documentação bem organizada com fundamentos da
plataforma e um tutorial de uso básico. Aparentemente, esse tipo de conteúdo
não é disponibilizado de forma gratuita.
Uso básico do Microstack
Para instalar o Microstack, você pode utilizar a versão beta. Se estiver usando o
Ubuntu 18.04, utilize o seguinte comando:
sudo snap install microstack --classic --beta
Se estiver usando Ubuntu 20.04, use a versão edge, pois tivemos problema com a
versão classic:
sudo snap install microstack --devmode --edge
Para configurar e iniciar o Microstack, execute:
sudo microstack.init --auto
Uma vez que o Microstack foi corretamente configurado e inicializado, você pode
acessar o painel de controle (Horizon) no endereço http://10.20.20.1/ , com as
seguintes credenciais:
Nome de usuário: admin
Senha: keystone
Como encontrei um problema no login em minha máquina, segui utilizando os
comandos do Openstack via CLI (Command-line Interface). Por isso, as operações
aqui estão descritas com os respectivos comandos. Entretanto, o Openstack
disponibiliza uma API REST para realizar as operações em seus componentes.
O Microstack já vem com uma imagem do Cirros registrada no Glance. Para exibir
as imagens registradas, use o comando abaixo:
microstack.openstack image list
+--------------------------------------+---------------+-------
-+
| ID | Name | Status
|
+--------------------------------------+---------------+-------
-+
| dee7c0d4-834c-4c0e-a389-7306141e9870 | cirros | active
|
| 03a49346-b5d9-4955-ba5f-0579465e29db | ubuntu_bionic | active
|
+--------------------------------------+---------------+-------
-+
Como vemos, além da imagem do Cirros, com nome cirros, temos uma do Ubuntu
18.04, com nome ubuntu_bionic. Esta imagem do Ubuntu Bionic foi obtida com o
seguinte comando:
wget https://cloud-images.ubuntu.com/bionic/current/bionic-
server-cloudimg-amd64.img
Este repositório (cloud-images.ubuntu.com) mantém imagens do Ubuntu já
preparadas para o ambiente de nuvem. Para registrar a imagem no Microstack,
utilize este comando (o último parâmetro será o nome da imagem):
microstack.openstack image create --file bionic-server-
cloudimg-amd64.img --public --container-format=bare disk-
format=qcow2 ubuntu_bionic
A configuração automática do Microstack já fornece duas redes criadas. Para
listá-las, execute este comando:
microstack.openstack network list
+--------------------+----------+-----------------------+
| ID | Name | Subnets |
+--------------------+----------+-----------------------+
| 541f68e4-e7a5-436e | external | 2d91d661-9c10-463b- |
| 986d190d-f657-4463 | test | 3682f140-0774-4ecd- |
+--------------------+----------+-----------------------+
Se precisar ver detalhes de uma rede específica, utilize o comando show e informe
o nome ou ID da rede:
microstack.openstack network show external
+---------------------------+----------------------------------
----+
| Field | Value
|
+---------------------------+----------------------------------
----+
| admin_state_up | UP
|
| availability_zone_hints |
|
| availability_zones | nova
|
| created_at | 2020-09-08T18:18:59Z
|
| description |
|
| dns_domain | None
|
| id | 541f68e4-e7a5-436e-
982b-5a464a215997
|
| ipv4_address_scope | None
|
| ipv6_address_scope | None
|
| is_default | False
|
| is_vlan_transparent | None
|
| location | Munch({'cloud': '',
'region_name': '', 'zone': None, 'project': Munch({'id':
'66c97537384f4880814027af9bc4cf02', 'name': 'admin',
'domain_id': None, 'domain_name': 'default'})}) |
| mtu | 1500
|
| name | external
|
| port_security_enabled | True
|
| project_id | 66c97537384f4880814027af9bc4cf02
|
| provider:network_type | flat
|
| provider:physical_network | physnet1
|
| provider:segmentation_id | None
|
| qos_policy_id | None
|
| revision_number | 2
|
| router:external | External
|
| segments | None
|
| shared | False
|
| status | ACTIVE
|
| subnets | 2d91d661-9c10-463b-
b745-07e33660d8a1
|
| tags |
|
| updated_at | 2020-09-08T18:19:04Z
|
+---------------------------+----------------------------------
----+
As diferentes configurações para criação de máquinas virtuais são chamadas de
flavors. Para listar as configurações (flavors) disponíveis, utilize o seguinte
comando:
microstack.openstack flavor list
+----+-----------+-------+------+-----------+-------+----------
-+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public
|
+----+-----------+-------+------+-----------+-------+----------
-+
| 1 | m1.tiny | 512 | 1 | 0 | 1 | True
|
| 2 | m1.small | 2048 | 20 | 0 | 1 | True
|
| 3 | m1.medium | 4096 | 20 | 0 | 2 | True
|
| 4 | m1.large | 8192 | 20 | 0 | 4 | True
|
| 5 | m1.xlarge | 16384 | 20 | 0 | 8 | True
|
+----+-----------+-------+------+-----------+-------+----------
-+
Se precisar criar configurações diferentes, basta criar novos flavors com o
seguinte comando (o último parâmetro é o nome do flavor):
microstack.openstack flavor create --ram 4096 --vcpus 2 --disk
40 m2.medium
+----------------------------+---------------------------------
----+
| Field | Value
|
+----------------------------+---------------------------------
----+
| OS-FLV-DISABLED:disabled | False
|
| OS-FLV-EXT-DATA:ephemeral | 0
|
| disk | 40
|
| id | 7ccbd0a0-9977-48bc-
9754-5cf1113a44ce |
| name | m2.medium
|
| os-flavor-access:is_public | True
|
| properties |
|
| ram | 4096
|
| rxtx_factor | 1.0
|
| swap |
|
| vcpus | 2
|
+----------------------------+---------------------------------
----+
O Microstack fornece um comando para criar uma máquina virtual de forma bem
simples. Por exemplo, para criar uma máquina virtual utilizando a imagem do
Ubuntu Bionic (ubuntu_bionic) e o flavor criado (m2.medium), use o comando
abaixo:
microstack.launch ubuntu_bionic --flavor m2.medium --name
ubuntu_test
Launching server ...
Allocating floating ip ...
Server ubuntu_test launched! (status is BUILD)
Access it with `ssh -i $HOME/.ssh/id_microstack
ubuntu@10.20.20.36`
You can also visit the OpenStack dashboard at
http://10.20.20.1:80
Por padrão, o Microstack armazena as chaves para acesso remoto às máquinas no
diretório $HOME/.ssh/ . Para listar as chaves registradas no Openstack, utilize o
comando abaixo:
microstack.openstack keypair list
+------------+-------------------------------------------------
+
| Name | Fingerprint
|
+------------+-------------------------------------------------
+
| microstack | c3:45:c3:06:14:33:17:58:8e:13:f7:ca:18:51:47:b9
|
+------------+-------------------------------------------------
+
Para listar as máquinas virtuais criadas, use o seguinte comando:
microstack.openstack server list
+----------+-----------+---------+------------+-------+--------
---+
| ID | Name | Status | Networks | Image | Flavor
|
+----------+-----------+---------+------------+-------+--------
---+
| dce041fc | ubuntu_test | ACTIVE | test=192.168.222.192,
10.20.20.36 | ubuntu_bionic | m2.medium |
| 058067fc | cirro_test | SHUTOFF | test=192.168.222.139,
10.20.20.93 | cirros | m1.tiny |
+----------+-----------+---------+------------+-------+--------
---+
Podemos ver que a máquina criada, ubuntu_test , está ativa. Ela possui o IP
192.168.222.192 da rede test , e o IP flutuante 10.20.20.36 da rede external .
Como listado ao término da criação da máquina virtual, para acessá-la, utilize o
seguinte comando (usuário ubuntu e chave microstack ):
ssh -i $HOME/.ssh/id_microstack ubuntu@10.20.20.36
The authenticity of host '10.20.20.36 (10.20.20.36)' can't be
established.
ECDSA key fingerprint is SHA256:4O1tM/dXBUAJh
/R4/VioAkTcRxES3QzA2RjWilKHCGc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.20.20.36' (ECDSA) to the list of
known hosts.
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-112-generic
x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Thu Oct 8 18:06:11 UTC 2020
System load: 0.0 Processes: 90
Usage of /: 2.6% of 38.60GB Users logged in: 0
Memory usage: 4% IP address for ens3:
192.168.222.192
Swap usage: 0%
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security.
Activate at:
https://ubuntu.com/livepatch
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in
the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo
<command>".
See "man sudo_root" for details.
ubuntu@ubuntu-test:~$
Também é possível usar o ping para verificar se a máquina virtual está acessível:
ping 10.20.20.36
PING 10.20.20.36 (10.20.20.36) 56(84) bytes of data.
64 bytes from 10.20.20.36: icmp_seq=1 ttl=63 time=2.04 ms
64 bytes from 10.20.20.36: icmp_seq=2 ttl=63 time=1.23 ms
64 bytes from 10.20.20.36: icmp_seq=3 ttl=63 time=0.544 ms
^C
--- 10.20.20.36 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.544/1.274/2.042/0.612 ms
Podemos acessar as máquinas virtuais por ping e por ssh porque, por padrão, o
grupo de segurança já foi automaticamente configurado no Microstack. Para
listar os grupos de segurança, use o comando abaixo:
microstack.openstack security group list
+----------+---------+------------------------+-----------+----
--+
| ID | Name | Description | Project
| Tags |
+----------+---------+------------------------+-----------+----
--+
| 0d719815 | default | Default security group | | []
|
| 3772dea7 | default | Default security group | 6a15fdc92 | []
|
| cdf1c322 | default | Default security group | 66c975373 | []
|
+----------+---------+------------------------+-----------+----
--+
Para listar os detalhes de um grupo de segurança específico, utilize o comando
abaixo, informando o id do grupo:
microstack.openstack security group show cdf1c322
+-----------------+--------------------------------------------
----+
| Field | Value
|
+-----------------+--------------------------------------------
----+
| created_at | 2020-09-08T18:18:50Z
|
| description | Default security group
|
| id | cdf1c322-c6ff-4c1b-8a0b-14d9755e0fa5
|
| location | Munch({'cloud': '', 'region_name': '',
'zone': None, 'project': Munch({'id':
'66c97537384f4880814027af9bc4cf02', 'name': 'admin',
'domain_id': None, 'domain_name': 'default'})})
|
| name | default
|
| project_id | 66c97537384f4880814027af9bc4cf02
|
| revision_number | 3
|
| rules | created_at='2020-09-08T18:20:16Z',
direction='ingress', ethertype='IPv4', id='06927321-fb30-4e17-
b659-ab97f4e935ca', protocol='icmp',
remote_ip_prefix='0.0.0.0/0', updated_at='2020-09-08T18:20:16Z'
|
| | created_at='2020-09-08T18:18:50Z',
direction='egress', ethertype='IPv4', id='158868a8-b1a6-480c-
b171-78a697111ea5', updated_at='2020-09-08T18:18:50Z'
|
| | created_at='2020-09-08T18:18:51Z',
direction='egress', ethertype='IPv6', id='265082d7-
ea9c-4f98-9872-cf3b23bc3b28', updated_at='2020-09-08T18:18:51Z'
|
| | created_at='2020-09-08T18:18:50Z',
direction='ingress', ethertype='IPv4', id='5e9501de-888b-48ec-
9edb-fa879f162881', remote_group_id='cdf1c322-c6ff-4c1b-
8a0b-14d9755e0fa5', updated_at='2020-09-08T18:18:50Z'
|
| | created_at='2020-09-08T18:18:50Z',
direction='ingress', ethertype='IPv6', id='841d65ad-96e7-46a4-
b6da-b401b56ca8bf', remote_group_id='cdf1c322-c6ff-4c1b-
8a0b-14d9755e0fa5', updated_at='2020-09-08T18:18:50Z'
|
| | created_at='2020-09-08T18:20:18Z',
direction='ingress', ethertype='IPv4', id='a146fd79-3150-4fc9-
aa48-a3486143d5e4', port_range_max='22', port_range_min='22',
protocol='tcp', remote_ip_prefix='0.0.0.0/0',
updated_at='2020-09-08T18:20:18Z' |
| tags | []
|
| updated_at | 2020-09-08T18:20:18Z
|
+-----------------+--------------------------------------------
----+
Para listar as regras de um grupo, utilize o seguinte comando, informando o id do
grupo:
microstack.openstack security group rule list cdf1c322
+----------+------------+-----------+-----------+--------------
----+
| ID | IP Protocol| IP Range | Port Range| Remote Sec.
Group|
+----------+------------+-----------+-----------+--------------
----+
| 06927321| icmp | 0.0.0.0/0 | | None
|
| 158868a8| None | None | | None
|
| 265082d7| None | None | | None
|
| 5e9501de| None | None | | cdf1c322
|
| 841d65ad| None | None | | cdf1c322
|
| a146fd79| tcp | 0.0.0.0/0 | 22:22 | None
|
+---------+-------------+-----------+-----------+--------------
----+
Se o grupo de segurança não tivesse as regras para acesso por ping e ssh , seria
possível adicioná-las. Para exemplificar, vamos criar uma regra que permite
acessar a porta 8080 da máquina virtual a partir de qualquer IP. Use o comando
abaixo, especificando o id do grupo de segurança:
microstack.openstack security group rule create --proto tcp
--dst-port 8080 cdf1c322
+-------------------+------------------------------------------
----+
| Field | Value
|
+-------------------+------------------------------------------
----+
| created_at | 2020-10-08T18:34:03Z
|
| description |
|
| direction | ingress
|
| ether_type | IPv4
|
| id | 988b6cbc-9546-4937-9ea1-80d081e2780b
|
| location | Munch({'cloud': '', 'region_name': '',
'zone': None, 'project': Munch({'id':
'66c97537384f4880814027af9bc4cf02', 'name': 'admin',
'domain_id': None, 'domain_name': 'default'})}) |
| name | None
|
| port_range_max | 8080
|
| port_range_min | 8080
|
| project_id | 66c97537384f4880814027af9bc4cf02
|
| protocol | tcp
|
| remote_group_id | None
|
| remote_ip_prefix | 0.0.0.0/0
|
| revision_number | 0
|
| security_group_id | cdf1c322-c6ff-4c1b-8a0b-14d9755e0fa5
|
| tags | []
|
| updated_at | 2020-10-08T18:34:03Z
|
+-------------------+------------------------------------------
----+
Caso precise criar as regras para acesso com ping e ssh , use os comandos abaixo,
informando o id do grupo de segurança:
microstack.openstack security group rule create --proto icmp
cdf1c322
microstack.openstack security group rule create --proto tcp
--dst-port 22 cdf1c322
VMs com especificação de rede e atribuição de IP flutuante
Agora vamos criar uma máquina virtual informando todos os parâmetros, sem
usar o comando microstack.launch . Para isto, vamos criar uma rede privada,
especificando uma faixa de IPs específica. O comando abaixo cria a rede
priv_net :
microstack.openstack network create priv_net
+---------------------------+----------------------------------
----+
| Field | Value
|
+---------------------------+----------------------------------
----+
| admin_state_up | UP
|
| availability_zone_hints |
|
| availability_zones |
|
| created_at | 2020-10-08T19:14:37Z
|
| description |
|
| dns_domain | None
|
| id | ecf63d39-2e66-47cc-
b8d4-27b59b099ad9
|
| ipv4_address_scope | None
|
| ipv6_address_scope | None
|
| is_default | False
|
| is_vlan_transparent | None
|
| location | Munch({'cloud': '',
'region_name': '', 'zone': None, 'project': Munch({'id':
'66c97537384f4880814027af9bc4cf02', 'name': 'admin',
'domain_id': None, 'domain_name': 'default'})}) |
| mtu | 1450
|
| name | priv_net
|
| port_security_enabled | True
|
| project_id | 66c97537384f4880814027af9bc4cf02
|
| provider:network_type | geneve
|
| provider:physical_network | None
|
| provider:segmentation_id | 86
|
| qos_policy_id | None
|
| revision_number | 1
|
| router:external | Internal
|
| segments | None
|
| shared | False
|
| status | ACTIVE
|
| subnets |
|
| tags |
|
| updated_at | 2020-10-08T19:14:37Z
|
+---------------------------+----------------------------------
----+
Agora criaremos uma subrede com a faixa de IPs 10.10.10.0/24 . Utilize o
seguinte comando:
microstack.openstack subnet create priv_sub --network priv_net
--subnet-range 10.10.10.0/24
+-------------------+------------------------------------------
----+
| Field | Value
|
+-------------------+------------------------------------------
----+
| allocation_pools | 10.10.10.2-10.10.10.254
|
| cidr | 10.10.10.0/24
|
| created_at | 2020-10-08T19:19:45Z
|
| description |
|
| dns_nameservers |
|
| enable_dhcp | True
|
| gateway_ip | 10.10.10.1
|
| host_routes |
|
| id | 8694a6f8-0456-4162-869e-d5f72eebc56a
|
| ip_version | 4
|
| ipv6_address_mode | None
|
| ipv6_ra_mode | None
|
| location | Munch({'cloud': '', 'region_name': '',
'zone': None, 'project': Munch({'id':
'66c97537384f4880814027af9bc4cf02', 'name': 'admin',
'domain_id': None, 'domain_name': 'default'})}) |
| name | priv_sub
|
| network_id | ecf63d39-2e66-47cc-b8d4-27b59b099ad9
|
| prefix_length | None
|
| project_id | 66c97537384f4880814027af9bc4cf02
|
| revision_number | 0
|
| segment_id | None
|
| service_types |
|
| subnetpool_id | None
|
| tags |
|
| updated_at | 2020-10-08T19:19:45Z
|
+-------------------+------------------------------------------
----+
Para listar as subredes criadas, utilize o comando abaixo:
microstack.openstack subnet list
+----------+-----------------+----------+------------------+
| ID | Name | Network | Subnet |
+----------+-----------------+----------+------------------+
| 2d91d661 | external-subnet | 541f68e4 | 10.20.20.0/24 |
| 3682f140 | test-subnet | 986d190d | 192.168.222.0/24 |
| 8694a6f8 | priv_sub | ecf63d39 | 10.10.10.0/24 |
+----------+-----------------+----------+------------------+
Agora vamos criar uma máquina virtual nesta rede criada. Para isso, utilizaremos
o flavor m1.tiny , o grupo de segurança default , a imagem cirros , o id da rede
priv_net e a chave microstack . Caso queira conferir as opções de flavors, grupos
de segurança, imagens, redes e chaves, basta utilizar os comandos abaixo (se
precisar ver detalhes de alguma opção desses itens, basta trocar o list por show
e especificar o nome ou id da opção):
microstack.openstack flavor list
microstack.openstack security group list
microstack.openstack image list
microstack.openstack network list
microstack.openstack keypair list
O comando abaixo cria a máquina virtual custom_vm com as configurações
descritas acima:
microstack.openstack server create --flavor m1.tiny --security-
group cdf1c322-c6ff-4c1b-8a0b-14d9755e0fa5 --image cirros --nic
net-id=ecf63d39-2e66-47cc-b8d4-27b59b099ad9 --key-name
microstack custom_vm
+-------------------------------------+------------------------
----+
| Field | Value
|
+-------------------------------------+------------------------
----+
| OS-DCF:diskConfig | MANUAL
|
| OS-EXT-AZ:availability_zone |
|
| OS-EXT-SRV-ATTR:host | None
|
| OS-EXT-SRV-ATTR:hypervisor_hostname | None
|
| OS-EXT-SRV-ATTR:instance_name |
|
| 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 | 47gaiNsgXuZi
|
| config_drive |
|
| created | 2020-10-08T19:53:55Z
|
| flavor | m1.tiny (1)
|
| hostId |
|
| id | 221538d7-d647-4a3c-
9dfd-e558857c4b35 |
| image | cirros (dee7c0d4-834c-
4c0e-a389-7306141e9870) |
| key_name | microstack
|
| name | custom_vm
|
| progress | 0
|
| project_id |
66c97537384f4880814027af9bc4cf02 |
| properties |
|
| security_groups | name='cdf1c322-
c6ff-4c1b-8a0b-14d9755e0fa5' |
| status | BUILD
|
| updated | 2020-10-08T19:53:55Z
|
| user_id |
d8f5bba950494dd4911744cbd1dcb285|
| volumes_attached |
|
+-------------------------------------+------------------------
----+
Listando as máquinas virtuais criadas, podemos ver a custom_vm :
microstack.openstack server list
+----------+-----------+---------+------------+-------+--------
---+
| ID | Name | Status | Networks | Image | Flavor
|
| 221538d7 | custom_vm | ACTIVE | priv_net=10.10.10.144
| cirros | m1.tiny
| dce041fc | ubuntu_test | ACTIVE | test=192.168.222.192,
10.20.20.36 | ubuntu_bionic | m2.medium |
| 058067fc | cirro_test | SHUTOFF | test=192.168.222.139,
10.20.20.93 | cirros | m1.tiny |
+----------+-----------+---------+------------+-------+--------
---+
Se tentarmos acessar a máquina virtual custom_vm , por ping ou ssh , não teremos
sucesso, pois a mesma ainda não possui IP flutuante. Como visto acima, ela
possui apenas o IP 10.10.10.144 , da rede privada priv_net . Para criar um IP
flutuante, utilize o comando a seguir, especificando o nome da rede
externa/pública ( external ):
microstack.openstack floating ip create external
+---------------------+----------------------------------------
----+
| Field | Value
|
+---------------------+----------------------------------------
----+
| created_at | 2020-10-08T20:12:59Z
|
| description |
|
| dns_domain | None
|
| dns_name | None
|
| fixed_ip_address | None
|
| floating_ip_address | 10.20.20.163
|
| floating_network_id | 541f68e4-e7a5-436e-982b-5a464a215997
|
| id | 8fe822e5-6863-4116-9ff8-86748b508885
|
| location | Munch({'cloud': '', 'region_name': '',
'zone': None, 'project': Munch({'id':
'66c97537384f4880814027af9bc4cf02', 'name': 'admin',
'domain_id': None, 'domain_name': 'default'})}) |
| name | 10.20.20.163
|
| port_details | None
|
| port_id | None
|
| project_id | 66c97537384f4880814027af9bc4cf02
|
| qos_policy_id | None
|
| revision_number | 0
|
| router_id | None
|
| status | DOWN
|
| subnet_id | None
|
| tags | []
|
| updated_at | 2020-10-08T20:12:59Z
|
+---------------------+----------------------------------------
----+
O IP flutuante 10.20.20.163 foi criado. Para listar todos os IPs flutuantes, usamos
o comando abaixo:
microstack.openstack floating ip list
+-----------+---------------------+------------------+---------
-----------------------------+---------------------------------
-----+----------------------------------+
| ID | Floating IP Address | Fixed IP Address | Port
| Floating Network | Project
|
+-----------+---------------------+------------------+---------
-----------------------------+---------------------------------
-----+----------------------------------+
| 4b23f5b30 | 10.20.20.172 | None | None
| 541f68e4 | 66c9753738 |
| 5f14f7380 | 10.20.20.193 | 192.168.222.196 | 4c9c61bd
| 541f68e4 | 66c9753738 |
| 6fb63178b | 10.20.20.93 | 192.168.222.139 | ec1edb43
| 541f68e4 | 66c9753738 |
| 8fe822e5 | 10.20.20.163 | None | None
| 541f68e4 | 66c9753738 |
| b1c386024 | 10.20.20.36 | 192.168.222.192 | 697a22c2
| 541f68e4 | 66c9753738 |
| da5b949f | 10.20.20.92 | 10.10.10.72 | 5eff5ad8
| 541f68e4 | 66c9753738 |
+--------+---------------------+------------------+------------
--------------------------+------------------------------------
--+----------------------------------+
Podemos ver que o IP criado ainda não foi atribuído. Quando atribuímos, a
coluna Fixed IP Address exibe o IP fixo da máquina virtual à qual o IP flutuante
está associado.
Além de atribuir o IP flutuante à máquina virtual custom_vm , precisamos associar
a rede privada priv_net à rede externa external . Para isso, criaremos um
roteador e o associaremos às redes. Crie o roteador com o comando abaixo:
microstack.openstack router create router1
+-------------------------+------------------------------------
----+
| Field | Value
|
+-------------------------+------------------------------------
----+
| admin_state_up | UP
|
| availability_zone_hints |
|
| availability_zones |
|
| created_at | 2020-10-08T20:27:33Z
|
| description |
|
| distributed | False
|
| external_gateway_info | None
|
| flavor_id | None
|
| ha | False
|
| id | 819d543c-
cc2d-45d4-8696-81478d950487 |
| location | Munch({'cloud': '', 'region_name':
'', 'zone': None, 'project': Munch({'id':
'66c97537384f4880814027af9bc4cf02', 'name': 'admin',
'domain_id': None, 'domain_name': 'default'})}) |
| name | router1
|
| project_id | 66c97537384f4880814027af9bc4cf02
|
| revision_number | 1
|
| routes |
|
| status | ACTIVE
|
| tags |
|
| updated_at | 2020-10-08T20:27:33Z
|
+-------------------------+------------------------------------
----+
Associe a rede external como gateway externo do roteador router1 :
microstack.openstack router set router1 --external-gateway
external
Adicione a subrede priv_sub ao roteador router1 :
microstack.openstack router add subnet router1 priv_sub
Agora, atribuímos o IP flutuante 10.20.20.163 à máquina virtual custom_vm :
microstack.openstack server add floating ip custom_vm
10.20.20.163
Com isso, podemos acessar a máquina usando o ping :
ping 10.20.20.163
PING 10.20.20.163 (10.20.20.163) 56(84) bytes of data.
64 bytes from 10.20.20.163: icmp_seq=1 ttl=63 time=4.62 ms
64 bytes from 10.20.20.163: icmp_seq=2 ttl=63 time=0.876 ms
64 bytes from 10.20.20.163: icmp_seq=3 ttl=63 time=0.420 ms
^C
--- 10.20.20.163 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.420/1.975/4.629/1.885 ms
E podemos acessar a máquina usando ssh (com usuário cirros e chave
microstack ):
ssh -i $HOME/.ssh/id_microstack cirros@10.20.20.163
Espero que este tutorial possa simplificar o trabalho de quem esteja começando a usar o
Openstack. Qualquer sugestão de melhoria é bem vinda.
Openstack Microstack Cloud Computing Tutorial Computação Em Nuvem
About Help Legal
Get the Medium app

Mais conteúdo relacionado

DOC
Tutorial beagleboard
PDF
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...
PDF
Red hat enterprise_linux-6-installation_guide-pt-br
PDF
Gerência de redes utilizando o cacti
PDF
Dhcp com controle_ip_compartilhamento
PDF
Instalando debian gnu linux 2.2 para intel x86
Tutorial beagleboard
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...
Red hat enterprise_linux-6-installation_guide-pt-br
Gerência de redes utilizando o cacti
Dhcp com controle_ip_compartilhamento
Instalando debian gnu linux 2.2 para intel x86

Mais procurados (20)

PDF
Opennebula instalação
PPTX
Apresentação PGDAY - instalação e configuração - PostgreSQL
PDF
Namespace
PDF
Arch Linux FGSL 2011
PPT
Guia de instalação ms windows e para o sistema
DOC
Instalação de um servidor debian
PDF
Opennebula Introdução
PDF
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
PDF
Oficina PostgreSQL Básico Latinoware 2012
PDF
Squid proxy
PDF
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
PDF
Virtualização usando KVM e LXC
PDF
Desenvolvendo uma distribuição Linux - Projeto Fedora
PDF
IT security - Fail2ban, fail2sql e googlemaps (PT Language)
PPTX
Firewall linux virtual para windows
PDF
Unidade5 roteiro
ODP
Oficina postgresql avançado_consegi2010
PDF
Segurança da Informação - Firewall OpenBSD PF
PDF
Instalando o MySQL em menos de 10 minutos
PPTX
Tutorial - Cloud Computing Primeiros Acessos Linux
Opennebula instalação
Apresentação PGDAY - instalação e configuração - PostgreSQL
Namespace
Arch Linux FGSL 2011
Guia de instalação ms windows e para o sistema
Instalação de um servidor debian
Opennebula Introdução
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
Oficina PostgreSQL Básico Latinoware 2012
Squid proxy
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Virtualização usando KVM e LXC
Desenvolvendo uma distribuição Linux - Projeto Fedora
IT security - Fail2ban, fail2sql e googlemaps (PT Language)
Firewall linux virtual para windows
Unidade5 roteiro
Oficina postgresql avançado_consegi2010
Segurança da Informação - Firewall OpenBSD PF
Instalando o MySQL em menos de 10 minutos
Tutorial - Cloud Computing Primeiros Acessos Linux
Anúncio

Semelhante a Primeiros passos com Openstack (20)

ODP
Apresentação openstack
PDF
Apresentação Openstack - FISL 2013
PDF
Introdução ao OpenStack
PPT
Deploying infrastructure as-a-service with cloudstack
PPTX
Crie e gerencie nuvens OpenStack utilizando Foreman
PDF
Flisol 2015
PPTX
TDC2016SP - Explorando o Openstack
PDF
Cloud computing & Cloudstack: Como ter sua nuvem sem tempestades
PPTX
Orquestração de containers com Rancher
PDF
Meetup Openstack 20190226 - Fabricio Candido
PDF
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
PDF
Apt_vagrant_chef_olavo_queiroz
PDF
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
PDF
Cloud Management Platform com OpenStack
PPTX
OpenStack
PDF
Loren COmpass Computer Of day member political network datastore
PDF
Infraestrutura com openstack e linux
PDF
Fabric
ODP
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Apresentação openstack
Apresentação Openstack - FISL 2013
Introdução ao OpenStack
Deploying infrastructure as-a-service with cloudstack
Crie e gerencie nuvens OpenStack utilizando Foreman
Flisol 2015
TDC2016SP - Explorando o Openstack
Cloud computing & Cloudstack: Como ter sua nuvem sem tempestades
Orquestração de containers com Rancher
Meetup Openstack 20190226 - Fabricio Candido
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
Apt_vagrant_chef_olavo_queiroz
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
Cloud Management Platform com OpenStack
OpenStack
Loren COmpass Computer Of day member political network datastore
Infraestrutura com openstack e linux
Fabric
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Anúncio

Mais de Dalton Valadares (20)

PDF
Performance Evaluation of an IEEE 802.11g Network in an Industrial Environment
PDF
802.11g Signal Strength Evaluation in an Industrial Environment (Elsevier Int...
PDF
Towards 802.11g Signal Strength Estimation in an Industrial Environment: a Pr...
PDF
Towards 802.11g Signal Strength Estimation in an Industrial Environment: a Pr...
PDF
Internet das Coisas e a Indústria 4.0
PDF
Achieving Data Dissemination with Security using FIWARE and Intel Software Gu...
PDF
Internet das Coisas com Edgex Foundry
TXT
OPTEE on QEMU - Build Tutorial
PDF
Presentation of my paper in the IEEE Symposium on Computer and Communications...
PDF
Avaliação de Desempenho de uma Rede 802.11g em uma Usina Termoelétrica
PDF
Apresentação sobre o modelo de segurança OPC UA
PDF
Modelo de segurança OPC UA
PDF
Introdução à Gestão de projetos
PDF
Integrating Fiware Orion, Keyrock and Wilma
PDF
Programação C - Aula 1
PDF
Programação C - Aula 2
PDF
Programação C - Aula 3
PDF
Programação C - Aula 4
PDF
Desenvolvimento Web com JSF
PDF
Comparison of signal smoothing techniques for use in embedded system for moni...
Performance Evaluation of an IEEE 802.11g Network in an Industrial Environment
802.11g Signal Strength Evaluation in an Industrial Environment (Elsevier Int...
Towards 802.11g Signal Strength Estimation in an Industrial Environment: a Pr...
Towards 802.11g Signal Strength Estimation in an Industrial Environment: a Pr...
Internet das Coisas e a Indústria 4.0
Achieving Data Dissemination with Security using FIWARE and Intel Software Gu...
Internet das Coisas com Edgex Foundry
OPTEE on QEMU - Build Tutorial
Presentation of my paper in the IEEE Symposium on Computer and Communications...
Avaliação de Desempenho de uma Rede 802.11g em uma Usina Termoelétrica
Apresentação sobre o modelo de segurança OPC UA
Modelo de segurança OPC UA
Introdução à Gestão de projetos
Integrating Fiware Orion, Keyrock and Wilma
Programação C - Aula 1
Programação C - Aula 2
Programação C - Aula 3
Programação C - Aula 4
Desenvolvimento Web com JSF
Comparison of signal smoothing techniques for use in embedded system for moni...

Último (19)

PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Aula 18 - Manipulacao De Arquivos python
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Apple Pippin Uma breve introdução. - David Glotz
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Processos na gestão de transportes, TM100 Col18
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Aula04-Academia Heri- Tecnologia Geral 2025
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express

Primeiros passos com Openstack

  • 1. Dalton Cézane About Primeiros passos com Openstack Dalton Cézane Oct 8 · 15 min read Introdução O Openstack é uma plataforma de código aberto, criada pela NASA e pela Rackspace Hosting em 2010, para implantação e gerenciamento de serviços de computação em nuvem. É muito utilizada com o paradigma de infraestrutura como serviço (Infrastructure as a Service — IaaS) para prover recursos de processamento, rede e armazenamento para variados tipos de aplicação. Open in app
  • 2. Os principais componentes do Openstack estão listados abaixo: Nova — gerencia máquinas virtuais para realização de tarefas de computação (computing). Swift — gerencia o armazenamento de arquivos e objetos, possibilitando referenciá-los por identificadores únicos ao invés dos caminhos completos (paths). Cinder — gerencia o armazenamento persistente (espaço em disco), em blocos, para as máquinas virtuais. Neutron — gerencia redes, subredes e os componentes necessários para comunicação entre elas. Horizon — painel de controle que possibilita gerenciar os componentes da nuvem. Fornece uma API para que desenvolvedores possam interagir com todos os componentes. Keystone — gerencia o serviço de identidades, realizando a autenticação de usuários e controlando acesso a recursos baseado em permissões. Glance — gerencia as imagens de sistemas operacionais utilizadas pelas máquinas virtuais. Ceilometer — gerencia o uso dos recursos da nuvem, fornecendo serviços de telemetria para os usuários. Heat — gerencia a orquestração dos recursos para os serviços de nuvem. Alguma comunidades e empresas mantêm diferentes versões do Openstack. Eu tentei usar algumas, listadas abaixo: Devstack — Simples de instalar e muito utilizada em ambiente de desenvolvimento, para quem desenvolve funcionalidades para os componentes da plataforma.
  • 3. Kolla — Disponibiliza os componentes do Openstack em contêineres. Consegui instalar, mas desisti de utilizar devido à documentação (falta dela!). Packstack — Pacote de instalação do Openstack para Red Hat e CentOS. Como utilizo Ubuntu, não cheguei a instalar essa versão. Microstack —Mantido pela Canonical, possibilita a instalação e configuração do Openstack no Ubuntu, de forma simples. Embora tenha encontrado alguns problemas com esta versão, é a que possibilitou progresso no uso do Openstack. Senti falta de uma documentação bem organizada com fundamentos da plataforma e um tutorial de uso básico. Aparentemente, esse tipo de conteúdo não é disponibilizado de forma gratuita. Uso básico do Microstack Para instalar o Microstack, você pode utilizar a versão beta. Se estiver usando o Ubuntu 18.04, utilize o seguinte comando: sudo snap install microstack --classic --beta Se estiver usando Ubuntu 20.04, use a versão edge, pois tivemos problema com a versão classic: sudo snap install microstack --devmode --edge Para configurar e iniciar o Microstack, execute: sudo microstack.init --auto Uma vez que o Microstack foi corretamente configurado e inicializado, você pode acessar o painel de controle (Horizon) no endereço http://10.20.20.1/ , com as
  • 4. seguintes credenciais: Nome de usuário: admin Senha: keystone Como encontrei um problema no login em minha máquina, segui utilizando os comandos do Openstack via CLI (Command-line Interface). Por isso, as operações aqui estão descritas com os respectivos comandos. Entretanto, o Openstack disponibiliza uma API REST para realizar as operações em seus componentes. O Microstack já vem com uma imagem do Cirros registrada no Glance. Para exibir as imagens registradas, use o comando abaixo: microstack.openstack image list +--------------------------------------+---------------+------- -+ | ID | Name | Status | +--------------------------------------+---------------+------- -+ | dee7c0d4-834c-4c0e-a389-7306141e9870 | cirros | active | | 03a49346-b5d9-4955-ba5f-0579465e29db | ubuntu_bionic | active | +--------------------------------------+---------------+------- -+ Como vemos, além da imagem do Cirros, com nome cirros, temos uma do Ubuntu 18.04, com nome ubuntu_bionic. Esta imagem do Ubuntu Bionic foi obtida com o seguinte comando: wget https://cloud-images.ubuntu.com/bionic/current/bionic- server-cloudimg-amd64.img Este repositório (cloud-images.ubuntu.com) mantém imagens do Ubuntu já preparadas para o ambiente de nuvem. Para registrar a imagem no Microstack,
  • 5. utilize este comando (o último parâmetro será o nome da imagem): microstack.openstack image create --file bionic-server- cloudimg-amd64.img --public --container-format=bare disk- format=qcow2 ubuntu_bionic A configuração automática do Microstack já fornece duas redes criadas. Para listá-las, execute este comando: microstack.openstack network list +--------------------+----------+-----------------------+ | ID | Name | Subnets | +--------------------+----------+-----------------------+ | 541f68e4-e7a5-436e | external | 2d91d661-9c10-463b- | | 986d190d-f657-4463 | test | 3682f140-0774-4ecd- | +--------------------+----------+-----------------------+ Se precisar ver detalhes de uma rede específica, utilize o comando show e informe o nome ou ID da rede: microstack.openstack network show external +---------------------------+---------------------------------- ----+ | Field | Value | +---------------------------+---------------------------------- ----+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | nova | | created_at | 2020-09-08T18:18:59Z | | description | | | dns_domain | None | | id | 541f68e4-e7a5-436e- 982b-5a464a215997
  • 6. | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | False | | is_vlan_transparent | None | | location | Munch({'cloud': '', 'region_name': '', 'zone': None, 'project': Munch({'id': '66c97537384f4880814027af9bc4cf02', 'name': 'admin', 'domain_id': None, 'domain_name': 'default'})}) | | mtu | 1500 | | name | external | | port_security_enabled | True | | project_id | 66c97537384f4880814027af9bc4cf02 | | provider:network_type | flat | | provider:physical_network | physnet1 | | provider:segmentation_id | None | | qos_policy_id | None | | revision_number | 2 | | router:external | External | | segments | None | | shared | False | | status | ACTIVE | | subnets | 2d91d661-9c10-463b- b745-07e33660d8a1 | | tags | | | updated_at | 2020-09-08T18:19:04Z | +---------------------------+---------------------------------- ----+ As diferentes configurações para criação de máquinas virtuais são chamadas de
  • 7. flavors. Para listar as configurações (flavors) disponíveis, utilize o seguinte comando: microstack.openstack flavor list +----+-----------+-------+------+-----------+-------+---------- -+ | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public | +----+-----------+-------+------+-----------+-------+---------- -+ | 1 | m1.tiny | 512 | 1 | 0 | 1 | True | | 2 | m1.small | 2048 | 20 | 0 | 1 | True | | 3 | m1.medium | 4096 | 20 | 0 | 2 | True | | 4 | m1.large | 8192 | 20 | 0 | 4 | True | | 5 | m1.xlarge | 16384 | 20 | 0 | 8 | True | +----+-----------+-------+------+-----------+-------+---------- -+ Se precisar criar configurações diferentes, basta criar novos flavors com o seguinte comando (o último parâmetro é o nome do flavor): microstack.openstack flavor create --ram 4096 --vcpus 2 --disk 40 m2.medium +----------------------------+--------------------------------- ----+ | Field | Value | +----------------------------+--------------------------------- ----+ | OS-FLV-DISABLED:disabled | False | | OS-FLV-EXT-DATA:ephemeral | 0 | | disk | 40 | | id | 7ccbd0a0-9977-48bc- 9754-5cf1113a44ce | | name | m2.medium | | os-flavor-access:is_public | True
  • 8. | | properties | | | ram | 4096 | | rxtx_factor | 1.0 | | swap | | | vcpus | 2 | +----------------------------+--------------------------------- ----+ O Microstack fornece um comando para criar uma máquina virtual de forma bem simples. Por exemplo, para criar uma máquina virtual utilizando a imagem do Ubuntu Bionic (ubuntu_bionic) e o flavor criado (m2.medium), use o comando abaixo: microstack.launch ubuntu_bionic --flavor m2.medium --name ubuntu_test Launching server ... Allocating floating ip ... Server ubuntu_test launched! (status is BUILD) Access it with `ssh -i $HOME/.ssh/id_microstack ubuntu@10.20.20.36` You can also visit the OpenStack dashboard at http://10.20.20.1:80 Por padrão, o Microstack armazena as chaves para acesso remoto às máquinas no diretório $HOME/.ssh/ . Para listar as chaves registradas no Openstack, utilize o comando abaixo: microstack.openstack keypair list +------------+------------------------------------------------- + | Name | Fingerprint | +------------+------------------------------------------------- +
  • 9. | microstack | c3:45:c3:06:14:33:17:58:8e:13:f7:ca:18:51:47:b9 | +------------+------------------------------------------------- + Para listar as máquinas virtuais criadas, use o seguinte comando: microstack.openstack server list +----------+-----------+---------+------------+-------+-------- ---+ | ID | Name | Status | Networks | Image | Flavor | +----------+-----------+---------+------------+-------+-------- ---+ | dce041fc | ubuntu_test | ACTIVE | test=192.168.222.192, 10.20.20.36 | ubuntu_bionic | m2.medium | | 058067fc | cirro_test | SHUTOFF | test=192.168.222.139, 10.20.20.93 | cirros | m1.tiny | +----------+-----------+---------+------------+-------+-------- ---+ Podemos ver que a máquina criada, ubuntu_test , está ativa. Ela possui o IP 192.168.222.192 da rede test , e o IP flutuante 10.20.20.36 da rede external . Como listado ao término da criação da máquina virtual, para acessá-la, utilize o seguinte comando (usuário ubuntu e chave microstack ): ssh -i $HOME/.ssh/id_microstack ubuntu@10.20.20.36 The authenticity of host '10.20.20.36 (10.20.20.36)' can't be established. ECDSA key fingerprint is SHA256:4O1tM/dXBUAJh /R4/VioAkTcRxES3QzA2RjWilKHCGc. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.20.20.36' (ECDSA) to the list of known hosts. Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-112-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Thu Oct 8 18:06:11 UTC 2020
  • 10. System load: 0.0 Processes: 90 Usage of /: 2.6% of 38.60GB Users logged in: 0 Memory usage: 4% IP address for ens3: 192.168.222.192 Swap usage: 0% * Canonical Livepatch is available for installation. - Reduce system reboots and improve kernel security. Activate at: https://ubuntu.com/livepatch 0 packages can be updated. 0 updates are security updates. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. ubuntu@ubuntu-test:~$ Também é possível usar o ping para verificar se a máquina virtual está acessível: ping 10.20.20.36 PING 10.20.20.36 (10.20.20.36) 56(84) bytes of data. 64 bytes from 10.20.20.36: icmp_seq=1 ttl=63 time=2.04 ms 64 bytes from 10.20.20.36: icmp_seq=2 ttl=63 time=1.23 ms 64 bytes from 10.20.20.36: icmp_seq=3 ttl=63 time=0.544 ms ^C --- 10.20.20.36 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.544/1.274/2.042/0.612 ms Podemos acessar as máquinas virtuais por ping e por ssh porque, por padrão, o
  • 11. grupo de segurança já foi automaticamente configurado no Microstack. Para listar os grupos de segurança, use o comando abaixo: microstack.openstack security group list +----------+---------+------------------------+-----------+---- --+ | ID | Name | Description | Project | Tags | +----------+---------+------------------------+-----------+---- --+ | 0d719815 | default | Default security group | | [] | | 3772dea7 | default | Default security group | 6a15fdc92 | [] | | cdf1c322 | default | Default security group | 66c975373 | [] | +----------+---------+------------------------+-----------+---- --+ Para listar os detalhes de um grupo de segurança específico, utilize o comando abaixo, informando o id do grupo: microstack.openstack security group show cdf1c322 +-----------------+-------------------------------------------- ----+ | Field | Value | +-----------------+-------------------------------------------- ----+ | created_at | 2020-09-08T18:18:50Z | | description | Default security group | | id | cdf1c322-c6ff-4c1b-8a0b-14d9755e0fa5 | | location | Munch({'cloud': '', 'region_name': '', 'zone': None, 'project': Munch({'id': '66c97537384f4880814027af9bc4cf02', 'name': 'admin', 'domain_id': None, 'domain_name': 'default'})}) | | name | default | | project_id | 66c97537384f4880814027af9bc4cf02 | | revision_number | 3
  • 12. | | rules | created_at='2020-09-08T18:20:16Z', direction='ingress', ethertype='IPv4', id='06927321-fb30-4e17- b659-ab97f4e935ca', protocol='icmp', remote_ip_prefix='0.0.0.0/0', updated_at='2020-09-08T18:20:16Z' | | | created_at='2020-09-08T18:18:50Z', direction='egress', ethertype='IPv4', id='158868a8-b1a6-480c- b171-78a697111ea5', updated_at='2020-09-08T18:18:50Z' | | | created_at='2020-09-08T18:18:51Z', direction='egress', ethertype='IPv6', id='265082d7- ea9c-4f98-9872-cf3b23bc3b28', updated_at='2020-09-08T18:18:51Z' | | | created_at='2020-09-08T18:18:50Z', direction='ingress', ethertype='IPv4', id='5e9501de-888b-48ec- 9edb-fa879f162881', remote_group_id='cdf1c322-c6ff-4c1b- 8a0b-14d9755e0fa5', updated_at='2020-09-08T18:18:50Z' | | | created_at='2020-09-08T18:18:50Z', direction='ingress', ethertype='IPv6', id='841d65ad-96e7-46a4- b6da-b401b56ca8bf', remote_group_id='cdf1c322-c6ff-4c1b- 8a0b-14d9755e0fa5', updated_at='2020-09-08T18:18:50Z' | | | created_at='2020-09-08T18:20:18Z', direction='ingress', ethertype='IPv4', id='a146fd79-3150-4fc9- aa48-a3486143d5e4', port_range_max='22', port_range_min='22', protocol='tcp', remote_ip_prefix='0.0.0.0/0', updated_at='2020-09-08T18:20:18Z' | | tags | [] | | updated_at | 2020-09-08T18:20:18Z | +-----------------+-------------------------------------------- ----+ Para listar as regras de um grupo, utilize o seguinte comando, informando o id do grupo: microstack.openstack security group rule list cdf1c322 +----------+------------+-----------+-----------+-------------- ----+ | ID | IP Protocol| IP Range | Port Range| Remote Sec. Group| +----------+------------+-----------+-----------+-------------- ----+ | 06927321| icmp | 0.0.0.0/0 | | None |
  • 13. | 158868a8| None | None | | None | | 265082d7| None | None | | None | | 5e9501de| None | None | | cdf1c322 | | 841d65ad| None | None | | cdf1c322 | | a146fd79| tcp | 0.0.0.0/0 | 22:22 | None | +---------+-------------+-----------+-----------+-------------- ----+ Se o grupo de segurança não tivesse as regras para acesso por ping e ssh , seria possível adicioná-las. Para exemplificar, vamos criar uma regra que permite acessar a porta 8080 da máquina virtual a partir de qualquer IP. Use o comando abaixo, especificando o id do grupo de segurança: microstack.openstack security group rule create --proto tcp --dst-port 8080 cdf1c322 +-------------------+------------------------------------------ ----+ | Field | Value | +-------------------+------------------------------------------ ----+ | created_at | 2020-10-08T18:34:03Z | | description | | | direction | ingress | | ether_type | IPv4 | | id | 988b6cbc-9546-4937-9ea1-80d081e2780b | | location | Munch({'cloud': '', 'region_name': '', 'zone': None, 'project': Munch({'id': '66c97537384f4880814027af9bc4cf02', 'name': 'admin', 'domain_id': None, 'domain_name': 'default'})}) | | name | None | | port_range_max | 8080 | | port_range_min | 8080 | | project_id | 66c97537384f4880814027af9bc4cf02
  • 14. | | protocol | tcp | | remote_group_id | None | | remote_ip_prefix | 0.0.0.0/0 | | revision_number | 0 | | security_group_id | cdf1c322-c6ff-4c1b-8a0b-14d9755e0fa5 | | tags | [] | | updated_at | 2020-10-08T18:34:03Z | +-------------------+------------------------------------------ ----+ Caso precise criar as regras para acesso com ping e ssh , use os comandos abaixo, informando o id do grupo de segurança: microstack.openstack security group rule create --proto icmp cdf1c322 microstack.openstack security group rule create --proto tcp --dst-port 22 cdf1c322 VMs com especificação de rede e atribuição de IP flutuante Agora vamos criar uma máquina virtual informando todos os parâmetros, sem usar o comando microstack.launch . Para isto, vamos criar uma rede privada, especificando uma faixa de IPs específica. O comando abaixo cria a rede priv_net : microstack.openstack network create priv_net +---------------------------+---------------------------------- ----+ | Field | Value | +---------------------------+---------------------------------- ----+ | admin_state_up | UP | | availability_zone_hints |
  • 15. | | availability_zones | | | created_at | 2020-10-08T19:14:37Z | | description | | | dns_domain | None | | id | ecf63d39-2e66-47cc- b8d4-27b59b099ad9 | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | False | | is_vlan_transparent | None | | location | Munch({'cloud': '', 'region_name': '', 'zone': None, 'project': Munch({'id': '66c97537384f4880814027af9bc4cf02', 'name': 'admin', 'domain_id': None, 'domain_name': 'default'})}) | | mtu | 1450 | | name | priv_net | | port_security_enabled | True | | project_id | 66c97537384f4880814027af9bc4cf02 | | provider:network_type | geneve | | provider:physical_network | None | | provider:segmentation_id | 86 | | qos_policy_id | None | | revision_number | 1 | | router:external | Internal | | segments | None | | shared | False | | status | ACTIVE | | subnets | |
  • 16. | tags | | | updated_at | 2020-10-08T19:14:37Z | +---------------------------+---------------------------------- ----+ Agora criaremos uma subrede com a faixa de IPs 10.10.10.0/24 . Utilize o seguinte comando: microstack.openstack subnet create priv_sub --network priv_net --subnet-range 10.10.10.0/24 +-------------------+------------------------------------------ ----+ | Field | Value | +-------------------+------------------------------------------ ----+ | allocation_pools | 10.10.10.2-10.10.10.254 | | cidr | 10.10.10.0/24 | | created_at | 2020-10-08T19:19:45Z | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 10.10.10.1 | | host_routes | | | id | 8694a6f8-0456-4162-869e-d5f72eebc56a | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | location | Munch({'cloud': '', 'region_name': '', 'zone': None, 'project': Munch({'id': '66c97537384f4880814027af9bc4cf02', 'name': 'admin', 'domain_id': None, 'domain_name': 'default'})}) | | name | priv_sub |
  • 17. | network_id | ecf63d39-2e66-47cc-b8d4-27b59b099ad9 | | prefix_length | None | | project_id | 66c97537384f4880814027af9bc4cf02 | | revision_number | 0 | | segment_id | None | | service_types | | | subnetpool_id | None | | tags | | | updated_at | 2020-10-08T19:19:45Z | +-------------------+------------------------------------------ ----+ Para listar as subredes criadas, utilize o comando abaixo: microstack.openstack subnet list +----------+-----------------+----------+------------------+ | ID | Name | Network | Subnet | +----------+-----------------+----------+------------------+ | 2d91d661 | external-subnet | 541f68e4 | 10.20.20.0/24 | | 3682f140 | test-subnet | 986d190d | 192.168.222.0/24 | | 8694a6f8 | priv_sub | ecf63d39 | 10.10.10.0/24 | +----------+-----------------+----------+------------------+ Agora vamos criar uma máquina virtual nesta rede criada. Para isso, utilizaremos o flavor m1.tiny , o grupo de segurança default , a imagem cirros , o id da rede priv_net e a chave microstack . Caso queira conferir as opções de flavors, grupos de segurança, imagens, redes e chaves, basta utilizar os comandos abaixo (se precisar ver detalhes de alguma opção desses itens, basta trocar o list por show e especificar o nome ou id da opção): microstack.openstack flavor list microstack.openstack security group list
  • 18. microstack.openstack image list microstack.openstack network list microstack.openstack keypair list O comando abaixo cria a máquina virtual custom_vm com as configurações descritas acima: microstack.openstack server create --flavor m1.tiny --security- group cdf1c322-c6ff-4c1b-8a0b-14d9755e0fa5 --image cirros --nic net-id=ecf63d39-2e66-47cc-b8d4-27b59b099ad9 --key-name microstack custom_vm +-------------------------------------+------------------------ ----+ | Field | Value | +-------------------------------------+------------------------ ----+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | None | | OS-EXT-SRV-ATTR:hypervisor_hostname | None | | OS-EXT-SRV-ATTR:instance_name | | | 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 | 47gaiNsgXuZi | | config_drive | | | created | 2020-10-08T19:53:55Z
  • 19. | | flavor | m1.tiny (1) | | hostId | | | id | 221538d7-d647-4a3c- 9dfd-e558857c4b35 | | image | cirros (dee7c0d4-834c- 4c0e-a389-7306141e9870) | | key_name | microstack | | name | custom_vm | | progress | 0 | | project_id | 66c97537384f4880814027af9bc4cf02 | | properties | | | security_groups | name='cdf1c322- c6ff-4c1b-8a0b-14d9755e0fa5' | | status | BUILD | | updated | 2020-10-08T19:53:55Z | | user_id | d8f5bba950494dd4911744cbd1dcb285| | volumes_attached | | +-------------------------------------+------------------------ ----+ Listando as máquinas virtuais criadas, podemos ver a custom_vm : microstack.openstack server list +----------+-----------+---------+------------+-------+-------- ---+ | ID | Name | Status | Networks | Image | Flavor | | 221538d7 | custom_vm | ACTIVE | priv_net=10.10.10.144 | cirros | m1.tiny | dce041fc | ubuntu_test | ACTIVE | test=192.168.222.192, 10.20.20.36 | ubuntu_bionic | m2.medium | | 058067fc | cirro_test | SHUTOFF | test=192.168.222.139, 10.20.20.93 | cirros | m1.tiny | +----------+-----------+---------+------------+-------+-------- ---+
  • 20. Se tentarmos acessar a máquina virtual custom_vm , por ping ou ssh , não teremos sucesso, pois a mesma ainda não possui IP flutuante. Como visto acima, ela possui apenas o IP 10.10.10.144 , da rede privada priv_net . Para criar um IP flutuante, utilize o comando a seguir, especificando o nome da rede externa/pública ( external ): microstack.openstack floating ip create external +---------------------+---------------------------------------- ----+ | Field | Value | +---------------------+---------------------------------------- ----+ | created_at | 2020-10-08T20:12:59Z | | description | | | dns_domain | None | | dns_name | None | | fixed_ip_address | None | | floating_ip_address | 10.20.20.163 | | floating_network_id | 541f68e4-e7a5-436e-982b-5a464a215997 | | id | 8fe822e5-6863-4116-9ff8-86748b508885 | | location | Munch({'cloud': '', 'region_name': '', 'zone': None, 'project': Munch({'id': '66c97537384f4880814027af9bc4cf02', 'name': 'admin', 'domain_id': None, 'domain_name': 'default'})}) | | name | 10.20.20.163 | | port_details | None | | port_id | None | | project_id | 66c97537384f4880814027af9bc4cf02 | | qos_policy_id | None | | revision_number | 0 | | router_id | None
  • 21. | | status | DOWN | | subnet_id | None | | tags | [] | | updated_at | 2020-10-08T20:12:59Z | +---------------------+---------------------------------------- ----+ O IP flutuante 10.20.20.163 foi criado. Para listar todos os IPs flutuantes, usamos o comando abaixo: microstack.openstack floating ip list +-----------+---------------------+------------------+--------- -----------------------------+--------------------------------- -----+----------------------------------+ | ID | Floating IP Address | Fixed IP Address | Port | Floating Network | Project | +-----------+---------------------+------------------+--------- -----------------------------+--------------------------------- -----+----------------------------------+ | 4b23f5b30 | 10.20.20.172 | None | None | 541f68e4 | 66c9753738 | | 5f14f7380 | 10.20.20.193 | 192.168.222.196 | 4c9c61bd | 541f68e4 | 66c9753738 | | 6fb63178b | 10.20.20.93 | 192.168.222.139 | ec1edb43 | 541f68e4 | 66c9753738 | | 8fe822e5 | 10.20.20.163 | None | None | 541f68e4 | 66c9753738 | | b1c386024 | 10.20.20.36 | 192.168.222.192 | 697a22c2 | 541f68e4 | 66c9753738 | | da5b949f | 10.20.20.92 | 10.10.10.72 | 5eff5ad8 | 541f68e4 | 66c9753738 | +--------+---------------------+------------------+------------ --------------------------+------------------------------------ --+----------------------------------+ Podemos ver que o IP criado ainda não foi atribuído. Quando atribuímos, a coluna Fixed IP Address exibe o IP fixo da máquina virtual à qual o IP flutuante está associado.
  • 22. Além de atribuir o IP flutuante à máquina virtual custom_vm , precisamos associar a rede privada priv_net à rede externa external . Para isso, criaremos um roteador e o associaremos às redes. Crie o roteador com o comando abaixo: microstack.openstack router create router1 +-------------------------+------------------------------------ ----+ | Field | Value | +-------------------------+------------------------------------ ----+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2020-10-08T20:27:33Z | | description | | | distributed | False | | external_gateway_info | None | | flavor_id | None | | ha | False | | id | 819d543c- cc2d-45d4-8696-81478d950487 | | location | Munch({'cloud': '', 'region_name': '', 'zone': None, 'project': Munch({'id': '66c97537384f4880814027af9bc4cf02', 'name': 'admin', 'domain_id': None, 'domain_name': 'default'})}) | | name | router1 | | project_id | 66c97537384f4880814027af9bc4cf02 | | revision_number | 1 | | routes | | | status | ACTIVE | | tags | |
  • 23. | updated_at | 2020-10-08T20:27:33Z | +-------------------------+------------------------------------ ----+ Associe a rede external como gateway externo do roteador router1 : microstack.openstack router set router1 --external-gateway external Adicione a subrede priv_sub ao roteador router1 : microstack.openstack router add subnet router1 priv_sub Agora, atribuímos o IP flutuante 10.20.20.163 à máquina virtual custom_vm : microstack.openstack server add floating ip custom_vm 10.20.20.163 Com isso, podemos acessar a máquina usando o ping : ping 10.20.20.163 PING 10.20.20.163 (10.20.20.163) 56(84) bytes of data. 64 bytes from 10.20.20.163: icmp_seq=1 ttl=63 time=4.62 ms 64 bytes from 10.20.20.163: icmp_seq=2 ttl=63 time=0.876 ms 64 bytes from 10.20.20.163: icmp_seq=3 ttl=63 time=0.420 ms ^C --- 10.20.20.163 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.420/1.975/4.629/1.885 ms E podemos acessar a máquina usando ssh (com usuário cirros e chave microstack ):
  • 24. ssh -i $HOME/.ssh/id_microstack cirros@10.20.20.163 Espero que este tutorial possa simplificar o trabalho de quem esteja começando a usar o Openstack. Qualquer sugestão de melhoria é bem vinda. Openstack Microstack Cloud Computing Tutorial Computação Em Nuvem About Help Legal Get the Medium app