Home / Dicas e Tutoriais / Como Gerenciar Seu Storage do Microsoft Azure no Linux

Como Gerenciar Seu Storage do Microsoft Azure no Linux

Olá pessoal,

Se você já conhece o Microsoft Azure sabe como essa plataforma da gigante Microsoft é poderosa. Se ainda não conhece, vale a pena conferir através da leitura do artigo abaixo.

azure-services

A Microsoft entrou em 2008 nesse mercado de infraestrutura de TI na nuvem e hoje em dia está bem disseminada pelo globo e agressiva para competir com os concorrentes em relação a funcionalidades e preços. Sua plataforma, chamada de Microsoft Azure, oferece diversos produtos como espaços de armazenamento, bancos de dados, Active Directory, máquinas virtuais com diversos sistemas operacionais que vão além do Windows, incluindo algumas distribuições Linux, e muito mais.

A plataforma já evoluiu bastante e já é amplamente usada por milhares de empresas e é favorecida pela vantagem da integração de seus produtos para empresas que já utilizam diversos produtos da Microsoft on-premisse, incluindo, claro, servidores locais Windows Server e desktops com Windows.

Recentemente criei e usei servidores na Azure, um Ubuntu Server e openSUSE. Também, tenho usado os serviços de armazenamento para backups de um de meus clientes.

Gerenciamento de Blob Storage

Hoje vou explicar como gerenciar o serviço de armazenamento do Microsoft Azure. Mais especificamente “Blob Storage” que é usada para armazenar grandes quantidades de dados não estruturados, por exemplo:

  • Azure VM Hard Drives
  • Documentos
  • Arquivos de mídia
  • Arquivos de Backup

Para entender melhor como funciona a parte de Storage do Azure é imprescindível conhecer alguns conceitos e nomenclaturas da plataforma. Saiba mais clicando na imagem abaixo.

azure-conceitos

Vamos Gerenciar Nossos Storages de 3 Formas através deste artigo.

1 – Via Portal
2 – Via App
3 – Via Comandos

Então Vamos lá?!

1 – Via Portal

Não entrarei em detalhes aqui em como realizar todas as operações e o que faz cada uma delas.
Basta dizer que no portal web é possível realizar diversas operações, tais como:

Criar Máquinas Virtuais
Criar Bancos de dados SQL
Criar Storage Account
Criar Container
Criar Blobs
Criar SMB Shares
Fazer Upload de um arquivo
Fazer Download de um arquivo
Gerenciar permissões de acesso
…e muito mais

Basta fazer login em sua conta da Microsoft no portal.azure.com e começar a testar. Você terá um crédito para usar nos seus testes e não pagará nada depois que eles acabarem, a não ser que queira contratar algum serviço.

azure portal3

Mas então, você deve pensar: “Qual a necessidade de realizar operações no terminal ao invés de utilizar a interface web?”

Essa resposta tem 4 palavras…

Implementação de Tarefas Automáticas!

Imagine que você queira que um servidor acesse seu storage no Azure diariamente e envie ou baixe arquivos de lá. Então você precisará conhecer os comandos para criar um script para fazer isso de forma agendada.

Ah… agora pode ficar muito legal criar uma tarefa de backup automatizada e enviada para a nuvem agendada via Cron do Linux.

2 – Via App

Existem ainda poucos apps para fazer o gerenciamento de storage do Azure. Mas um que encontrei e que mais gostei foi o Microsoft Azure Storage Explorer. Ele suporta todos os comandos do Azure muito bem e lhe permite realizar as operações que deseja, como fazer upload, download de arquivos, criar pastas, shares e etc. Ele é multiplataforma, disponível para Windows, Mac e Linux.

Obs. A única coisa que ele não faz é o agendamento de tarefas, como enviar um arquivo local, ou todo o conteúdo de um diretório local para determinado Storage Blob ou File Share. Também não sincroniza o conteúdo de uma pasta como faz o Dropbox e outros serviços na nuvem. (Mas apenas por enquanto, pois enviei um feedback aos desenvolvedores pedindo este recurso)

