You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
17 Hrs
45 Min
0 Seg

Despliegue del primer pipeline

16/21
Resources

How do I configure Terraform to integrate with AWS?

Configuring Terraform to work with AWS is a crucial step in the infrastructure automation process. The first step is to ensure that Terraform stores the tfstate file in a pre-existing S3 bucket. This bucket will be the repository that will store the state of our infrastructure, so it will be necessary to create it in the Amazon console if we have not already done so.

How do I get permissions and credentials?

In order for Terraform to interact with AWS, we need to configure our environment with the appropriate credentials. We need to create an Amazon user with administrator permissions and generate an "access key". There are several ways to store these credentials securely:

  • Configuration file: Use configuration files within an AWS directory to store the access key and secret key.
  • Amazon CLI: Work directly with the Amazon CLI (Command Line Interface) to manage credentials.

We should avoid storing credentials directly as parameters within the Terraform configuration file due to potential security issues. If we do so for testing purposes, we should always remember to delete such sensitive data afterwards.

What do the Terraform files used contain?

Terraform files are fundamental to defining the infrastructure to be created and managed. Each file corresponds to a component or set of components within our cloud architecture.

How do I configure CodeCommit and CodeBuild?

The configuration of CodeCommit and CodeBuild is done through their respective files:

  • CodeCommit: This simple file triggers the creation of a repository called CICD repository using CodeCommit.
  • CodeBuild: Defines the required roles and permissions. It is crucial to specify:
    • Who assumes the role (in this case, CodeBuild).
    • The specific actions and permissions to be granted.

How to obtain and integrate a Docker image?

When an integration needs to use a Docker image, as in the case of using a public image from Docker Hub, we need to connect and use specific credentials:

- Docker account credentials are integrated to facilitate the image download- Ensure that the credentials are stored in the appropriate configuration files.

What steps do you follow after configuring the files?

Once configured all Terraform files and services need to be aligned for proper execution. It is important to make sure the credentials are ready and our S3 bucket structure is configured.

How is the entire infrastructure orchestrated with CodePipeline?

To orchestrate the infrastructure, we use CodePipeline, which acts as the master controller that ties together various execution steps:

  • State Usage: Each step or state refers to an action, such as using CodeCommit to access Terraform code.
  • Attribute passing: Inputs and outputs between states ensure the necessary data flow.
  • Configuration in S3: The generated artifacts are stored in S3 buckets, according to the CodePipeline structure.

How are terraform commands executed?

To run terraform and apply changes to our infrastructure, commands such as terraform init, terraform plan and terraform apply are used:

  • Terraform init: Initializes the working directories and configures the environment.
  • Terraform validate: Checks the configuration files for errors.
  • Terraform apply: Applies planned changes to infrastructure, may include auto-approve flag to avoid manual commits.

The confidential use of logs generated during execution allows us to identify errors and adjust configurations in case of problems.

How do you synchronize with Git and deploy infrastructure?

To manage code and push changes with Git:

  1. Clone repositories: Use HTTPS to clone CodeCommit repositories.
  2. Add and commit changes: With git add and git commit commands.
  3. Push to the desired branch: With git push origin master you can synchronize the local job with the remote repository.

Once Git updates the repository, CodePipeline will automatically take the changes and run the predefined flows to apply the infrastructure in the cloud.

By configuring and running all these tools and services, we ensure effective CI/CD integration, which facilitates automatic and reliable infrastructure deployment.

Contributions 68

Questions 11

Sort by:

Want to see more contributions, questions and answers from the community?

Es parecer mio o esta clase está fuera de contexto?

Me frustra bastante que no haya un video anterior indicando la configuracion e instalacion de terraform para visual, que mal.

Paso de Kinder a High School de un video a otro 😦

Si bien es cierto que para DevOps se necesitan muchos conocimientos de muchas herramientas, lo ideal sería que los cursos de introducción se manejen solo lo básico y directamente solo teoría y que la ruta complemente las herramientas que aquí se mencionan

Esta clase creo que es más bien una demo de qué o como se podría hacer el pipeline

porque tendríamos que tomar el curso de Terraform y de AWS para tener más contexto

Llevo 3 cursos en platzi, el primero fue el profesional de git y github que dicto fredy y por eso me motivo a comprar la suscripción, Pero los otros dos cursos han sido una decepción total, incluido este que en realidad no tiene un hilo conductor ni es introductorio.

No parece un curso de introduccion, si no mas avanzado o deberian decir inicialmente antes de tomar este curso y llegar a esta fase todo lo que se debe estudiar antes de continuar.

