Linux

Rapida comparação de preços de máquinas virtuais cloud nas principais empresas – maquinas minimas.

Comparar somente os preços pode ser uma armadilha para algumas aplicações. Há diversas diferenças entre cada empresa. A DigitalOcean cobra o mês cheio. A Amazon e o Google por Hora mas cada tem um tempo minimo de uso diferente. IP Fixo pode ser cobrado em um e outro não assim como direcionamento DNS.

Alguns tem disponibilidade total da CPU outros por burst somente. Isso quer dizer que você não poderá rodar uma aplicação contínua com muita eficiência em máquinas burst pois elas disponibilizam um ‘quantum’ de CPU por segundo e se passar o crédito somente no próximo segundo.

Há diferenças de memória, armazenamento e tipo de armazenamento. O local da infraestrutura também é importante devido ao custo de rede e tempo de acesso.

Mas se é somente para um site simples, uma aplicação para poucos usuários, armazenamento de menos de 50G, ou mesmo para aprendizado aproveite as opções de uso Free Tier ou mais barato e viva feliz.

Veja que se for uma aplicação que começa pequena mas um dia poderá crescer é bom escolher uma empresa que facilite o escalonamento. Imagine que você começa com uma máquina simples e seu produto ou site da certo e precisa de mais CPU e Memória? Simplesmente mudar para um tipo de máquina mais potente iria facilitar muito.

Atenção: Este mercado é competitivo e sempre há novidades. Talvez este post fique desatualizado rapidamente.

Como imagens dizem mais que palavras seguem os screenshots das máquinas virtuais minimas da Google, Amazon, Microsoft e DigitalOcean.

Vamos as imagens:

 

Google

O google oferece créditos de uso de $ 300,00 e isso permite rodar por exemplo uma máquina para machine learn com GPUs por um mês ( e se esquecer ligada falir seu bolso ). Também tem descontos para quem usar continuamente a máquina. 

Google

 

Microsoft

Máquinas Linux são mais baratas. Uma vantagem que vi na Microsoft são máquinas mais potentes pelo mesmo preço e um site mais intuitivo de usar. Mas nunca usei para dizer algo mais.

azure

Amazon

A queridinha do mercado tem um programa de uso livre (Free Tier) por um ANO em máquinas t1-nano. Acredite é gratuito mesmo. Máquinas no Oregon são mais em conta porém tem ping lento para nós (obviamente) e em São Paulo o preço é ligeiramente maior porém com a vantagem do acesso local mais rápido.

aws-oregon

aws-sãopaulo.png

DigitalOcean

Antes era o preço mais em conta porém a Amazon baixou os preços e ficaram iguais. Agora com Google e Azure a DigitalOcean ficou ali no meio dos grandes. O que gosto é do painel de uso muito mais fácil de usar que a Amazon e o Google. Porém você será cobrado mesmo com o servidor desligado. A DigitalOcean tem um programa de affiliados simples para quem quer ganhar créditos indicando seus produtos. Por isso você encontrará sites falando muito bem dela por ai!

digitaocean.png

Samba VirtualBox NT_STATUS_WRONG_PASSWORD

O Samba pode te fazer perder horas. Recentemente o VirtualBox começou a dar problemas com as pastas compartilhadas – Shared Folders – e alguns arquivos não abriam ou outros abriam corrompidos.

Fui atrás e o pessoal do VirtualBox explica que o serviço de incluir uma pasta de fora da máquina virtual (Guest) é básico e simples e que o correto e mais indicado seria usar NFS ou o Samba.

Pois bem, fui atrás de configurar o Samba. Como as pastas compartilhadas eram sensíveis resolvi colocar autenticação por usuário.

É o famoso:

[pasta]
        path = /home/carlos
        comment = Minha pasta
        writable = yes
        valid users = carlos

Porém nada do WinXP logar no samba no Linux. Habilitei o log nível 3  – dica: use tail * -f na pasta de logs para acompanhar o processo de login – e achei os famigerados NT_STATUS_WRONG_PASSWORD. Para resolver qualquer problema de acesso ao Samba você acha na internet aos montes pessoas adicionando o conhecidíssimo Bad User e outras formas habilitando o acesso guest e nobody soluções que liberam o Samba para o mundo. Lembre-se que eu preciso de acesso restrito as pastas.