Saiba Mais: http://storageexplorer.com

Baixe o App – Microsoft Azure Explorer

Download Para Linux Download Para Windows Download Para Mac

Instalação no Linux

Depois de baixado basta descompactá-lo, e no terminal, vá até a pasta onde baixou/descompactou e então rode o programa. Exemplo:

cd ~/Downloads/StorageExplorer-linux-x64
./StorageExplorer

(ou apenas navegue até a pasta e abra o programa “StorageExplorer” clicando sobre ele)

Logo o programa abrirá, e você poderá fazer login com sua conta da Microsoft/Azure, e ver todos os seus arquivos, blobs, containers lá, ou criar se não possuir nenhum. É uma forma visual muito boa de entender os conceitos de armazenamento que tratamos.

Obs. Apenas lembrando alguns conceitos.

blob

storage-explorer2

Se quiser criar um atalho, faça o seguinte, abra o terminal e digite:

sudo gedit /usr/share/applications/Storage-Explorer.desktop

No Gedit (ou o editor de texto que desejar) insira o seguinte texto:

[Desktop Entry]
Encoding=UTF-8
Name=Storage Explorer
Comment=Storage Explorer
Exec=/home/nome-de-seu-user/Downloads/StorageExplorer-linux-x64/StorageExplorer
Icon=/home/nome-de-seu-user/Downloads/StorageExplorer-linux-x64/resources/app/out/app/icon.png
Terminal=false
Type=Application
Categories=Application
StartupNotify=true

Então salve e feche-o. Agora ele estará presente em seu menu de programas normalmente.

Obs. O caminho do executável vai depender do local que você o descompactou. No meu caso deixei em minha pasta “Downloads” mesmo, ok?

Eu estou usando-o e gostei bastante. Olha ele aí na minha Dash do Ubuntu (ao lado do Opera e Thunderbird).

dash

azure-explorer-icon

3 – Via Comandos

Instalação do Azure-cli

Se estamos no Windows, você pode usar o Power Shell para realizar diversas operações, ou um aplicativo chamado Azcopy, que possui interface de linha de comando, mas se você utiliza Linux, e quer fazer isso no seu terminal, precisará preparar seu sistema para que possa usar os comandos do Azure nele. Isso é feito por meio de 2 coisas:

1 – Instalar os pacotes Nodejs e npm
2 – Instalar o azure-cli: CLI (command line interface)

Instalação No Ubuntu:

Isso será feito através de apenas 2 comandos.

sudo apt-get install nodejs-legacy npm

azure-install-linux

sudo npm install -g azure-cli

azure-install-linux2

Ao terminar, você receberá esta saída.

azure-install-linux3

Em outras Distros

Se você estiver usando alguma outra distribuição Linux, poderá:

1 – Pesquisar pelos mesmos pacotes (node.js e npm) no seu gerenciador de softwares e instalá-los.

2 – Depois basta baixar o Azure-cli Download Azure-cli Linux tar file

3 – E então instalá-lo com o seguinte comando:

sudo npm install -g /caminho-que-salvou-o-azure-cli/nome-do-arquivo

Eu tive sucesso instalando-o no openSUSE recentemente.

Pronto, agora, você poderá usar uma gama de comandos do azure diretamente no terminal do seu Linux.

Usando os Comandos do Azure

Agora segue uma lista de comandos úteis para gerenciar seu Storage do Azure via terminal.

Você pode começar com um primeiro comando azure para ver que realmente está instalado. Ele lhe perguntará se você quer enviar dados de uso da ferramenta para ajudar os desenvolvedores e você pode escolher “n” de não.

azure3

E pronto, na imagem abaixo, rodando no meu Ubuntu 16.04 LTS:

azure-terminal

Login Método 1

