20 de Fevereiro de 2024 - @Walmir Neto
Quando mostrei Instalando OpenTofu eu usei o ‣ para instalar e por isso a primeira coisa a ser feita é dizer isso ao nosso projeto. Crie um arquivo no root do projeto .opentofu-version
com a versão do tofu que esteja usando, aqui vai ser 1.6.1
Vou criar uma pasta tofu
para separar a parte infra do projeto (Poderia ser qualquer outra pasta).
Dentro dela vou criar um .gitignore
com o conteúdo abaixo (Isso vai evitar versionamento de alguns arquivos desnecessários)
**/.terraform/*
# .tfstate files
*.tfstate
*.tfstate.*
# Crash log files
crash.log
# Exclude all .tfvars files, which are likely to contain sentitive data, such as
# password, private keys, and other secrets. These should not be part of version
# control as they are data points which are potentially sensitive and subject
# to change depending on the environment.
#
*.tfvars
*.tfvars.json
# Ignore override files as they are usually used to override resources locally and so
# are not checked in
override.tf
override.tf.json
*_override.tf
*_override.tf.json
# Include override files you do wish to add to version control using negated pattern
# !example_override.tf
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
# example: *tfplan*
# Ignore CLI configuration files
.terraformrc
terraform.rc
Dentro dela vou criar o primeiro arquivo, vou chamar de providers.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
profile = "walmir" # optional if you don't have this profile
region = "us-east-1"
}
Você vai precisar Configurando usuário Terraform na AWS caso não tenha feito ainda
Feito isso, você vai precisar entrar na pasta cd tofu
e rodar:
cd tofu && tofu init # to Prepare your working directory
Próximo arquivo é tofu/aws_instances.tf
para as instancias EC2
locals {
instance_ami = "ami-0c7217cdde317cfec"
instance_type = "t2.micro"
instance_tags = {
Name = "Ruby on Rails"
Project = "Ubuntu for Rails Demo"
}
}
resource "aws_instance" "demo_instance" {
ami = local.instance_ami
instance_type = local.instance_type
tags = local.instance_tags
}
Agora é só roda:
cd tofu
tofu validate # to validate if code is valid
tofu plan # to check if everything is ok
tofu apply -auto-approve # DON'T USE `-auto-approve` if you're not sure
Com isso deve lá no Console da AWS em instancias deve aparecer uma instancia, como na imagem abaixo
Caso queria desfazer tudo isso, é só rodar um cd tofu && tofu destroy
e a instancia deixa de existir
O código desse exemplo → https://github.com/owalmirneto/rails-demo/pull/9