Estos 8 archivos son parte de un conjunto de configuraciones de Terraform para implementar un pipeline de infraestructura automatizado usando AWS. Cada archivo se encarga de una tarea específica en el pipeline. A continuación se describen brevemente cada uno de ellos:

  • 0states tf: Este archivo especifica la configuración para el backend de Terraform. Es necesario para que Terraform guarde el estado de la infraestructura en un bucket de S3.

  • 1codecommit tf: Este archivo crea un repositorio en CodeCommit para almacenar los archivos de configuración de Terraform.

  • 2iamcodebuild tf: Este archivo crea un rol de IAM para CodeBuild, que es necesario para que CodeBuild tenga acceso a los recursos de AWS necesarios para ejecutar las tareas del pipeline.

  • 2iamcodepipeline tf: Este archivo crea un rol de IAM para CodePipeline, necesario para que CodePipeline tenga acceso a los recursos de AWS necesarios para ejecutar el pipeline.

  • 3secret tf: Este archivo crea un secreto en Secrets Manager para almacenar información sensibles, como las credenciales de Docker Hub.

  • 5s3 tf: Este archivo crea dos bucket de S3 para almacenar los artefactos y el estado de Terraform.

  • 6codebuild tf: Este archivo crea dos proyectos CodeBuild, uno para ejecutar el comando “terraform plan” y otro para ejecutar “terraform apply”.

  • 7pipeline tf: Este archivo crea un pipeline en CodePipeline que se encarga de orquestar todas las tareas del pipeline, desde la fuente de los archivos de configuración hasta la implementación de la infraestructura automatizada.

Por lo que veo necesitamos un curso avanzado para entender esta clase de "introducción". Me da que en vez de clase práctica se va a quedar en otra clase teórica y rezaremos para entender algo más adelante.

Que clase fuera de lugar… Venimos de informacion por arriba a configuracion (?)

Quedé más perdido que el hijo de Lindbergh… 😦

Pude realizar esta clase gracias a los tutoriales de Gersom

https://www.youtube.com/watch?v=ZRQMhyEx2WM&list=PLb3xc_fdzuDePpXff31EORQ_Vok6NU941&index=1

Excelente guía para los que somos nuevos en este tema

Hay un salto de la clase anterior a esta, se omite la creación de la infraestructura para poder hacer el despliegue del pipeline.
Aca hay unos casos de uso y tutoriales como para darse otra idea y poder continuar el flujo del curso creo yo: https://developer.hashicorp.com/terraform

Esta clase a mi parecer tiene como propósito tener una visión de un caso práctico real, pero no con fines prácticos para la formación de los alumnos.
En el minuto 10:00 dice: "Y así de simple tenemos todo configurado". Simple?.

Estaria super que hubiera una clase previa donde se explique como instalar aws cli.

debería usar variables de entorno en local o en Amazon
Hola soy nueva en esto de DevOps y este es el primer cursos de la "ruta" de platzi. Como puede ser posible que el curso introductorio para DevOps me mande primero a hacer otros cursos como el de terrafon y aws para poder seguir la "ruta" que se supone que en esencia me va a enseñar eso paso a paso.

Chicos encontré este aporte que tiene el paso a paso para poder hacer este ejercicio correctamente. Creditos al creador!

El nombre de este curso es un perfecto ejemplo de “clickbait” Como puede llamarse introducción y pasar de 12 clases teorícas a darte una cachetada y decirte “Mira, ve un curso de AWS primero y luego vuelve para que sepas que hacer por tu cuenta porque aquí no lo vamos a explicar”… Todo bien hasta este clase, cuando no costaba nada incluir 1 o 2 clases más explicando rápidamente la configuración en AWS para dejar todo funcional antes de empezar con esto. Terrible experiencia.

