3° Hangout OpenStack Brasil

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.

Anúncios

Sobre Fabio Silva

MVP Microsoft Azure - Entusiasta Office 365 Profissional apaixonado por tecnologia. Perfil generalista mas com profundo conhecimento em varias tecnologias. Mais de 10 anos de skill em ambientes Linux Analista Senior realizando trabalhos: Comunicação unificada Lync 2013, Sharepoint 2013, Exchange 2013, Vmware e Windows 2012 preparado para nuvem, hibrida e on-premisses. Comunicação unificada Lync 2013, Sharepoint 2013, Exchange 2013, Vmware e Windows 2012 preparado para nuvem, hibrida e on-premisses. Implantação de comunicação unificada e mensageria Lync 2013 e Exchange 2013 na empresa Penso Tecnologia. Itcore Consultor Senior em todas soluções Microsoft e Virtualização. Consultor Microsoft e Linux Senior De Julho de 2012 a Março de 2013 Consultor Microsoft e Linux Senior De Maio de 2012 a Setembro de 2012 Tecban (Técnologia Bancaria) Auditor de Sistemas Pleno Março de 2012 a Maio de 2012 Analista de TI Senior Março de 2011 a Março de 2012 Analista de infra-estrutura de redes e desenvolvimento Maio 2007 a Março de 2011 Analista de Redes Março de 2005 a Maio de 2007 Integradora THS Área de Suporte CPD Janeiro de 2004 a Janeiro de 2005 Especializações: Certificado Microsoft Windows 2003, Certificado Zimbra Network Edition, Certificado Sonicwall. Especialização em Messageria Exchange 2007 e 2010. Especialização em Linux

Publicado em 22 de junho de 2015, em Openstack e marcado como . Adicione o link aos favoritos. Deixe um comentário.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: