No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

15 Días
4 Hrs
23 Min
32 Seg

Creación de nuestro Backend con Terraform

20/27
Recursos

Aportes 15

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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 “terraform 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=“profile=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.

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"}
}

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

solucion error del init: terraform init -backend-config="bucket=bucket name" -backend-config="key=dev" -backend-config="region=us-east-1" -backend-config="shared\_credentials\_file=C:/Terraform/curso/.aws/credentials"

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

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