**Resumen simplificado del proyecto Intro-DevOps** Este proyecto utiliza Terraform para crear un pipeline automatizado de infraestructura en AWS. El repositorio contiene varios archivos organizados dentro del directorio codigos/, y cada uno cumple una función específica. A continuación, se presenta una explicación más clara y estructurada del contenido. ### **1. Configuración de Terraform: 0states.tf** * Define dónde guardar el archivo de estado de Terraform (en un bucket S3). * Necesitas tener creado el bucket en AWS. * Se requiere configurar un usuario con permisos y credenciales (access key y secret key). * Lo más seguro es guardar las credenciales en un archivo de configuración separado. ### **2. Repositorio de código: 1codecommit.tf** * Crea un repositorio CodeCommit llamado repositorio-de-CICD. ### **3. Rol para CodeBuild: 2iamcodebuild.tf** * Define el rol que CodeBuild usará, incluyendo: * Quién puede asumir el rol. * Permisos que tendrá. ### **4. Rol para CodePipeline: 2iamcodepipeline.tf** * Similar al anterior, pero para CodePipeline. * Define diferentes permisos ya que es otro servicio. ### **5. Credenciales de Docker Hub: 3secret.tf** * Almacena las credenciales necesarias para obtener una imagen desde Docker Hub. ### **6. Buckets S3: 5s3.tf** * Crea dos buckets: * Uno para CodePipeline. * Otro para Terraform. ### **7. CodeBuilds para plan y apply: 6codebuild.tf** * Crea dos proyectos CodeBuild: * Uno para ejecutar terraform plan. * Otro para ejecutar terraform apply. * Configura el uso de una imagen de Terraform. * Usa las credenciales de Docker para acceder a la imagen. ### **8. Archivos Buildspec:** * apply-buildspec.yml y plan-buildspec.yml definen los comandos que ejecuta CodeBuild: * terraform init: prepara el entorno. * terraform validate: valida configuraciones. * terraform plan: muestra qué se va a hacer. * terraform apply: aplica los cambios (con auto-approve). ### **9. Orquestador CodePipeline: 7pipeline.tf** * Une CodeCommit y los proyectos CodeBuild. * Define tres fases (*states*): 1. Obtener el código de CodeCommit (rama master). 2. Ejecutar el proyecto CodeBuild de plan. 3. Ejecutar el proyecto CodeBuild de apply. ### **Comandos principales** Inicializar Terraform: terraform init 1. Aplicar la configuración: 2.  terraform apply Se requiere confirmar escribiendo yes. ### **Problemas comunes y soluciones** * Si CodePipeline falla, puede deberse a que el repositorio CodeCommit está vacío. Se debe clonar el repo, copiar archivos de Terraform, y hacer push a Git: git add . git commit -m "primer commit" git push origin master ### **Verificación en AWS** * Revisa en CodePipeline que las fases *plan* y *apply* se ejecutan correctamente. * Verifica los logs si ocurre un error (por permisos o problemas de conexión). ### **Conexión con Bitbucket** * Se crea una conexión a Bitbucket para usar en futuros pipelines. Su identificador (ARN) se usará en las variables de configuración.
Lamentablemente al menos para el ejercición, al día de hoy AWS code commit ya no está disponible para nuevos usuarios.

Creo que el profesor lo que intenta es dar una visión general de los tipos de pipeline. Bajo mi punto de vista no hay que hacer lo mismo que hace él ni hacer los pasos de Garsom, ya que solo está dando una visión general en la cual se profundizará más adelante.
Es imposible que en el Curso de Introducción empecemos tan fuerte…
Espero que no pierdan el tiempo como yo en copiar todo los pasos que hace ya que os resultará imposible.

Hola....si la clase se salta muchos pasos , no pueden pretender que todos los que estemos viendo estos cursos sepamos que hace el tutor... Deberían de desglosar más el tema, pues es el curso de introducción a DeVops....

Esta clase me obligó a abandonar el curso por completo. “Introducción” decía…

Se supone que el curso es de introduccion a devOps, por ende deberia enfocarse en cosas basicas y dejar las mas complejas para cursos especificos, espero nunca mas tomar un curso con este intructor y de una mi calificacion sera la peor!

Pero no veo en lo absoluto ni como unir las herramientas ni como llevar eso VSC nada, todo eso debio haber estado en el curso. la configuracion de los programas porque estoy tomando el curso y no he podido abrir terraform aun no como hacer lo entonces , veo el video y siento que no explican del todo bien de como instalar terraform y los demas programas

pensando seriamente si vale la pena renovar platzi con la calidad de estos cursos de ahora, ojala John Freddy Vega por pura casualidad vea este comentario …

la manera mas segura es agregar un providwer que apunte a los archivos de credenciales de AWS

En los recursos se encuentra el GitHub para descargar el comprimido .zip sin embargo no reconoce los comandos de terraform 😦

