Vamos ver neste artigo a utilização da função User Data dentro da EC2 que nos permite a automação de alguns processo e a padronização de processos.
Amazon EC2
Se você chegou aqui e não sabe ainda, o Elastic Compute Cloud, A.k.a EC2, é o serviço da AWS que permite a criação e administração de máquinas virtuais (chamadas de instâncias no mundo cloud), uma grande parcela de coisas que são criadas em um ambiente cloud, geralmente são máquinas virtuais.
Se quiser conhecer um pouco mais sobre EC2 e os outros serviços principais da AWS você pode baixar o e-book gratuito “Os Principais Serviços da AWS“.
UserData
Dentro do serviço EC2, você consegue definir scripts que serão executados durante a inicialização da sua máquina, podemos incluir neste local scripts de inicialização feitos em bash ou utilizar esta entrada para executar outros comandos em python por exemplo.
Neste artigo vamos subir um serviço de host, de forma simples com alguns comandos, iremos subir uma página de PHP, sem necessariamente precisarmos entrar na máquina.
Primeiros passos
Entre no console da aws e pesquise por EC2
Vamos iniciar a geração de uma nova máquina, criaremos uma t3.Micro e usaremos a imagem linux da amazon, para iniciar a criação clique em:
Vamos selecionar a imagem linux e clique em select:
Selecione a t2.micro que é uma imagem elegivel no free tier para este nosso teste e clique em next.
Nesta tela, teremos algumas configurações para selecionar, como VPC, IAM Roles, mas vamos focar no final da tela, onde temos as definições dos comandos de script que irá executar na inicialização da máquina.
No campo do User data vamos colocar o script que irá configurar o httpd na máquina e iremos subir uma página php para ver o resultado no browser
#!/bin/bash
yum update -y
amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
yum install -y httpd mariadb-server
systemctl start httpd
systemctl enable httpd
usermod -a -G apache ec2-user
chown -R ec2-user:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} \;
find /var/www -type f -exec chmod 0664 {} \;
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
O código acima é um exemplo rápido para colocarmos no form de User Data, note que inicializamos de um script do tipo bash e rodamos comandos em sequência que fazem a instalação e configuração do httpd e banco da dados por exemplo.
As primeiras linhas, são para atualizar a imagem do linux e rodar comandos especificos da imagem linux da AWS, a partir disso, começamos a instalar o mariadb (Banco de dados) e iniciando o serviço httpd e colocando as permissões padrões de pasta, permitindo que os usuários do apache e da máquina possam operar sobre os arquivos.
Assim sendo, qualquer comando que você deseja ou necessite para preparar seu ambiente, este é o lugar. E não se limite, pois é possível executar comandos de outras aplicações por ele, como por exemplo, o aws-cli.
Agora, após a criação da máquina, pegue o DNS público da sua EC2 e coloque no browser, note que agora vamos ver o site de teste do apache.
No nossos comandos, subimos juntamente uma pequena página em php com algumas infos de sistema e jogamos ela no caminho root com o nome: phpinfo.php, sendo assim se colocarmos esse nome no browser, teremos o retorno de algumas informações da máquina.
Fácil, agora o mesmo procedimento servirá para você hospedar sua aplicação web.
Estas configurações ficam atreladas a máquina e sempre irá executar ao iniciar, então em um ambiente de escala de máquinas para suportar uma quantidade de acesso maior, as novas máquinas já ligaram e estarão prontas para servir, em todo caso isso envolve alguns outros assuntos, como AutoScalling, LoadBalance, Failovers, vamos ver isso em outros artigos.
Se você quiser aprender mais sobre cloud e como alavancar o seu software ou a sua carreira você pode participar do Bootcamp de Cloud, é um treinamento gratuito, online, ao vivo e prático onde você vai ter a oportunidade de colocar uma aplicação na nuvem e deixar essa aplicação com, no mínimo, 99,99% de disponibilidade usando as mesmas técnicas das empresas mais inovadoras do mercado como Netflix, Nubank, iFood e várias outras. Para participar CLIQUE AQUI e faça seu cadastro.
Abraços