Solução

O problema do WinXP acessando o Samba é que o WinXP usa por padrão authenticação LM & NTLM e o Samba depois do 3.6 não aceita esta forma de autenticação – o Windows XP é velho.

Para resolver isto ou você muda o WinXP para NTLMv2 ( veja como aqui ) ou adiciona a seguinte linha no smb.conf

ntlm auth = yes

 e pronto!

Meu smb

Para consulta segue a seção [Global] do meu smb.conf

[global]
 workgroup = workgroup
 server string = SambaNotebook
 netbios name = Arch
 security = user
#map to guest = bad user
 dns proxy = no
 wins support = yes
 username level = 2
 log level = 3
 log file = /var/log/samba/samba.log.%m
 max log size = 50
 debug timestamp = yes
 username map = /etc/samba/smbusers
 passdb backend = smbpasswd
 smb passwd file = /etc/smbpasswd
 ntlm auth = yes
 
; encrypt passwords = yes
; guest ok = no
; guest account = nobody

 

Edit – Nem tudo foi lindo

Pois bem. Depois de um tempo não funcionou mais. Então eu tirava esta linha, reiniciava o Samba, colocava novamente, reiniciava novamente, tentava e dava certo. Até que percebi que na verdade os pacotes da rede não estavam chegando do Windows virtualizado ao Linux.

Fui novamente atrás e achei estas informações (site em inglês) sugerindo que usemos uma segunda interface de rede no Virtualbox e no Windows que só permita ao Host acessar o Guest por esta interface nova.

Também não funcionou perfeitamente.

Liguei o Windows 7 também do VirtualBox e testei. Funciona perfeitamente sem problema algum o compartilhamento. Mudei meu ambiente de trabalho do Windows XP para o Windows 7 perdendo obviamente em memória disponível. Mas desativei tudo quanto é embelezamento do Windows 7 e até que ficou mais rápido que o Windows XP em alguns aspectos.

Sugestão: Esqueça o Windows XP e o Samba juntos.

ReEdit – Voltei ao Windows XP

Algumas coisas não funcionaram no Windows 7 e precisei voltar ao WinXp. Utilizei a solução descrita no site acima e há uma nota interessante: Quando você cria uma interface host-only no Virtualbox ela só estará ativa quando se ligar o Virtualbox. Como o Samba inicia no boot a interface ainda não existe então ele só fará Bind nas interfaces existentes. Para resolver isto ou você reinicia o serviço Samba ou faz um serviço para criar a interface host-only antes do Samba iniciar.

A linha de comando para criar a interface host-only é:

exec vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1

Feito isso. O mapeamento de pastas remotas em drivers no Windows XP voltou a funcionar.

AWS EC2 – Mudei do Ubuntu para o CentOS

“Aviso este artigo não usa língua culta. Acabei de sair da Deciclopédia e você imagina né?”

Por muito tempo usei o Ubuntu em servidores virtuais. Em casa a mais de 10 anos uso o ArchLinux. O Ubuntu para servidores não é ruim e é muito fácil a configuração e diversos scripts de configuração aceleram o setup e o repositório é completo.

Porém um dia desses ao instalar o Drupal deu um ‘PAU’ no mysql que corrompeu o banco de dados e fiquei a ver navios. Como era uma instalação tentei reinstalar tudo. Bom. Eu nunca gostei do apt-get afinal estou acostumado ao modo Arch de fazer as coisas. Fui então tentar reinstalar tudo novamente e a coisa ficou feia. Aquele dpkg não desinstalava as ‘coisas’ por completo então quando eu fui tentar instalar novamente dava conflitos … arhhh!

Até que descobri o CentoOS. Que maravilha! Aquele Yum é rapidinho! Nada de ficar atualizando man pages. Só puxava o necessário. Downloads rápidos. Descompactação veloz! Adorei.

