Hangout OpenStack Brasil – CLI e REST API

Olá

Nesse artigo vou falar sobre CLI e REST API no OpenStack.

O objetivo é dar um “start” nesse assunto e mostrar o caminho das pedras para quem quiser fazer mais testes e estudar mais sobre o assunto.

O ambiente que utilizei foi o seguinte:

2 máquinas virtuais no Virtual Box, ambas com Ubuntu 14.04 LTS. Em uma delas fiz um deploy com Devstack, vamos chama-la de “nuvem” e na outra vamos instalar o client do OpenStack, vamos chama-la de “cliente”.

A instalação do cliente será feita através do PIP que é um script Python que já instala todas as dependências e a versão mais atualizada.

Mãos a obra

INSTALANDO DEPENDÊNCIAS PARA INSTALAR CLI EM UBUNTU 14.04 LTS

#apt-get update

#apt-get install -y python-pip

#apt-get install -y build-essential

#apt-get install -y python-dev libxslt1-dev libxml2-dev

 

INSTALANDO OPENSTACK CLI

#pip install python-openstackclient

Nesse momento o cliente OpenStack já está instalado, porém, para iniciarmos a interação com a plataforma através do CLI precisamos passar nossas credenciais e para isso podemos logar (odeio essa expressão) pelo Horizon, clicar na aba projetos -> acesso e segurança -> API -> Baixar arquivo RC.

Abra o arquivo, copie o conteúdo, crie um arquivo na sua máquina cliente:

#vim openstackrc.sh

Salve o arquivo e execute o seguinte comando:

#source openstackrc.sh

Agora nossas variáveis foram criadas com as credenciais necessárias para acessar nossa nuvem OpenStack, então vamos executar alguns comandos para verificar o ambiente.

Lista as instancias criadas

#nova list

Lista imagens disponíveis

#glance image-list

Lista grupos de segurança

#nova secgroup-list

Lista regras do grupo de segurança default

#nova secgroup-list-rules default

Lista pares de chaves

#nova keypair-list

Lista flavors

#nova flavor-list

Lista redes configuradas

#nova network-list

Mostra detalhes da rede de nome private

#nova network-show private

Agora vamos começar a criar os componentes para vincular à instância que vamos lançar mais adiante.

Os comandos abaixo criam um grupo de segurança com o nome secgroup1 e define para ele uma regra que permite acesso SSH de qualquer IP e outra que permite protocolo icmp de todos os tipos também de qualquer IP.

#nova secgroup-create secgroup1 “secgroup1”

#nova secgroup-add-rule secgroup1 tcp 22 22 0.0.0.0/0

#nova secgroup-add-rule secgroup1 icmp -1 -1 0.0.0.0/0

Agora podemos listar as regras do grupo de segurança secgroup1

#nova secgroup-list-rules secgroup1

Vamos criar um flavor de nome “flavor1”, vamos definir o ID 6, 64MB de memória, 1GB de disco e 1 CPU. Para isso executamos o comando abaixo:

#nova flavor-create       flavor1    6   64   1    1

Podemos agora fazer o download de uma imagem do Cirros e criar essa imagem na nossa nuvem.

#wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img

 #glance image-create –name=cirros_hangout –is-public=true –container-format=bare \

–disk-format=qcow2 –file cirros-0.3.1-x86_64-disk.img

#glance image-show cirros_criado

#glance image-delete cirros_criado

Agora o par de chaves

 #ssh-keygen -t rsa -f chave.key

#nova keypair-add –pub-key chave.key.pub chave

Finalmente vamos lançar uma instância usando todos os componentes que criamos anteriormente, para isso executamos o comando:

 #nova boot –flavor flavor1 –image cirros_hangout –security-groups secgroup1 –key-name chave instancia-cirros

#nova list

#nova show instancia-cirros

Nossa instância já foi criada, porém no ultimo comando podemos perceber que ela está vinculada apenas à nossa rede privada, isso não permite que nossa instância tenha acesso à rede externa, Internet e nem que possamos acessá-la de outro computador. Para resolvermos isso precisamos atribuir um floating IP à nossa instância.

#nova floating-ip-create

#nova add-floating-ip instancia-cirros

Agora, finalmente podemos conectar por SSH na nossa instância.

#ssh -i chave.key cirros@

REST API

Faça o download do material com os comandos CLICANDO AQUI