O Terraform é uma ferramenta para construir, alterar e controlar a infraestrutura de forma segura e eficiente.
O Terraform pode gerenciar provedores de serviços existentes e populares como OpenStack, Azure, AWS, Digital Ocean, entre outras, bem como soluções internas personalizadas.
Os arquivos de configuração do Terraform descrevem os componentes necessários para executar um único aplicativo ou todo o datacenter, gerando um plano de execução que descreve o que será feito para alcançar o estado desejado e, em seguida, executá-lo para construir a infraestrutura descrita. À medida que a configuração muda, o Terraform é capaz de determinar o que mudou e criar planos de execução incrementais que podem ser aplicados.
A infraestrutura que o Terraform pode gerenciar inclui componentes de baixo nível, como instâncias de computação, armazenamento e redes, bem como componentes de alto nível, como entradas DNS, recursos SaaS, etc.
-
Fazer o download em https://www.terraform.io/downloads.
-
Descompactar o arquivo baixado no diretório C:\Windows\System32.
-
Testar a instalação, abrindo o terminal de comando e digitando terraform -h como no exemplo abaixo.
terraform --version
-
Caso o Git client não esteja instalado, baixar e configurar conforme instruções em https://git-scm.com/downloads.
-
Testar o Git client, abrindo o terminal de comando e digitando git como no exemplo abaixo.
git --version
-
Clonar repositório https://github.com/kledsonhugo/terraform-hello-world
-
Configurar no diretório terraform/.aws/ o arquivo credentials contendo a credencial de acesso para conectar na conta AWS.
-
Dentro do diretório terraform/ onde está seu código IaC, criar o diretório .aws/ e dentro dele criar o arquivo credentials contendo as credenciais de acesso, conforme o exemplo abaixo.
cd terraform-hello-world/terraform mkdir .aws/ touch .aws/credentials code .aws/credentials
-
Incluir as credenciais de acesso no arquivo .aws/credentials. O arquivo deverá conter o conteúdo conforme o exemplo abaixo.
[fiap-iac] aws_access_key_id = ASIAV2XAOBJRRVNBXJL2 aws_secret_access_key = ew0xROrRLYino1QRx9ds1UXM7iJUjwnx9E3T aws_session_token = FwoGZXIvYXdzEKv//////////wEaDF0S2MnqCAf5Z8Ov6yK9AaQG4G7B/TiV4VCqyJqJr9YA3n7802QTr92WYxKppnODY8d/8efpvPbU55555555555555555oqW7fqIh00s/lJTwbQ0HZRboKjNnoEXF5+c+8soOUfKEXjtuU8BLKi73Hq1GEiubqHdHbxTUgWL5nwF9222222222222222229Pn1z/6t46wUofOmHZu8qO37qfNh1K9G9qZjTQ/dvGSSnoSzk93uzbOgw4/KPnSjd0uSRBjIt3NiZ7TlpR/ie4GLu3r4k3YPBB3u4UoYbe3VBzxZ/OhBp1bVvH9FaCi4R8sN1
-
-
Configurar no diretório terraform/.aws/ o arquivo config contendo as informações abaixo.
touch .aws/config code .aws/config
-
O arquivo deverá conter o conteúdo conforme o exemplo abaixo.
[profile fiap-iac] region = us-east-1 output = json
-
terraform init
-
Validar o template:
terraform validate -json
-
Planejar a execução do código Terraform. Executar terraform plan.
terraform plan -input=false -out tfplan
-
Executar o plano do código Terraform. Executar terraform apply para criar os recursos.
terraform apply -auto-approve -input=false tfplan
-
Verificar as configurações dos recursos criados.
terraform show
Abrir a console de gerenciamento AWS, selecionar o serviço correspondente a cada recurso criado e validar se a configuração desejada foi satisfeita.
- Validar se a VPC foi criada com as configurações desejadas.
- Validar se o Internet Gateway foi criado com as configurações desejadas.
- Validar se a Sub-rede foi criada com as configurações desejadas.
- Validar se a Tabela de Roteamento foi criada com as configurações desejadas.
- Validar se a Tabela de Roteamento foi associada à Sub-rede desejada.
- Validar se o Security Group foi criado com as configurações desejadas.
- Validar se a instância EC2 foi criada com as configurações desejadas.
Destruir os recursos criados na conta AWS do SandBox.
terraform plan -input=false -out tfplan -destroy
terraform apply -auto-approve -input=false tfplan
Vídeo com a demonstração do Hello World
,.