A primeira coisa que você poderá fazer é o login na sua conta do Azure usando o terminal. Isso se faz por meio do comando “azure login”.

azure login                                                                                                                                                                                         
info:    Executing command login
info:    To sign in, use a web browser to open the page http://aka.ms/devicelogin. Enter the code XXXXXXXXX to authenticate. If you're signing in as an Azure AD application, use the --username and --password parameters.

Isso gerará um código de autenticação e te direcionará a um link web, onde você irá inserir esse código e depois fará login normalmente em sua conta Microsoft, e então poderá fechar o navegador web e começar a trabalhar no terminal.

info:    Added subscription Visual Studio Ultimate with MSDN
info:    Added subscription Azure Free Trial
info:    Setting subscription "Visual Studio Ultimate with MSDN" as default
+
info:    login command OK

Login Método 2

Ou poderá logar diretamente no terminal usando o nome da sua conta + usuário e senha com o comando (por exemplo):

azure login -u ahmet@contoso.onmicrosoft.com
info:    Executing command login
Password: *********
|info:    Added subscription Visual Studio Ultimate with MSDN
+
info:    login command OK

Escolhendo um Modo

A partir da versão 0.8.0, foi adicionado um modo separado para Resource Manager e Service Manager (comandos usando a API de gerenciamento de recursos ou serviços do Azure). Eles não são projetados para trabalhar em conjunto.

O Resource Manager é para gerenciar recursos, como Storages.
O Service Manager é para gerenciar serviços, como máquinas virtuais.

Você pode usar o seguinte comando para alternar entre o gerenciamento de serviços e gerenciamento de recursos:

azure config mode arm
azure config mode asm

Aqui iremos trabalhar no modo arm.

Comandos Para Operações de Storage

Criando uma Storage Account

Você poderá agora começar criando uma Storage Account. Este é o primeiro passo para começar a criar um espaço de armazenamento. Onde existe os símbolos “<>”, você substitui pelo nome que quer dar a seu storage account, sem nenhum símbolo.

azure storage account create <account_name>
exemplo:
azure storage account create imagens

Criando e Gerenciando Blobs

Blob Storage é um serviço para armazenar grandes quantidades de dados não estruturados, tais como texto ou dados binários, que pode ser acessado a partir de qualquer lugar do mundo via HTTP ou HTTPS. Um Blob é um arquivo armazenado em um Blob Storage. Pode ser qualquer tipo de arquivo, mas uma vez armazenado em um Blob Storage/Container, ele passa a ser chamado de Blob. Existem 3 tipos de arquivos de Blob que são os Block Blobs, Append Blobs, e Page Blobs.
Esta seção assume que você já está familiarizado com os conceitos de armazenamento Azure Blob. Saiba mais em Get started with Azure Blob storage using .NET e Blob Service Concepts.

Criando um Blob Container

Cada blob no armazenamento Azure deve estar em um recipiente. Você pode criar um container privado usando o comando:

azure storage container create meucontainer

Nota: Existem três níveis de acesso anônimo de leitura: Off, Blob e Container.
* Para impedir o acesso anônimo aos blobs, defina o parâmetro de permissão para Off. Por padrão, o novo container é privado e só pode ser acessado pelo proprietário da conta.
* Para permitir o acesso de leitura público anônimo aos recursos do blob, mas não para metadados do container ou para a listas os blobs no container, defina o parâmetro de Permissão para Blob.
* Para permitir o acesso público completo de leitura aos recursos do blob, metadados do container, e a lista de blobs no container, defina o parâmetro de Permissão para Container. Para mais informações, veja Manage anonymous read access to containers and blobs.

Upload Um Blob para um Container

O Azure Blob Storage suporta os 2 tipos de blob: blobs de bloco e blobs página. Para mais informações, consulte Understanding Block Blobs, Append Blobs, and Page Blobs.

blob

