Para los que tengan problemas ejecutando terraforn init con el backend:
- Deben crear una política que les permita tener acceso al bucket.
- Deben exportar las credenciales como variables de entorno (no se si haya otra forma).
Conocer qué es infraestructura como codigo
Infraestructura como código
Tipos de herramientas para implementar infraestructura como código
Beneficios de la infraestructura como código
Entender qué es Terraform
¿Qué es Terraform?
Terraform versus otras herramientas de infraestructura como código
Aprender a usar Herramientas para construir infraestructura inmutable
Packer: elementos y comandos
Packer y Terraform en Windows
Credenciales de AWS en Windows
Packer: Demo
Docker: Conceptos clave
Docker: Demo
Primeros pasos con Terraform
Instalar terraform y configurar una cuenta de AWS en Mac
Definición en código: Sintaxis y elementos de Terraform
Proveedores de la nube con los que puede interactuar Terraform
Profundizando en Terraform
Archivos de definición y variables
Interpolación, condiciones y ciclos
Security Group
¿Cómo gestiona terraform el estado de la infraestructura?
Archivos de estados
Archivos de Backends
Creación de nuestro Backend con Terraform
Reutilizar las definiciones de terraform
Encriptado de nuestro backend
Tips de la vida real: Trabajo en equipo con backends
Módulos locales
Módulos remotos
Práctica final y cierre
Demo
Demo II
Cierre del curso
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
Paga en 4 cuotas sin intereses
Termina en:
Yolanda López
Aportes 15
Preguntas 2
Para los que tengan problemas ejecutando terraforn init con el backend:
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
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 ?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?