Como criar um servidor na nuvem AWS com Terraform

Como criar um servidor na nuvem AWS com Terraform

Nesse post, vamos mostrar como criar um servidor na nuvem AWS com Terraform provisionando para ser usada posterior na execução do gerenciador de configuração Ansible.

A AWS (Amazon Web Server) é um provider com vários produtos que podemos utilizar em nuvem para modelos de projetos corporativo, educacional e ate mesmo pessoal.

O Terraform é uma ferramenta de provisionamento de recursos que pode ser configurado para criar desde servidores até gerenciamento de microsserviços sem servidor.

Como criar um servidor na nuvem AWS com Terraform

Há espalhado por toda internet muitos tutorias ensinando como criar uma instância na AWS, a maioria direcionado a distribuição Ubuntu, sendo assim, nesse post será direcionado a distribuição estável Debian GNU/Linux.

Esse projeto tem o objetivo de provisionar uma instância EC2 (Amazon Elastic Compute Cloud) com disco EBS (Amazon Elastic Block Store) de 20 GB e EIP (Amazon Elastic IP) IP estático.

Ao executar o comando terraform apply para criar o servidor EC2, será executado o script bootstrap.sh para configuração inicial setando o nome do host, redefinindo a senha do usuário Admin (usuário default do Debian) e mudando a configuração do ssh (sshd_config) para podermos ter acesso ssh posteriormente para execução do gerenciador de configuração Ansible, esse que ficará para um outro post.

1. Criar conta na AWS

Para poder executar o proposto nesse post, você deverá ter uma conta na AWS. Há muito material pela internet ensinando como fazer isso, não é um bicho de 7 cabeças, mas fique atento que você deverá ter um cartão de crédito válido para inserir na criação da conta.

Ofertas gratuitas da AWS

Ao criar sua conta na AWS, você terá 1 ano com recursos free, elegível no Free Tier, outros que sempre será gratuito e os gratuito para testar. Os recursos que não são elegíveis ao Free Tier, será cobrado de acordo com a tabela de preço da AWS. Fique atento!

2. Provisionar com o Terraform

O Terraform é uma ferramenta de IaC (Infrastructure as Code) criada pela HashiCorp além disso é software livre.

Ela é uma ferramenta de programação declarativa, que permite aos desenvolvedores usar uma linguagem de configuração de alto nível chamada HCL (HashiCorp Configuration Language) para descrever a infraestrutura na cloud ou em implementação local de estado final desejada para executar um aplicativo. Em seguida, ele gera um plano para alcançar esse estado final e executa o plano para fornecer a infraestrutura.

Para esse projeto, acesse meu Github e faça o clone do mesmo, modifique de acordo com sua necessidade.

Vamos ver alguns aspectos sobre o projeto terraform-aws-syspass nos 6 arquivos fundamentais que são:

terraform-aws-syspass Project
  • main.tf – Configurar o provedor de acesso AWS com seus parâmetros como região, perfil e credenciais de acesso.
  • ec2.tf – Setar o tipo de instância e tamanho do disco de armazenamento, escolher o sistema operacional, ligar a instância ao grupo de segurança, criar e alocar um IP estático a instância, e, por fim, configurar o tipo de conexão com chave de acesso AWS.
  • sg.tf – Gerenciar o grupo de segurança, cria quaisquer regras especificadas na configuração. Dessa forma, apenas as regras especificadas na configuração são criadas.
  • output.tf – Mostrar os valores de saída com informações sobre a infraestrutura criada como IP e DNS públicos.
  • variables.tf – Incluir alguns tipos de blocos para solicitar ou publicar valores nomeados. Um valor local atribui um nome a uma expressão, para que se possa usar o nome várias vezes em um módulo em vez de repetir a expressão.
  • config/sshd_config – Configuração modificada dos parâmetros para o acesso ssh.

3. Aplicar o projeto

Para aplicar o projeto, basta estar na raiz do projeto e executar os comandos terraform com as sintaxes a seguir:

  • init – Preparar o diretório de trabalho para outros comandos.
Terminal
terraform init
  • plan – Mostrar as alterações exigidas pela configuração atual.
Terminal
terraform plan
  • apply – Criar ou atualizar infraestrutura.
Terminal
terraform apply

Caso não queira mais o provisionamento, basta destruir os recursos.

  • destroy – Destruir a infraestrutura criada anteriormente.
Terminal
terraform destroy

Caso queira executar os comandos apply e/ou destroy sem digitar yes para a confirmação, acrescente nos comandos o parâmetro –auto-approve, assim após executar o comando será executado sem pedir a interação da confirmação, não tem volta!

  • –auto-approve – Ignorar a aprovação interativa do plano antes de aplicar.
Terminal
terraform apply --auto-approve
Terminal
terraform destroy --auto-approve

Então é isso pessoal. Vimos nesse post como criar um servidor na nuvem AWS com Terraform, assim você terá seu servidor em uma cloud e administrado via CLI (Command Line Interface) com uma linguagem declarativa fácil de entender com uma vasta documentação.