Para fazer upload de Blobs para um Container, você pode usar o comando azure storage blob upload. Por padrão, este comando envia os arquivos locais a um Blob block. Para especificar o tipo para o blob, você pode usar o parâmetro –blobtype.

azure storage blob upload '~/images/HelloWorld.png' mycontainer myBlockBlob

Baixando Blobs de Um Container

O comando abaixo faz o download de um blob.

azure storage blob download mycontainer myBlockBlob '~/downloadImages/downloaded.png'

Copiando Blobs

Você pode copiar Blobs dentro ou entre contas de armazenamento e regiões de forma assíncrona.

O exemplo a seguir demonstra como copiar blobs de uma conta de armazenamento para outro. Neste exemplo, criamos um container onde os Blobs são públicos, e anonimamente acessíveis.

azure storage container create mycontainer2 -a <accountName2> -k <accountKey2> -p Blob

azure storage blob upload '~/Images/HelloWorld.png' mycontainer2 myBlockBlob2 -a <accountName2> -k <accountKey2>

azure storage blob copy start 'https://<accountname2>.blob.core.windows.net/mycontainer2/myBlockBlob2' mycontainer

Este exemplo realiza uma cópia assíncrona. Você pode monitorar o status de cada operação de cópia executando comando “azure storage blob copy show“.

Note que a URL de origem fornecida para a operação de cópia ou deve ser acessível ao público, ou incluir um token SAS (assinatura de acesso compartilhado).

Apagando um Blob

Para apagar um Blob, use o seguinte comando:

azure storage blob delete mycontainer myBlockBlob2

Até agora vimos como gerenciar os Blobs que é destinado ao armazenamento de arquivos que terão um acesso menor, como backups por exemplo. Mas para criar um espaço de arquivos que serão acessados com frequência, por usuários ou programas, o ideal é criar compartilhamentos que veremos a seguir.

Criando e Gerenciando Compartilhamento de Arquivos

O Azure File Storage oferece armazenamento compartilhado para aplicações usando o protocolo SMB padrão. máquinas Microsoft Azure virtuais e serviços de nuvem, bem como aplicações no local, pode compartilhar dados de arquivos por meio de compartilhamentos montados. Você pode gerenciar compartilhamentos de arquivos e dados de arquivos através do Azure CLI. Para mais informações sobre o armazenamento de arquivos Azure, consulte Get started with Azure File storage on Windows ou How to use Azure File storage with Linux.

Obs. O custo desse tipo de armazenamento e recurso de acesso, é maior do que a de um Blob Storage.

Criando Um File Share (Compartilhamento de Arquivo).

Um compartilhamento de arquivo Azure é um compartilhamento de arquivos SMB no Azure. Todos os diretórios e arquivos devem ser criados em um compartilhamento de arquivo. Uma conta pode conter um número ilimitado de ações, e uma quota pode armazenar um número ilimitado de arquivos, até os limites de capacidade da conta de armazenamento. O exemplo a seguir cria um compartilhamento de arquivo chamado myshare.

azure storage share create myshare

Criando Um Diretório

Um diretório fornece uma estrutura hierárquica opcional para um compartilhamento de arquivo do Azure. O exemplo a seguir cria um diretório chamado myDir no compartilhamento de arquivo.

azure storage directory create myshare myDir

Obs. Note que caminho de diretório pode incluir vários níveis, por exemplo, A/B. No entanto, você deve garantir que todos os diretórios pais existem. Por exemplo, para o caminho a/b, você deve criar um diretório a primeiro, em seguida, criar o diretório b.

Upload de Um Arquivo Local para Um Diretório

O exemplo a seguir faz o upload um arquivo de ~/temp/file.txt para o diretório myDir. Edite o caminho do arquivo para que ele aponte para um arquivo válido de sua máquina local:

azure storage file upload '~/temp/samplefile.txt' myshare myDir

Obs. Um arquivo pode ser até 1TB de tamanho.

