Utilizando o Windows Azure pela linha de comando

Esse post foi migrado do blog antigo. A publicação original foi no dia 05/03/2014

Eu sei que declarei que não sou fã de usar o terminal, mas, existem vários cenários que podem se beneficiar de scripts de criação de vm, scaling e algumas ações que só podem ser feitas via linha de comando, então vale a pena conhecer essa alternativa!

Podemos acessar o Azure via PowerShell ou azure-xplat.

O PowerShell só roda em Windows, depende do Azure SDK e é, basicamente, uma série de cmdlets.

O azure-xplat é uma ferramenta multi-plataforma, desenvolvida em NodeJS e disponível no npm (gerenciador de pacotes do NodeJS).

Vou utilizar o azure-xplat por ser multi-plataforma.

A partir daqui, todos os comandos serão executados dentro do terminal.

Download

cinst nodejs.install

Pronto, você já tem uma instalação do NodeJS completamente configurada na sua máquina.

Para baixar o azure-xplat:

npm instal azure-cli -g

Agora, digitando ‘azure’, temos isso:

PS c:\Users\Luís> azure  
info: Windows Azure: Microsoft's Cloud Platform
info:
info: Tool version 0.7.5
help:
help: Display help for a given command
help: help [options] [command]
help:
help: Open the portal in a browser
help: portal [options]
help:
help: Commands:
help: account Commands to manage your account information and publish settings
help: config Commands to manage your local settings
help: hdinsight Commands to manage your HDInsight accounts
help: mobile Commands to manage your Mobile Services
help: network Commands to manage your Networks
help: sb Commands to manage your Service Bus configuration
help: service Commands to manage your Cloud Services
help: site Commands to manage your Web Sites
help: sql Commands to manage your SQL Server accounts
help: storage Commands to manage your Storage objects
help: vm Commands to manage your Virtual Machines
help:
help: Options:
help: -h, --help output usage information
help: -v, --version output the application version

Todos os comandos possíveis estão aí.

Comandos

azure    [recurso]   [ação]  [opções]

Alguns exemplos:

azure    site        list    --json  
azure account import
azure vm create

Intuitivo, certo?

Vamos ver na prática!

Importanto sua assinatura

PS c:\Users\Luís> azure account download  
info: Executing command account download
info: Launching browser to http://go.microsoft.com/fwlink/?LinkId=254432
help: Save the downloaded file, then execute the command
help: account import <file>
info: account download command OK

Isso vai fazer o download de um arquivo de configuração. Para importá-lo, basta executar o seguinte comando:

PS c:\Users\Luís> azure account import "#caminho do arquivo baixado#"  
info: Executing command account import
info: Found subscription: #Sua assinatura vai aparecer aqui#
warn: The "#caminho do arquivo baixado#" file contains sensitive information
warn: Remember to delete it now that it has been imported
info: Account publish settings imported successfully
info: account import command OK

Pronto. Você já pode gerenciar a nuvem pela linha de comando!

Vamos fazer o primeiro teste:

PS c:\Users\Luís> azure vm list  
info: Executing command vm list
+ Getting virtual machines
data: Name Status Location DNS Name
data: --------- --------- -------- ----------------------
data: minha-vm ReadyRole East US minha-vm.cloudapp.net
data: minha-vm2 ReadyRole East US minha-vm2.cloudapp.net
info: vm list command OK

WOW!! Conseguimos listar todas as nossas VM’s e o atual estado delas. Muito bom!

Vamos tentar mais um:

c:\Users\Luís>azure site list  
info: Executing command site list
+ Getting locations
+ Getting sites
data: Name Slot Status Location Mode URL
data: ------------------ ---- ------- ----------- ------ ------------------------------------------------------------------------------
data: luisrudge Running East US Shared luisrudge.azurewebsites.net,luisrudge.net,www.luisrudge.net
data: blog-post Running West US Free blog-post.azurewebsites.net
info: site list command OK

Interessante, e se eu quiser o resultado em json?