Mas tenho algumas ressalvas quanto a ele:

  • Não consegui instalar o Drupal em uma instância t2.nano. Sempre que rodava o install.php o mysql morria por falta de memória???? Isso nunca me aconteceu no Ubuntu. Tentei criar um swapfile mas não dava certo. O Swapon dizia que o parametro era errado. Nunca vi isso.
  • As configurações não são interativas. não existe a2enmod, a2ensite. É tudo manual. Mas não tenho problemas com isto já que uso o Arch. Mas para alguns pode ser.
  • O repositório é conservador. O PHP disponível no repositório oficial não é suportado pelo Drupal. Tem que adicionar outros repositórios. Isso assusta no começo.
  • O SELinux é loucura!!!! Erros estranhos acontecem com ele. Como tentar gravar em um local com todas as permissões corretas mas o SELinux não deixa. Então preste atenção a isto. O SELinux é muito útil, mas uma fonte de erros estranhos se não for compreendido.

Pessoalmente recomendo o CentOS. E de fato ele é muito usado em servidores.

 

 

AWS EC2 – Mudei de São Paulo para o Oregon

Pelo simples motivo que o valor de uma instância t2.nano em São Paulo é quase o mesmo preço de uma t2.micro, ou até com mais um pouco de grana uma t2.small no Oregon. Veja na tabela abaixo de 16.Fev.2017 :

captura-de-tela-de-2017-02-16-15-23-49

captura-de-tela-de-2017-02-16-15-23-43

Vejamos

Uma instância t2.nano em São Paulo custa 0.0101 $/h enquanto no Oregon 0.0059 $/h. O custo para 720 horas – 1 mês de uso – para São Paulo é 7.272$ e no Oregon 4.248$.

Uma instância t2.micro no Oregon custaria 8.64$ por somente um Dólar a mais, então é melhor pegar uma instância no Oregon não acha?

Tabelinha

Local t2.nano 720 Horas
São Paulo 0.0101 7.272
Oregon 0.0059 4.248
Local t2.micro 720 Horas
São Paulo 0.02 14.4
Oregon 0.012 8.64

Mas …

O Ping é bem maior no Oregon para cá, sem dúvida. No terminal SSH em São Paulo parece que estou localmente. No Oregon há um atraso perceptível. Isso limita o uso para algumas aplicações. Este é um problema também com a DigitalOcean e qualquer servidor fora do Brasil.

Entretanto os downloads dentro da região (America Norte) ficaram muito, mas muito mais rápidos. 

Outro destaque é que houve alguns apagões nas ‘nuvems’ AWS dos EUAs; coisa de 8h fora do ar.

AWS EC2 – Montando volumes EBS em sua máquina local usando sshfs

Quebra o galho. Para isso montei um script BASH para conexão as instâncias remotas que automaticamente monta o volume EBS no meu sistema de arquivos local e abre uma sessão SSH:

con.sh:

#!/bin/bash
url=$1
sshfs [USUÁRIO]@$url:/    /[LOCAL] -o IdentityFile=~/.ssh/AWS-Instance1.pem &
ssh -i ~/.ssh/AWS-Instance1.pem [USUÁRIO]@$url

Vamos entende-lo e configurá-lo para sua instalação:

  • url=$1 –  Permite você especificar o DNS dinamico da Amazon de sua instância caso você não tenha um Elastic IP associado. Neste caso você invocará o script assim: ./con.sh ec2-52-67-85-194.sa-east-1.compute.amazonaws.com 
  • [USUÁRIO]@$url:/ – [USUÁRIO] deverá ser substituído pelo usuário remoto. No CentOs é o ‘centos’ no Ubuntu é o ‘ubuntu’. O “: / é local remoto onde você quer montar. Neste script montei tudo. Mas pode ser /var/www por exemplo.
  • /[LOCAL] É onde será montado em sua máquina o volume EBS. Alguns montam em um subdiretório em /mnt outros em /media. Exemplo /media/centosec2
  • ~/.ssh/AWS-Instance1.pem – É o arquivo de chave de acesso ao servidor remoto SSH. Supondo que você usa este método de segurança.

Como usar:

$ ./con.sh ec2-52-67-85-194.sa-east-1.compute.amazonaws.com 

Confira no navegador de arquivos se apareceram as pastas. Se montou mas não apareceu pode ser problemas com Udisks.