Me fui a DeepSeek a pedirle ejemplos mas básicos para poder entender esta clase.
No entiendo nada :)
Este es el peor tutorial que he visto en mi vida
Por eso es que prefiero Coursera para capacitarme. Quede perdido
Fuera de contexto este clase, no tengo idea de como llegamos acá. Vaya introductorio
yo ya tengo experiencia practica de 2 años trabajando con terraform en un departamento cloud y joer, salto de kinder a universidad en 1 video a otro espero que esto no sea asi con los otros cursos
de introduccion a devops , a Iac terraform avanzado, con yamls y todo...
Quedé perdido en este video :(
En esta clase la verdad, me perdí jeje.
Actualmente en Platizi no hay ningún curso de Terraform. Pero en YouTube hay varios tutoriales que son útiles para aprender.
Hace meses AWS Eliminó CodeCommit, se puede hacer el ejercicio con algún otro proveedor, como GitHub o GitLab
Les comparto un pequeño tutorial sobre Terraform <https://youtu.be/VccL4WHBLhM?si=VIC8fFxGCIPW6kD8>
He trabajado bastante en diferentes herramientas, entre ellas he desplegado Pipelines en Azure, por lo que creí que no tendría mucho problema, pero este video le falta mucho mucho contexto para una persona que recién inicia, tales como: El manejo de la carpeta de configuración El porque los nombres con inicio de números Como se crea y se configura ciertas cosas en AWS, Voy a parar aquí, y revisare otros contenidos, porque esto va ser ineficiente
Hola, solo quiero aportar que despues de clonar el repo debes dirigirte a la carpeta codigos y desde ahi aplicar terraform init. también tuve un error al ejecutar la instrucción terraform apply Error: "assume\_role\_policy" contains an invalid JSON policy: leading space characters are not allowed lo pude solucionar eliminando el espacio que se encuentra en la linea 6 antes de la llave ( { ) de los archivos 2iamcodebuild.tf y 2oamcodepipeline.tf ` assume_role_policy = <<EOF{`
Que densa está esta clase, hay mucho por hacer o configurar antes de poder realizar bien el ejercicio, en teoría no está mal porque pues también te lleva a curiosear, investigar, solucionar etc. El caso es que estoy un poco bloqueado porque hice todo bien, pero igual me salieron un errores en el apply, los solucioné con permisos desde la consola de aws, pero al final me salió otro error de la región que tengo la de us-east-1 pero espera que el header sea eu-west-1, pero pues lo hice todo tal cual, en fin, modifiqué la región, pero ahora se demora un chingo, se queda pegado en este step aws\_s3\_bucket.codepipeline\_artifacts: Still creating... , no se si tengan idea de que puede estar pasando, agradezco mucho la ayuda, en serio.

Yo no hic eñ ejercicio porque, en clases anteriores el profe dijo que este ejercicio solo era pare ver que es lo que hacia un devops, y me parecio interesante, ya quiero aprender estas herramientas

Estoy atascada con este error ![](https://github.com/anafera23/portafolio/blob/main/error.png)
Estoy atascada con este error

No entendí absolutamente nada. Me perdí completamente. Si esto es la introducción entonces creo que DevOps no es para mi.

Hay algo a tener en cuenta al momento de definir permisos entre recursos y es otorgar siempre el mínimo permiso requerido para funcionar, por ejm en vez de colocar:

s3:*

Definir especificamente que acciones puede hacer el servicio:

s3:PutObject, s3:ListObjects

Aunque sigo el curso y me parece muy interesante, me uno al disgusto de que se presente este nivel de dificultad de código de terraform y de configuración de aws, siendo un curso de introducción. Si este curso estaba planeado para tener un mínimo de conocimiento de terraform y de aws, creo que deberían haber al menos cursos introductorios de terraform y aws y que estos sean una condicion preliminar a este curso, ya que el hilo se pierde cuando estas siguiendo el curso. Sino, entonces mejor evitar agregar ejercicios practicos de terraform y aws y simplemente aconsejar de seguir estos cursos como un siguiente paso.

existe algun grupo de estudio en telegram o whatsapp donde podamos reunirnos y resolver dudas?

Wow listo hasta acá… fue un buen ejercicio de resolución de problemas: busca documentación-ejemplos, investiga el mensaje de error, busca ayuda con la comunidad (destacado @Gersom sabdiel), fíjate bien del directorio en el que está parado XD y ayudate con ChatGPT

Creo que este curso es bueno, solo que si deberia dedicarse a los fundamentos teoricos, pero tambien pasa que algunas personas piden teoria y practica… entonces… queda uno como en medio porque en mi caso no tengo prerrequisitos para tomar esta clase por lo menos… tengo ponerme a ver ahora terraform y git… luego de eso o en paralelo ver amazon… creo que esta si deberia ser la ruta de aprendizaje… empezar por los prerequisitos para luego poderse lanzar a devops…

Curso mal enfocado, comienza como introduccion a Devops! y lanza esto tan complejo, fuera mejor si lo fueran hecho teorico.

Por si alguien necesita una explciación con azure, este video lo explica bastante bien

Cuando se tenga instalada la consola aws cli, utilizar este comando aws configure y alli te preguntara por los credentials de tu usuario (ACCESS_KEY_ID, SECRET_ACCESS_KEY, etc), los datos sensibles se guardan en credentials y los otros en config automaticamente.

Seria bueno tener una sección de tutoriales en cada clase, así alguien que logre hacer funcionar los ejercicios de esta clase en particular pueda compartir lo que hizo directamente en un tutorial, sin tener que ir a la sección de tutoriales y buscar el tema en especifico.

Esta clase vale mil, mucha información de digerir.

El curso iba muy bien, lastima estas clases “prácticas” donde se asume que ya se conoce estas herramientas y directamente pasa al uso de la misma sin dar un contexto del como llegó a ese punto.
Teóricamente está muy bien seguir el curso, para práctica, perfectamente el curso puede terminar aquí.

Es curioso, todo lo que muestra lo hacia manual, habia escuchado de Terraform pero no sabia bien como se usaba.

Pero el video ahorro mucho tiempo (entre configuracion y vinculacion de procesos) interesante pero igual hay que aprender sobre amazon y que es todo lo que comenta 😉

Creo que este curso es de “solo lectura”, pensé que iba a poder hacer el pipeline mas simple por lo menos.

Hola! me uno a mis compañeros, hay un salto muy grande de información. Luego de unos largos intentos logré clonar el repo y me gustaría comentarles como lo logré y quizás a alguno les sirva 😃
1.- Descarguen Visual Studio Code (que es el que usa Jaivic en el video!)
2.- Fuí al git por el repositorio que utilizaremos https://github.com/platzi/intro-devops
3.- Botón verde: Code/Local/Download Zip
4.- Descargué el zip lo moví a una carpeta que cree que utilizaré para esto y lo descomprimí
5.- Luego abrí el VS Code, fui a File/Open Folder y seleccioné mi carpeta descomprimida (puedo verla pero no puedo hacer nada con ello ya que es como solo lectura)
6.- En un costado me sale que no tengo la extensión de terraform (para archivos .tf) para VS así que apreté y descargué (el primero)
Y luego ya quedó, me cuentan si les sirve 😄 o si me salté algo D:
Éxito chicos! Vamos que se puede!

Learning

✍(◔◡◔)

DevOps: Quede atascado con estos errores al insertar Terraform apply: ```js Error: reading S3 Bucket (platzi-terraformstate-state): operation error S3: HeadBucket, https response error StatusCode: 301, RequestID: 04WE9C4XTGDAYC84, HostID: Mnjttz3DlwKpC4hPl7F1kJwt/xkaLS8/rDY4vNme/r+qO743t51G9hW2hsA/jqt2c1z3ObQfAV8=, api error MovedPermanently: Moved Permanently │ │ with aws_s3_bucket.terraformstate, │ on 5s3.tf line 4, in resource "aws_s3_bucket" "terraformstate": │ 4: resource "aws_s3_bucket" "terraformstate" { │ ╵ ╷ │ Error: reading CodeBuild Project (arn:aws:codebuild:us-east-1:135808914429:project/cicd-plan): operation error CodeBuild: BatchGetProjects, https response error StatusCode: 400, RequestID: c4b48f19-d500-4d3c-ba18-164ab2131a5b, InvalidInputException: Invalid project ARN: region does not match caller's region │ │ with aws_codebuild_project.plan, │ on 6codebuild.tf line 1, in resource "aws_codebuild_project" "plan": │ 1: resource "aws_codebuild_project" "plan" { │ ╵ ╷ │ Error: reading CodeBuild Project (arn:aws:codebuild:us-east-1:135808914429:project/cicd-apply): operation error CodeBuild: BatchGetProjects, https response error StatusCode: 400, RequestID: 39e18954-64cd-4c94-9521-c992ac91e4df, InvalidInputException: Invalid project ARN: region does not match caller's region │ │ with aws_codebuild_project.apply, │ on 6codebuild.tf line 26, in resource "aws_codebuild_project" "apply": │ 26: resource "aws_codebuild_project" "apply" { ```
Excelente clase, hace una muestra de lo simple que es configurar el despliegue de un pipeline. Y se crea todo como por arte de magia!!!. Los que se asustan porque no entienden nada, no se preocupen, hay que hacer cursos de Terraform, Aws, saber GIT. para entender. Lo ideal es seguir lo mejor que se puede la clase y luego hacer lo cursos para manejar las herramientas.