SES – Send Email Service

2000 emails de graça por dia se enviar pela máquina virtual EC2, vamos ver como fazer isso.
Vamos usar o script ses-send-email.pl, ele usa alguns módulos do Perl que precisa instalar (no Readme manda usar o CPAN mas não funciona na micro-imagem da Amazon, tem que ser via yum mesmo):
yum install perl-Digest-SHA.x86_64
yum install perl-libwww-perl.noarch
yum install perl-IO-Socket-SSL.noarch
ses-send-email.pl -k /opt/aws/.aws -s teste -f [mail_from] [mail_to]
Antes de entrar em produção, precisa verificar os emails (pela console do AWS mesmo) que usará nos testes.
Para integrar com o sendmail, seguir o tutorial:
http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/index.html?IntegratingWithServer.Sendmail.html
Como ficou a última linha do meu sendmail.cf:
Maws-email,     P=/opt/aws/bin/ses-send-email.pl, F=mDFMuXn, U=smmsp, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, A=ses-send-email.pl -r -k /opt/aws/.aws -e https://email.us-east-1.amazonaws.com -f $f $u
Se for testar com o comando mail, lembrar de especificar um remetente (-r) verificado pelo SES.

Nuvem não é algo tão novo

Trecho da Business Week “December 13, 2007”:
“the tech team at The New York Times rented computing power on Amazon’s cloud and used Hadoop to convert 11 million archived articles, dating back to 1851, to digital and searchable documents. They turned around in a single day a job that otherwise would have taken months”
http://www.businessweek.com/magazine/content/07_52/b4064000281756.htm

Montando o CMDB

Depois de muita reflexão (e troca de ideias com o querido chefinho da época), cheguei a uma forma de conseguir estruturar o CMDB.
Primeiro vamos seguir o padrão e considerar que qualquer coisa é um item de configuração (Configuration Item – CI).
Cada CI pode estar relacionado com outro CI. Vamos deixar a hierarquia para os controles específicos. Na visão geral, simplesmente teremos um relacionamento N pra N entre CIs.
Na prática, o que precisamos é transformar cada item da infraestrutura (que pode variar de servidor até arquivo de configuração) em um CI, e criar uma base de relacionamento de CIs, que pode ser bem simples.

IP Fixo na nuvem

Vamos combinar, IP dinâmico é chato pra caramba. Por padrão, sua instância Amazon EC2 recebe dinamicamente um IP público e um privado, que você pode verificar pela Console ou por linha de comando:
curl http://169.254.169.254/latest/meta-data/local-ipv4
curl http://169.254.169.254/latest/meta-data/public-ipv4
Para obter um IP fixo você deve solicitar um Elastic IP. Esse IP será associado a sua conta e não a sua instância. Logo, você deve também associá-lo a sua instância.
Cuidado: se deixar um Elastic IP sem associar-se a uma instância, a Amazon irá lhe cobrar por inatividade (afinal, IP válido é um recurso limitado). Se você parar uma instância, a associação é automaticamente desfeita.
Vale lembrar que o Elastic IP pode ser associado a apenas uma instância, então seu controle de falha por exemplo teria que ser manual, associando o IP para outra instância.
Se precisar de Load Balance, precisa utilizar o AWS Elastic Beanstalk, os detalhes vou deixar para outro post.

Passos para criar um servidor na nuvem

Acesse http://aws.amazon.com/ e faça seu cadastro (Sign Up).
Preencha seus dados pessoais e de cartão de crédito (você só paga se usar algo não-gratuito).
O passo final do cadastro é uma validação telefônica. A Amazon te liga e você digita os 4 dígitos que estão na tela. Agora é só esperar o email de confirmação.
Acesse o console do AWS: http://aws.amazon.com/console/
Acesse o item EC2 no menu superior. Deve estar selecionado o item “Instances” no menu lateral. Na página principal, acesse o link “Launch Instance”.
Escolha a imagem do servidor (AMI), lembrando que as gratuitas tem .
Selecione o tipo e quantidade de instâncias (Micro e 1 para gratuito).
As opções seguintes podem ficar no padrão. Sugiro habilitar o Termination Protection. O campo User Data pode ser usado para inserir alguma informação que deseja acessar de dentro do servidor.
Escolha um nome e faça o download da chave PEM que será usada depois para acesso ao servidor.
O próximo passo é configurar o firewall, a porta 22 (SSH) já vem liberada para acesso ao console do servidor, insira também a porta 80 por exemplo para liberar acesso HTTP.
Agora vamos preparar o acesso ao servidor criando o arquivo PPK a partir do PEM. Vamos fazer isso utilizando o puttygen.

Importe o arquivo PEM salvo anteriormente e clique em Save private key.
Volte para console do AWS e clique na instância criada para copiar o Public DNS que será usado como Host Name no Putty.

Configure o usuário ec2-user para login.

Configure a chave, buscando o arquivo PPK e salve a sessão.

Agora você já tem acesso ao servidor, pode instalar os serviços utilizando o yum (yum list / yum install xxx). Lembre de fazer sudo bash para virar root.