No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Creaci贸n de nuestro Backend con Terraform

20/27
Recursos

Aportes 14

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Para los que tengan problemas ejecutando terraforn init con el backend:

  1. Deben crear una pol铆tica que les permita tener acceso al bucket.
  2. Deben exportar las credenciales como variables de entorno (no se si haya otra forma).

Que es un bucket?

Recuerden que los nombres de los buckets deben ser unicos en todo aws. A ra铆z de esto pueden tener problemas al ejecutar el comando 鈥渢erraform init鈥 si alguno de nosotros tiene creado ese bucket en aws.

C贸mo se puede manejar el backend para varios ambientes, dev y prod?

Los que tiene problemas para crear el bucket, la forma actualizada 2022 es la siguiente:
Tres archivos
Main. tf ---- variables. tf ------ providers. tf

Contenido de los archivos:
main. tf

resource "aws_s3_bucket" "b" {
  bucket = "NOMBREDELBUCKET"

  tags = {
    Name        = "Mi bucket"
    Environment = "Dev"
  }
}

resource "aws_s3_bucket_acl" "example" {
  bucket = aws_s3_bucket.itt.id
  acl    = "private"
}

variables. tf


variable "aws_access_key" {
default = "TULLAVE"
}
variable "aws_secret_key" {
default = "TUSECRET"
 }
variable "aws_region" {
    default = "LAREGION"
}

providers. tf


provider "aws" {
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region = "${var.aws_region}"
}
 

terraform init -backend-config=鈥減rofile=myProfileAws鈥

Cuando hay mas de un perfil de AWS en el pc, hay q decirle a Terraform el perfil a utilizar, si no da acceso denegado ya que use el profile default

No estoy seguro que se diga ENCRIPTACION en Espa帽ol, la forma correcta que he visto en la mayor铆a de ocasiones es CIFRADO.

Holi, les quiero compartir la manera que pude realizar el terraform init

# Consideraciones: 
# - Nombre de bucket S3 debe ser unico
# - Cuidar que nombre de S3 ya exista antes de ejecutar el terraform init para el backend
# - Nombre del bucket S3 en backend.tf debe ser el mismo que el creado
# - A la fecha del comentario, no es necesario especificar el atributo ACL del recurso S3 馃憣

# 1. Terraform init con los archivos bases (excluyendo backend.tf)
terraform init

# 2. Crear bucket s3
terraform apply -auto-approve

# 3. Crear backend.tf e inicializar terraform
terraform init

Al ejecutar el terraform init me generaba el error de que el bucket no existe.

Entonces, me funcion贸 generar primero el bucket usando el aws-cli:

aws s3api create-bucket --bucket "my-bucket" --create-bucket-configuration LocationConstraint=us-east-2

y luego el comando terraform init se ejecut贸 sin problemas

el tag de acl dentro en la declaraci贸n del recurso ya est谩 deprecado, por lo que hay que crear par de recursos adicionales para poder proceder con la craci贸n del backend privado

Para m谩s info, seguir este link:

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_acl

Yo tambien estaba teniendo problemas para crear el bucket con el nombre de backend-terraform-platzi. El error que me daba era este:

Error: creating Amazon S3 (Simple Storage) Bucket (backend-terraform-platzi): BucketAlreadyExists: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.

Al parecer los buckets deben de tener un nombre unico en AWS, asi que lo que hice fue cambiar el nombre por uno distinto pero unico y volver a ejecutar el comando terrform init y despues terraform apply -auto-approve

Muy mal que no indiquen al ejecutar terraform init se deba configurar permisos en la creacion del bucket en AWS

Para los tengan problemas al crear el bucket, el archivo state se guarda en un bucket que tengas creado anteriormente, estaba colocando el nombre backend-terraform-platzi tanto en la definicion de la variables como en el backend.tf

Vendr铆a a quedar masomenos as铆
backend.tf

terraform {
  backend "s3" {
    bucket = "platzi-aws" # nombre del bucket que ya tengas creado, aqui es donde se guardar谩 el archivo de estado
    key    = "dev"
    region = "us-east-2"
  }
}

y en variables.tf

variable "bucket_name" {
  default = "backend-terraform-platzi" # el nombre del bucket a crear
}

variable "acl" {
  default = "private"
}

variable "tags" {
    default = {Environment = "Dev", CreatedBy = "terraform"}
}

esta configuraci贸n hecha la hago fuera de mi carpeta de aws donde ya lance mi ec2 y mi sg ?