Requerimentos:

  • Fuse tem que estar instalado na sua máquina e o pacote fuse-sshfs também.
  • O servidor remoto tem que ter o serviço SSH rodando em suas configurações padrão tanto para Ubuntu como CentOS.

 

AWS EC2 – Como ter endereço IP fixo em um instância?

 

Este é outro serviço e é tarifado. Mas calma! é muito barato. Eu até agora (e a muito tempo) não passo de $0.01 por mês de custo não tenho certeza se já vi $0.04.

 

Vamos-lá!

Estando no console web EC2 – onde se administra suas instâncias -. No menu esquerdo acha-se o Elastic IPs conforme figura abaixo.

Captura de tela de 2017-02-08 18-28-39.png

Clique em Allocate new address (o botão azul) e um IP fixo se torna disponível conforme abaixo:

Captura de tela de 2017-02-08 18-32-56.png

Clique com o botão direito no IP criado e na opção Associate address é onde você ira ligar o IP fixo a uma instância sua rodando. Na pŕoxima tela você irá confirmar a associação.

Captura de tela de 2017-02-08 18-35-50.png

Selecione sua instância e o IP privado que será associado a ela e pronto! Se tiver dúvidas quanto ao custo – e eu tive no começo – . Abra a janela de custos – Billing –  e vá acompanhando por algumas horas e dias para ver quando custará.

É o Dólar está caro! Mas 1 centavo não pesa! EDIT: (Já não esta mais. É a gasolina que está)

Não adianta hacker este IP. Eu criei e apaguei logo em seguida –  e não custou nada.

AWS EC2 / DigitalOcean– Aonde consigo certificado SSL gratuito?

Deu sorte!

O site Let’S Encrypt fornece certificados SSL gratuitos por 3 meses renováveis por enquanto indefinidamente.

Há um programa que automaticamente registra no site, faz download do certificado e muda suas configurações apache habilitando https com certificado.

O programa fica em outro site o CertBot . Escolha seu servidor web e a distribuição e siga as orientações.

Captura de tela de 2017-02-08 18-21-39.png

Moleza …

 

AWS EC2 – Qual a diferença entre Stop e Terminate?

Terminate coloca fogo na sua casa. Ele desliga o servidor. Apaga a imagem EBS e adeus conteúdo.

Stop depende. Se o comportamento de desligamento estiver para Parar (STOP) a instância o servidor apenas desligará e seu volume EBS ainda estará lá. Isso quer dizer que nada será perdido. Basta rodar novamente (running). Mas se a opção de desligamento for a de Terminar (Terminate) ao comandar Stop diga adeus ao seu volume EBS ligado a instância.

Para ver isto clique com o botão na instância e siga em Instance Settings -> Change Shutdown Behavior e o popup igual à figura abaixo irá aparecer para mudar e conferir o comportamento padrão ao comandar STOP.

captura-de-tela-de-2017-02-08-17-58-14

AWS EC2 – Se eu parar (Stop) uma instância serei cobrado?

Inaugurando artigos sobre Cloud Servers.
Não e sim. Você ainda será cobrado por volumes EBS, Elastic IPs, Route 53 e outros recursos. Mas é claro, a não ser que você tenha um volume gigante os custos de mante-los serão muito baixos comparados à instância rodando (running).
Eu faço muito isso. Crio instância, paro, vou tomar café, dormir, rodo faço alguma configuração, paro novamente. Até que o servidor esteja de fato público – se este for o caso.

Dois IDEs que gosto e dois que odeio

No princípio você descobre o Dev-C++ começa a programar e os bugs te atormentam. Não lembro quais são eles mas me fez procurar alternativas e encontrei o caso de amor:

Code::Blocks – O profissional

Feito para ser uma alternativa ao Dev-C++ já deixou de ser alternativa e se tornou regra. Evoluiu muito e tem cada vez mais agregado funcionalidades úteis.

Captura de tela de 2016-07-01 19-47-20 - 1.png

Como se pode ver na figura os Templates são variados e nos ultimos releases há uma busca pelo desenvolvimento embarcado se aproveitando das diversas plataformas suportadas pelo GCC e o SDCC.

O Code::Blocks suporta desde o começo muitos compiladores. No Windows o download já vem embutido o Mingw ou TDM-GCC.

