gerenciamento de recursos da internuvem através de api · precisar aprender uma linguagem...
TRANSCRIPT
-
Gerenciamento de recursos da
Internuvem atravs de APIComo utilizar a API do CloudStack e o aplicativo CloudMonkey no
gerenciamento de recursos e automatizao de aes na Internuvem
Stnio Firmino USP/STI/Internuvem [email protected]
-
Agenda
CloudStack API
Requisitos bsicos
Guia de referncia da API
Chamadas API
Interpretando as respostas
Paginao de respostas
Comandos assncronos
CloudMonkey
Funcionalidades
Instalao/Configurao
Uso
Formato dos resultados
Perfis
Tarefas assncronas
-
CloudStack APIInformaes bsicas de como utilizar a API CloudStack em atividades bsicas e
avanadas oferecidas pela Internuvem
-
Requisitos bsicos Para utilizar a API CloudStack na Internuvem necessrio:
A URL utilizada para enviar as chamadas de API
Uma API key e uma secret que iro identificar a conta
Familiaridade com consultas HTTP GET/POST
Conhecimento de XML/JSON
Conhecimento de linguagens de programao capazes de gerar requisies HTTP. Ex: PHP, Java, Python
http://docs.cloudstack.apache.org/
Permisses de acesso Root Admin
Domain Admin
User
-
Recuperando a API key e Secret
1
2
3
4
-
Recuperando a API key e Secret
Clicar para gerar chaves Clicar para trocar chaves
-
Guia de referncia da API
Documentao online com todos comandos da API
Comandos marcados com (A) so assncronos
Request Parameters e Response Tags
http://cloudstack.apache.org/api.html
ROOT
ADMIN
DOMAIN
ADMIN
USER
-
Chamada API
https://internuvem.usp.br/client/api?apiKey=ifNzuw
2bOYDcf1MEhmu38ufkUxIpYKc5ybRQANNF3eiOJ-
8CwlubHxsQtv7cptahHKArZ2NVOXdlBq8Q7CZcow&command=l
istUsers&listall=true&response=json&signature=tRNl
S%2FocWMnhRGk7jy3V49h4%2Bkw%3D
21
InternuvemAPI request
API response
HTTP GET/POST
Cliente
-
Chamada API
1.https://internuvem.usp.br/client/api?2.apiKey=ifNzuw2bOYDcf1MEhmu38ufkUxIpYKc5ybR
QANNF3eiOJ-8CwlubHxsQtv7cptahHKArZ2NVOXdlBq8Q7CZcow
3.&command=listUsers4.&listall=true5.&response=json6.&signature=tRNlS%2FocWMnhRGk7jy3V49h4%2Bkw
%3D
1. URL base / api path 2. API key 3. Comando 4. Parmetro(s) do comando 5. Formato resposta 6. Assinatura
-
Como assinar uma chamada API
Hash em SHA-1 (HMAC-SHA1) Formatado em Base64
URL encoded
Secret key
Parmetros da API URL encoded
Caracteres minsculos
Ordenados alfabeticamente
Incorporar o hash como parmetro (signature) da URL
-
Como assinar uma chamada API URL Base
https://internuvem.usp.br/client/api
API Key ifNzuw2bOYDcf1MEhmu38ufkUxIpYKc5ybR
Comando listUsers
Parmetro listall=True
Formato resposta json
-
Como assinar uma chamada API Gerar a URL da chamada API
command=listUsers&listall=True&apikey=ifNzuw2bOYDcf1MEhmu38ufkUxIpYKc5ybR&response=json
Converter em minsculas
command=listusers&listall=true&apikey=ifnzuw2boydcf1mehmu38ufkuxipykc5ybr&response=json
Ordernar os parmetros da URL
apikey=ifnzuw2boydcf1mehmu38ufkuxipykc5ybr&command=listusers&listall=true&response=json
Gerar o hash da URL HMAC-SHA1 Base64 URL encoded
t8ma4%2Bbx0q3bUnIUUJhSmalEuFo%3D
Acrescentar na URL
https://internuvem.usp.br/client/api?command=listUsers&listall=True&apikey=ifNzuw2bOYDcf1MEhmu38ufkUxIpYKc5ybR&response=json&signature=t8ma4%2Bbx0q3bUnIUUJhSmalEuFo%3D
6
-
Interpretando as respostas
JSON XML
43
-
Dicas de segurana
Replay attacks
Utilizar HTTPS sempre
Utilizar o parmetro expire para limitar o tempo de validade da
chamada
DOS attacks
Limitar o API request rate
Paginar as respostas (mximo de registros por pgina)
-
Paginando as respostas
Repostas com 500 registros (mximo).
Consultas com mais registros tero respostas paginadas
Ex: Uma consulta de listagem de mquinas virtuais com 720 registros. A
resposta ser retornada em 2 pginas (500 + 220)
Parmetros da consulta
listVirtualMachines
pagesize=500
page=2
5
-
Comandos assncronos Comandos potencialmente demorados para completar a tarefa
Evita bloquear a sesso enquanto se espera o termino da tarefa
Identificados com (A) no documento de chamadas de API
Imediatamente retorna o ID do job para acompanhamento do estado da execuo da tarefa (queryAsyncJobResult)
Estado da tarefa 0 : Tarefa em execuo
1 : Tarefa terminada com sucesso
2 : Tarefa terminada com FALHA na execuo (jobresultcode)SF2
-
Slide 16
SF2 Criar um script para mostrar a execuo com sucesso de um job assincrono e uma FALHA. Lembrar do job resultStenio Firmino; 22/02/2016
-
No sei programar, mas...
Gostaria de poder usar API semprecisar aprender uma linguagemde programao.
Queria automatizar algumas tarefasrotineiras sem precisar criar umprograma para isso
Queira trabalhar com umaquantidade grande de VMs semprecisar programar
-
Calma, ainda h alguma
chance, desde que...
Saiba o bsico de shell script como
bash ou powershell
Tenha familiaridade com linhas de
comando
Consiga trabalhar com processadores
de texto como sed, awk, cut, grep e
comandos semelhantes no
powershell
-
CloudMonkeyAplicativo em Python para gerenciamento de recursos da Internuvem por linhas de
comando
-
Funcionalidades Ferramenta CLI escrita em Python
Utilizvel como comando CLI ou shell interativo
Mltiplos perfis
CLI auto complete
Busca reversa
Teclas de atalho EMACS
Uso de pipes entre comandos
Suporta API assncrona permitindo ou no o bloqueio do terminal
Formato de resposta em tabela, json, csv, xml
-
Instalao e configurao Requisitos
Python 2.6
readline, requests, Pygments, prettytable, argcomplete
Instalaopip install cloudmonkey
pip install --upgrade cloudmonkey
Arquivos de configurao~/.cloudmonkey/config
~/.cloudmonkey/history
~/.cloudmonkey/log
-
Configurao inicial
Por padro, o perfil local criado ao executar o cloudmonkey
# cloudmonkey
(local) > set url https://internuvem.usp.br
(local) > set apikey dhabsu73-38373...
(local) > set secret uehfb4y47373j3...
(local) > sync
512 APIs discovered and cached
-
Uso
Autocomplete
>
> list
> list users
Help
> help list
> help list users
> ?list
> ?list users
> list users --help
> list users -h
-
Gerenciamento de perfilset profile
[]
url = http://localhost:8080/client/api
username = admin
password = password
apikey =
secretkey =
timeout = 3600
expires = 600
-
Formato dos resultados
Formato padro> set display default
> list users filter=username,email
count = 1
user:
email = [email protected]
username = api-admin
-
Formato dos resultados
Formato tabela> set display table
> list users filter=username,email
count = 1
user:
+-----------+-------------------+
| username | email |
+-----------+-------------------+
| api-admin | [email protected] |
+-----------+-------------------+
-
Formato dos resultados Formato json> set display json> list users filter=username,email{"count": 1,"user": [{"email": "[email protected]","username": "api-admin
}]
}
-
Formato dos resultados Formato xml> set display xml> list users filter=username,email
1
-
Formato dos resultados
Formato csv> set display csv
> list users filter=username,email
username,email
api-admin,[email protected]
-
Tarefas assncronas
No CloudMonkey, chamadas de API assncronas, por padro,
bloqueia o terminal
set asyncblock false
query asyncjobresult jobid=
!
-
DemonstraoAtividades avanadas que podem ser executadas utilizando API CloudStack
-
Demonstrao - Atividades avanadas
Criao e destruio de mltiplas VMs
Troca de template bsico de VMs
Adio e remoo de VMs no balanceamento
de carga
Adio e remoo de discos em mltiplas VMs
7
8
!
9