Serviços de nuvem – a tal da cloud – já são uma realidade há alguns anos. O grande nome do momento ligado ao assunto é Internet das Coisas, também conhecido como IoT ou Internet of Things. Geralmente quando nós, da eletrônica, pensamos em nuvem, a primeira coisa que vem à nossa cabeça é ligar diversos dispositivos eletrônicos a ela e enviar os dados para serem visualizados, armazenados e analisados – e muitas outras possibilidades.
O que costumamos não perceber é que a nuvem pode ser muito mais do que uma ferramenta de IoT ou algo que somente grandes empresas têm acesso. É possível beneficiar-se da nuvem para tarefas do dia a dia. E esta foi a motivação para escrever o artigo – pegar uma tarefa demorada e usar a nuvem para facilitar a nossa vida!
Como já tenho certa familiaridade com a plataforma Azure, que é a nuvem da Microsoft, vou mostrar como provisionar uma máquina virtual Ubuntu Server 16.04 LTS (sim, máquina Linux na cloud da Microsoft!) no Azure e usar o Yocto/OpenEmbedded para gerar uma imagem de Linux Embarcado igual à imagem padrão disponibilizada para o computador em módulo Colibri iMX6 da Toradex. Vamos fazer então um build de Yocto na nuvem!
Cadastro no Azure
O primeiro passo é acessar portal.azure.com e registrar sua conta Microsoft ao Azure.
Criando a máquina virtual
Com isso, basta seguir este artigo de documentação do Azure para criar rapidamente sua máquina virtual.
Dica 1: no terminal do seu computador, após gerar uma chave de autenticação com o comando abaixo:
ssh-keygen -t rsa -b 2048
Você vai precisar copiar a chave pública de autenticação. Basta copiar o conteúdo do arquivo “id_rsa.pub”. Execute o comando abaixo e copie a saída dele:
cat ~/.ssh/id_rsa.pub
Dica 2: quando você acabar o passo “Connect to Virtual Machine”, pode parar. Não precisa instalar o NGINX como está descrito no artigo do Azure.
Fazendo build do Yocto
Com acesso à VM via ssh, é possível preparar o ambiente para fazer a build. Para isto, você pode seguir este artigo do site de desenvolvedor da Toradex.
Dica 1: o artigo é grande, mas você só precisa seguir as seções: “Prerequisites” – para Ubuntu 16.04; “Installation – Setup/Configure”; “Installation – local.conf” – para selecionar o Colibri iMX6; e “Building”.
Dica 2: quando a VM é iniciada, ela tem um disco (SSD) de 30GB onde fica instalado o sistema operacional. Há também um disco volátil na pasta /mnt, e o seu tamanho varia conforme a configuração de VM que você escolhe.
Nota: o disco de 30GB onde fica instalado o sistema operacional pode ter seu tamanho aumentado.
É rápido?
O teste foi realizado para a primeira build da imagem angstrom-lxde-image, o que inclui fazer o download e compilação de todos os pacotes, e baixar a imagem da nuvem para o computador de desenvolvimento.
Vou usar como base o notebook em que trabalho, que tem um desempenho razoável. Ele tem um Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz, com 8 núcleos virtuais (o processador tem 4 núcleos), 8GB de RAM e um disco SSD para fazer as builds. Começando uma build do zero, o tempo total da primeira build é de 4 horas.
Na Azure, foram provisionadas duas VMs: uma com a configuração mais simples possível (Standard DS1 v2), com 1 núcleo Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz, 3,5GB de RAM e disco SSD; a outra com a configuração mais potente disponível para a conta de Microsoft Partner, com 8 núcleos Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz, 28GB de RAM e disco SSD. O tempo total da primeira build é de 12 horas para a configuração mais simples e 1 hora e 30 minutos para a mais potente.
Nota: há VMs mais potentes para outros tipos de conta.
Nota 2: o tempo de download da imagem compilada, da nuvem para o computador local, é muito pequeno (< 3 minutos) para uma taxa de download de cerca de 1MB/s.
|
Máquina |
Tempo para o Build Completo |
Custo por Hora |
Custo Total |
|
Máquina Local Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz |
4 horas |
– |
– |
|
Azure Simples 1 Núcleo Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz, 3,5GB de RAM e disco SSD |
12 horas |
R$ 0,274/hora |
R$ 3,29 |
|
Azure Top 8 Núcleos Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz, 28GB de RAM e disco SSD |
1,5 Horas |
R$ 2,19/hora |
R$ 3,29 |
É barato?
A máquina virtual mais simples utilizada tem custo de R$0,274/hora, enquanto a máquina mais potente custa R$2,194/hora. Temos então o custo total da primeira build sendo aproximado em R$3,29 para ambas as configurações de máquina. A tabela de custos para todas as configurações pode ser encontrada nesta página do Azure.
Tenho à disposição uma conta do tipo “Microsoft Partner Network”, que dá direito a USD100,00 por mês, o que convertido para reais é equivalente a R$375,00 em créditos do Azure no momento em que este artigo foi escrito – mais do que suficiente para fazer todas as builds necessárias ao longo de um mês.
Dica: ao acabar de fazer uma build, é preciso desligar a VM para que os créditos não sejam mais consumidos. A ideia é pagar pelo uso e, por isso, também é preciso tomar cuidado para não esquecer uma VM ligada durante o fim de semana, por exemplo.
Dica 2: há funções de auto-desligamento da VM, assim você pode programar essa salvaguarda caso esqueça de desligar a VM manualmente.
Nota: os valores de hora apresentados no site da Microsoft não incluem impostos de transações internacionais, e taxas de câmbio podem variar. Também há o uso de outros serviços em conjunto com a VM, como atribuição de IP e armazenamento de dados.
Conclusão
Tendo em vista o tempo de build, que é muito rápido quando se escolhe uma VM turbinada, e seu custo/hora muito baixo, fica claro que o uso desta ferramenta não só é recomendado como pode trazer grande economia – ou maior eficiência para um funcionário/autônomo, já que as horas de trabalho economizadas custam muito mais do que as horas da VM. Dentre os benefícios também podemos considerar o fato de evitar o desgaste da máquina pessoal, continuar trabalhando em outras tarefas sem que a máquina pessoal fique lenta e também o fato de poder fazer diversas builds ao mesmo tempo, sem restrições de hardware.
Com as dicas e o estudo de caso montados neste artigo, espero que as informações apresentadas tenham sido úteis. Até a próxima!









Muito legal a dica Léo.
Da pra agilizar bastante o processo.
Uma vez fiz um build de yocto numa VM da Google, se não me engano tinha 16 cores e deu em torno de 30 min o build.
O negócio é bruto mesmo! Queria poder provisionar uma com mais núcleos também :p