Listando os arquivos na raiz do compartilhamento ou diretório

Você pode listar os arquivos e subpastas em uma raiz ou um diretório usando o seguinte comando:

azure storage file list myshare myDir

Obs. Note que o nome do diretório é opcional para a operação de listagem. Se omitido, o comando lista o conteúdo do diretório raiz do compartilhamento.

Copiando Arquivos

Desde a versão 0.9.8 do Azure CLI, você pode copiar um arquivo para outro arquivo, um arquivo para um Blob, ou um Blob para um arquivo. Abaixo demonstramos como realizar essas operações de cópia usando comandos CLI. Para copiar um arquivo para o novo diretório:

azure storage file copy start --source-share srcshare --source-path srcdir/hello.txt --dest-share destshare --dest-path destdir/hellocopy.txt --connection-string $srcConnectionString --dest-connection-string $destConnectionString

Para copiar um Blob para um diretório:

azure storage file copy start --source-container srcctn --source-blob hello2.txt --dest-share hello --dest-path hellodir/hello2copy.txt --connection-string $srcConnectionString --dest-connection-string $destConnectionString

Script Exemplo Geral

Abaixo, segue um exemplo de shell script que pode ser criado para automatizar tarefas de gerenciamento do Azure, mas edite e comente os comandos que você não irá usar, pois contém diversos comandos para vários usos, até mesmo o de criar containers, o que talvez você não precise, caso já tenha containers criados.

#!/bin/bash
# Um simples exemplo de Azure storage

export AZURE_STORAGE_ACCOUNT=<storage_account_name>
export AZURE_STORAGE_ACCESS_KEY=<storage_account_key>

export container_name=<container_name>
export blob_name=<blob_name>
export image_to_upload=<image_to_upload>
export destination_folder=<destination_folder>

echo "Criando um container..."
azure storage container create $container_name

echo "Upload a Imagem..."
azure storage blob upload $image_to_upload $container_name $blob_name

echo "Listando os blobs..."
azure storage blob list $container_name

echo "Baixando a imagem..."
azure storage blob download $container_name $blob_name $destination_folder

echo "Finalizado"

Script Exemplo de Upload

Exemplo de script para fazer um Upload para um Storage Blob. Neste exemplo partimos do princípio que já temos uma Storage Account criada, e este não é público e sim privado, então ele possui uma chave, e dentro desse Storage Account já temos um Container criado, e dentro dele, um Storage Blob criado.

#!/bin/bash
# Faz upload do conteúdo da pasta NUVEM para o Azure.

export AZURE_STORAGE_ACCOUNT=nome-do-Storage-Account-que-criou
export AZURE_STORAGE_ACCESS_KEY=Número-da-chave
export container_name=nome-do-container-que-criou
export blob_name=nome-do-blob-que-criou
export source_folder=/pasta/de/sua/maquina ou servidor/arquivo

for f in $source_folder
do
 echo "Uploading $f file..."
 azure storage blob upload $f $container_name $(basename $f) $AZURE_STORAGE_ACCESS_KEY
 cat $f
done

echo "Listando os Blobs..."
azure storage blob list $container_name

echo "Finalizado"

Agora é só agendar no Cron e pronto. Saiba mais abaixo:

cron

Outro artigo que pode interessar:
Script Para Backup – Compactado com Tar e Gz, com Timestamp – Agendado via Cron

Em breve também falarei de como gerenciar outros serviços do Azure como a criação de máquinas virtuais. Mas por hoje é só.

Abraços,

Cleuber

fontes: storage-azure-clixplat-cli-installxplat-cli-connectazure-cli-arm-commandsvirtual-machines-command-line-toolsstorage-use-azcopy, github.

About Cleuber

Cleuber Silva Hashimoto. Administrador

Leave a Reply

x

Check Also

Elementary OS 6 Odin Lançado – Confira as Novidades

Desenvolver um sistema operacional não é ...