Eu uso ele profissionalmente para desenvolvimento C/C++ para as plataformas ARM (STM32 ou Kinetis) e AVR bem como x86. Deu um pouco de trabalho a configuração inicial dele para STM32 mas foi gratificante e muito instrutivo.

Captura de tela de 2016-07-01 19-59-01.png

O que mais gosto nele é facilidade de configuração e início médio. Eu odeio programas lentos como se verá nos que odeio. Mas ainda há uma opção veloz …

Geany – O pequeno poderoso

Eu adoro o Geany. É o IDE perfeito para testes rápidos e desenvolvimentos descompromissados. Diferente do Code:Blocks ele suporta diversas linguagens e tenho usado muito ultimante para Python.

Apesar de ter a opção de criar projetos o que me atrai nele é justamente você poder criar um arquivo, digitar o código e botar para rodar diretamente sem maiores burocracias. Por isso é perfeito para testes.E ao fechá-lo e abri-lo posteriormente as abas estarão lá abertas novamente.  Na verdade um projeto é nada mais que organizar seus arquivos em pastas que são navegáveis no painel “Aquivos” ao lado. Se o projeto cresceu então junte tudo em uma pasta e trabalhe com ela.

Captura de tela de 2016-07-01 20-03-43.png

E o inicio é rapido!

Como eu gosto disto! Clicou abriu! E o terminal embaixo? Quebra um galhão. Com um suporte a debug  ele pode até substituir o Code::Blocks.

linux_dark_1-24_weblinux_dark_1-24

As caras são muitas ao Geany para todos os gostos. Acho bonito programar em escuro mas não consigo me acostumar.

Os que odeio

Eclipse – Lerdeza

Pelo amor de Deus … como demora esta coisa para iniciar. Fiquei injuriado quando a Freescale mudou sua IDE para variantes Eclipse. Clicava em debug e aquela coisa ficava pensando … pensando … indexando. Que horror. Por isso fiz um esforço e aprendi a configurar o Code::Blocks para ARMs.

Essa tendência de se fazer IDEs baseadas no Eclipse para mim foi um desastre. A Texas fez isso, a Freescale e a ST esta indo no caminho. Sim, sim sei que o Eclipse é muito versátil mas convenhamos muito lento.  Certeira foi a Atmel que partiu para uma solução Visual Studio.

plc2-2015-your-own-ide-4-638

E aquela burocracia para se criar um projeto???? O sujeito que programa para sistemas embarcados em Eclipse se aprender diretamente nele se torna dependente do mesmo; porque não terá a menor noção de como se programa para uma plataforma: que comandos, que bibliotecas, que caminhos, como usar os comandos de debug. Tudo isso fica escondido em trezentos cliques que da medo e preguiça de mexer.

Se você usa o Eclipse e não tem a menor idéia de como as coisas funcionam por favor veja neste post como se programa “na mão”  um STM32.

Descobri neste site http://www.ihateeclipse.com  que não sou o único!

Vim/VI – O Geek

Fui atrás de um screenshot deles no Google e o que acho? Curiosamente mais destas imagens que do próprio em questão. Isto já diz tudo:

vi-vim-cheat-sheet

Ai vem aquele moleque que quer ser diferente e se acha o maior por usar um desses.

A primeira instalação que fazia em algum Linux novo  – antigamente pois depois do ArchLinux nunca mais fiz instalação nova – era o MCEdit para evitar ter que editar arquivos de configurações nesta !@#$!. Aliás como se sai mesmo dele?  Era algo como ESC-Q!.

Eu não odeio o Terminal. Eu adoro o modo texto! Uso demais o Guake (terminal suspenso), mas perder meu tempo aprendendo esses atalhos se posso usar um IDE mais robusto não é comigo.

Fazer um esforço para aprender estes comandos para mim é uma perda de tempo se posso aprender muitas outras coisas mais úteis. De fato no momento estou fazendo um esforço para escrever robôs investidores em Forex e Bolsa e estou adorando o tema em torno de processos estocásticos. O Geany e o Metatrader estão sendo perfeitos para isso.

main-qimg-cf12b776c0e69ec6d30a47b0d90792d9

Geração dodói

Se você programa nestas coisas parabéns te admiro, mas não me pertube.