34
Gerenciamento de recursos da Internuvem através de API Como utilizar a API do CloudStack e o aplicativo CloudMonkey no gerenciamento de recursos e automatização de ações na Internuvem Stênio Firmino – USP/STI/Internuvem – [email protected]

Gerenciamento de recursos da Internuvem através de API · precisar aprender uma linguagem deprogramação. Queriaautomatizaralgumastarefas rotineiras sem precisar criar um programaparaisso

Embed Size (px)

Citation preview

  • 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

    [email protected]

  • 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