c:\Users\Luís>azure site list --json  
[
{
"enabledHostNames": [
"luisrudge.azurewebsites.net",
"luisrudge.net",
"luisrudge.scm.azurewebsites.net",
"www.luisrudge.net"
],
"hostNames": [
"luisrudge.azurewebsites.net",
"luisrudge.net",
"www.luisrudge.net"
],
"hostNameSslStates": [],
"sslCertificates": [],
"adminEnabled": true,
"availabilityState": "Normal",
"computeMode": "Shared",
"enabled": true,
"lastModifiedTimeUtc": "2014-03-03T20:41:05.790Z",
"name": "luisrudge",
"repositorySiteName": "luisrudge",
"runtimeAvailabilityState": "Normal",
"uri": "https://[retirado-por-segurança]/sites/luisrudge",
"siteMode": "Basic",
"siteProperties": {
"appSettings": {},
"metadata": {},
"properties": {
"RepositoryUri": "https://luisrudge.scm.azurewebsites.net",
"PublishingUsername": "[usuário]",
"PublishingPassword": "[minha-senha-super-segura]"
}
},
"state": "Running",
"usageState": "Normal",
"webSpace": "eastuswebspace"
},
{
"enabledHostNames": [
"blog-post.azurewebsites.net",
"blog-post.scm.azurewebsites.net"
],
"hostNames": [
"blog-post.azurewebsites.net"
],
"hostNameSslStates": [],
"sslCertificates": [],
"adminEnabled": true,
"availabilityState": "Normal",
"computeMode": "Shared",
"enabled": true,
"lastModifiedTimeUtc": "2013-11-15T21:55:46.837Z",
"name": "blog-post",
"repositorySiteName": "blog-post",
"runtimeAvailabilityState": "Normal",
"uri": "https://[retirado-por-segurança]/sites/blog-post",
"siteMode": "Limited",
"siteProperties": {
"appSettings": {},
"metadata": {},
"properties": {
"RepositoryUri": "https://blog-post.scm.azurewebsites.net",
"PublishingUsername": "[usuário]",
"PublishingPassword": "[minha-senha-super-segura]"
}
},
"state": "Running",
"usageState": "Normal",
"webSpace": "westuswebspace"
}
]

Não estamos limitados a ficar listando nossos recursos na nuvem! Podemos, também, gerenciá-los!

Gerenciamento de recursos

c:\Users\Luís>azure site show blog-post  
info: Executing command site show
info: Showing details for site
+ Getting site information
+ Getting site config information
+ Getting repository settings
+ Getting diagnostic settings
+ Getting locations
data:
data: Web Site Name: blog-post
data: Site Mode: Free
data: Enabled: true
data: Availability: Normal
data: Last Modified: Mon Mar 03 2014 15:33:19 GMT-0300 (E. South America Standard Time)
data: Location: West US
data:
data: Host Name
data: ---------------------------
data: blog-post.azurewebsites.net
[...]
info: site show command OK

Este site está configurado para o modo Free. Para escalar o site para o modo Standard, por exemplo, basta digitar:

c:\Users\Luís>azure site scale mode standard blog-post  
info: Executing command site scale mode
+ Updating a site configuration
info: site scale mode command OK

Fácil, né? Agora, se eu exibir as informações novamente, esse site já está no modo Standard.

c:\Users\Luís>azure site show blog-post  
info: Executing command site show
info: Showing details for site
+ Getting site information
+ Getting site config information
+ Getting repository settings
+ Getting diagnostic settings
+ Getting locations
data:
data: Web Site Name: blog-post
data: Site Mode: Standard
data: Enabled: true
data: Availability: Normal
data: Last Modified: Wed Mar 05 2014 22:51:54 GMT-0300 (E. South America Standard Time)
data: Location: West US
data:
data: Host Name
data: ---------------------------
data: blog-post.azurewebsites.net
[...]
info: site show command OK

Concluindo

Utilizando o azure-xplat, sempre que você se sentir “perdido”, basta digitar o comando ou recurso que você quer ajuda com -h ou — help no final.

azure vm list -h  
azure vm -h
azure site create -h
azure site -h

Quer saber como criar uma máquina virtual? Vem aqui!

Luís Rudge é pai e desenvolvedor há anos. Trabalha na Round Pegs Inc & seu projeto pessoal http://www.uniclearning.com.br/ — hospedado inteiramente no Azure

Luís Rudge é pai e desenvolvedor há anos. Trabalha na Round Pegs Inc & seu projeto pessoal http://www.uniclearning.com.br/ — hospedado inteiramente no Azure