3° Hangout OpenStack Brasil

Last Updated: 22/06/2015By Tags:
[youtube https://www.youtube.com/watch?v=oc7mMB12JZk?rel=0&controls=0&showinfo=0]

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 <IP_CRIADO>

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

 

REST API

Agora vou mostrar alguns exemplos de comandos que podemos executar através da API REST do OpenStack.

Para exemplificar essa interação, utilizei um plugin do Google Chrome chamado Advanced REST Client.

 


LISTAR AS VERSÕES DE API

url: http://192.168.1.46:5000/

método: GET

cabeçalhos:

AUTENTICANDO

url: http://192.168.1.46:5000/v3/auth/tokens

método: POST

cabeçalhos: Content-type : application/json

body:

{
“auth”: {
“identity”: {
“methods”: [
“password”
],
“password”: {
“user”: {
“name”: “admin”,
“password”: “password”,
“domain”: {
“name”:”Default”
}

}
}
}
}
}

Nesse caso você substitui o “admin” e “password” pelo seu usuário e senha, o mesmo que utiliza para logar no Horizon.

VALIDANDO O TOKEN

url: http://192.168.1.46:5000/v3/auth/tokens

método: GET

cabeçalhos: X-Auth-Token: “token de serviço” (aqui vai o token de serviço)

X-Subject-Token: a70f063b60184a1fbd10eaa55d933705 – (aquio token retornado no commando aterior)

 

Obs: O token de serviço pode ser encontrado no arquivo /etc/keystone/keystone.conf no host onde está instalada a sua nuvem ou no arquivo local.conf que você criou ao fazer a implementação do Devstack.

CHECAR O TOKEN CRIADO

url: http://192.168.1.46:5000/v3/auth/tokens

método: HEAD

cabeçalhos: X-Auth-Token: “token de serviço”

X-Subject-Token: a70f063b60184a1fbd10eaa55d933705

 

LISTAR PROJETOS

url: http://192.168.1.46:5000/v3/projects

método: GET

cabeçalhos: X-Auth-Token: “token de serviço”

CRIAR NOVO PROJETO

url: http://192.168.1.46:5000/v3/projects

método: POST

cabeçalhos: X-Auth-Token: “token de serviço”

Content-type : application/json

 

Body:

{
“project”: {
“description”: “description1″,
“domain_id”: “default”,
“enabled”: true,
“name”: “MeuProjeto1″
}
}

CURL

Os mesmos comandos que executamos através do plugin do Google Chrome podem ser executados pelo console de uma estação Linux pelo comando “curl”.

LISTA VERSÕES DE APIS

#curl -i http://192.168.1.46:5000/ ; echo

AUTENTICA

#curl -i -H “Content-Type: application/json”   -d ‘

{ “auth”: {

“identity”: {

“methods”: [“password”],

“password”: {

 

“user”: {

“name”: “admin”,

“domain”: { “id”: “default” },

“password”: “initd”

}

}

}

}

}’ \

LISTA PROJETOS

 #curl -i -H “X-Auth-Token: token-de-serviço” http://192.168.1.46:5000/v3/projects ; echo

DOCUMENTAÇÃO

API Quick Start
Cloud Administrator Guide
Command line reference
API Complete Reference

Agradeço o Sandro do Conacloud que cedeu a matéria e estamos nesta empreitada difundindo a ferramenta. E a nossa parceria como sempre.

Em breve estaremos com uma solução pronta de backup com Openstack.

Novidades via inbox

Fique por dentro no meu Boletim digital toda semana um conteúdo novo

Leave A Comment