DevOps Project - Automate deploying to AWS using Terraform with GitLab CICD pipeline

Sdílet
Vložit
  • čas přidán 24. 07. 2024
  • Terraform Pipeline | Gitlab ci cd pipeline AWS | Terraform Project | AWS Terraform
    In this Devops project you will learn how to set up a Terraform ci cd pipeline using gitlab to automatically deploy infrastructure on AWS cloud.
    Throughout this terraform project you will learn all devops best practices used in the industry to learn and Practice Hands on.
    Find the code in GitLab Repository: gitlab.com/N4si/cicdtf
    #devops #aws #terraform
    Connect with me on LinkedIn: / nasiullha-chaudhari
    Helpful resources -
    Terraform tutorial : • Master Terraform in 60...
    CICD explained : • What is CICD Pipeline?...
    Gitlab CICD tutorial : • Learn Complete GitLab ...
    Terraform Official documentation: developer.hashicorp.com/terra...
    Timestamps
    🕒 Intro 0:00
    📝 What is this project 0:04
    🔧 Prerequisites for this DevOps project 0:32
    🛠️ Part 1 of the project (Terraform Code) 03:44
    📂 S3 state backend setup 23:55
    🔧 Part 2 (Gitlab cicd pipeline) 26:02
    🔗 Create Gitlab repository 26:35
    📥 Push the Terraform code to Gitlab 27:37
    🔄 Gitlab CICD pipeline script 29:53
    🔢 Define variable 38:56
    🏃 Pipeline running 45:00
    🎬 Conclusion 49:50
    Also checkout other DevOps projects:
    Devsecops project: • DevSecOps Pipeline Pro...
    Microservices project: • DevOps Project: Video ...
    Simple Terraform Project: • Simple DevOps Project ...
    Kubernetes Project: • Kubernetes Live Projec...
    This terraform pipeline project will teach you how to properly create infrastructure on cloud like aws or azure using cicd tools like gitlab, jenkins or github.
    Setting up cicd pipeline for Terraform is very common best practice followed in devops industry to provision infrastructure.
    Feel free to comment your doubts if you have any :)
    Support my work : www.buymeacoffee.com/cloudchamp
  • Zábava

Komentáře • 112

  • @soumyadipchatterjee2267
    @soumyadipchatterjee2267 Před 4 měsíci +2

    Mind-blowing & Hat's off to you to showcase this project step by step especially how Gitlab & Terraform hand to hand works in Production 😀❤. I have successfully created the same .

  • @cloudchamp
    @cloudchamp  Před 4 měsíci +9

    Let's see who can complete this first..... 👀
    Please Like & share :)

  • @oc4618
    @oc4618 Před 3 měsíci +2

    I love your tutorials. Simpe, clear and straight foward. One of the best tutorial for devops on the net. Please keep them coming

  • @rajvirkaur4411
    @rajvirkaur4411 Před 4 měsíci +1

    great tutorial. everything is explained in so detail. thank you so much

  • @kevinjessid
    @kevinjessid Před měsícem

    parce, como diriamos en Colombia, usted es una chimba! gracias por tus videos! 👍

  • @yogendrahj9365
    @yogendrahj9365 Před 4 měsíci

    Crisp & Clear. Thanks mate.
    And please dont take me wrong your talking speed has really reduced to good level compared to initial videos and this helps learners like us to understand thoroughly.
    Being in the industry for 6+ years have hardly found good live projects. Please keep them coming!
    Thank you! All the best!

    • @cloudchamp
      @cloudchamp  Před 4 měsíci

      Thanks for this helpful feedback 😀

  • @ankitkumargupta9753
    @ankitkumargupta9753 Před 3 měsíci +2

    Crisp, Clear, Amazing, Mind-Blowing
    What a tutorial, Loved It ❤

    • @cloudchamp
      @cloudchamp  Před 3 měsíci +1

      Glad you liked it

    • @cloudchamp
      @cloudchamp  Před 3 měsíci +1

      Make sure to share & subscribe 👍🏻

  • @mhenterprises1873
    @mhenterprises1873 Před 4 měsíci +1

    Thanks for this devops project 👍

  • @karthickmuthiah7241
    @karthickmuthiah7241 Před 28 dny

    Thanks for the wonderful session and project use case. I have implemented it in my home lab.

  • @pinakimukherjee2084
    @pinakimukherjee2084 Před 28 dny

    Excellent project. Thank you, bro.

  • @RZOLTANM
    @RZOLTANM Před 4 měsíci

    Good explanation....really concise and articulate....gets to the point and also explains prerequisite videos and concepts to understand... enjoyed it! Will watch all from the all others... just subscribed!

    • @cloudchamp
      @cloudchamp  Před 4 měsíci

      Thanks man!
      Happy to help 😀

  • @inthecloud1043
    @inthecloud1043 Před 4 měsíci +3

    You explain it so perfectly bro 👍

  • @bouksy
    @bouksy Před 4 měsíci

    very interesting video . Gives very good key concepts in a very clear way. I'll put these in practise pretty soon, Thanks!

    • @cloudchamp
      @cloudchamp  Před 4 měsíci +1

      Let me know how it goes 👍🏻

  • @gamingchamp3070
    @gamingchamp3070 Před 4 měsíci

    Thank you for everything you do

  • @smartengineer4484
    @smartengineer4484 Před 4 měsíci +2

    This is very much needed project brother 👍

  • @amarnathnachimuthu83
    @amarnathnachimuthu83 Před 4 měsíci

    Great one! Keep up the good work bro.

  • @rahulsawant485
    @rahulsawant485 Před 4 měsíci +2

    Great tutorial, thanks

  • @Djsanddy
    @Djsanddy Před 2 měsíci

    Amazing tutorial brother. Keep up the good work.

  • @PortgueseProBF3
    @PortgueseProBF3 Před 3 měsíci

    This is amazing and exactly what I needed except I'm trying to use gitlab it self as backend!

  • @nnamdizobeashia7320
    @nnamdizobeashia7320 Před měsícem

    men.. i am so amazed at your skill set you need to do a bootcamp.. thank you so much for knowledge shared.

  • @ahmadqayyum7505
    @ahmadqayyum7505 Před měsícem

    this guy deserves the highest award ever in the field of devops. simplifying such complicated concepts.

    • @cloudchamp
      @cloudchamp  Před měsícem

      🤝🤝

    • @ahmadqayyum7505
      @ahmadqayyum7505 Před měsícem

      @@cloudchamp any problem that I run into regarding my projects and it's like you already know the problem and when I come to CZcams for research the solution is there. I am starting to love DevOps because of you.

    • @cloudchamp
      @cloudchamp  Před měsícem

      @@ahmadqayyum7505 This comment is the reason i create content for!

    • @ahmadqayyum7505
      @ahmadqayyum7505 Před měsícem

      @@cloudchamp thank you so much.

    • @ahmadqayyum7505
      @ahmadqayyum7505 Před měsícem

      @@cloudchamp also can you make a playlist on Kubernetes for beginners, if you haven't made one already???

  • @user-pg9yy1un1s
    @user-pg9yy1un1s Před 2 měsíci

    Appreciate it, nice work.

  • @vamshikittu8635
    @vamshikittu8635 Před 4 měsíci

    Awesome 👌 content bhai and funny thing is when the destroy was running the bgm was perfect sync 😂
    And yes today itself I'll do this project and definitely tag you nasi bhai ❤

  • @ragavraghu8700
    @ragavraghu8700 Před 2 měsíci

    thank you!

  • @AkshaiReddy183
    @AkshaiReddy183 Před 4 měsíci +1

    Great job bhai 🎉

  • @mariocortes2670
    @mariocortes2670 Před 4 měsíci

    Great explanation!

  • @kauapozzi8629
    @kauapozzi8629 Před 4 měsíci

    Just took my SAA-003 certification. Watching your videos to conquer my first IT job and portfolio

  • @chipTuanDuc
    @chipTuanDuc Před 4 měsíci +1

    Thanks❤❤❤❤❤

    • @cloudchamp
      @cloudchamp  Před 4 měsíci

      You are welcome 🤗
      Lmk if you need help or you complete the project 👍🏻

  • @techyreport7992
    @techyreport7992 Před 4 měsíci

    Thank you 🙏

  • @gamingchamp2834
    @gamingchamp2834 Před 4 měsíci +1

    I will try this project today bro

  • @mabashadudekula367
    @mabashadudekula367 Před měsícem

    Clear cut explanation do more videos

  • @kykel4948
    @kykel4948 Před 3 měsíci

    Fantastic tutorial! Thank you! This really helped. Yours was the most comprehensive explanation I've seen so far and just you breaking down the code of the gitlab-ci file line by line in your review was incredibly helpful. So many tutorials I've watched skim over the important details and skip steps or just fail to elaborate on what their code is doing, which contributes to the confusion. My only confusion and question is about your destroy job.
    How did your destroy job run without a state declared? When I tried to run mine, it would "succeed" but only as a false positive. The destroy job wasn't finding the terraform state from the previous jobs and thinking there were 0 things to destroy. I had to troubleshoot and eventually added the state as an artifact in the apply job which resolved my issues.
    Liked, Subscribed and even bookmarked this particular tutorial!

    • @karthickmuthiah7241
      @karthickmuthiah7241 Před 28 dny

      Hi, can you please share the steps of how you added the state as an artifact in yaml file

    • @kykel4948
      @kykel4948 Před 26 dny

      @@karthickmuthiah7241 When you write your stages out you need to simply add an artifact path. Each stage of your CI/CD pipeline is going to stand up a new runner container so the runner in your apply stage and destroy stage won't have the terraform state file from the plan stage unless you declare it as an artifact to pass to the next stage.
      Like this:
      stages:
      - validate #simply validate that terraform is available
      - plan #create your plan file and state
      - apply #run your terraform apply
      - destroy #tear down your state build
      Example code:
      plan:
      stage: plan
      script:
      - terraform plan -state=$STATE -out="planfile"
      artifacts:
      paths:
      - planfile
      - state # This artifacts path variable will pass $STATE created in the script command to the next (apply) stage.
      Each stage will need to continue to pass the artifact. So, if you create a state in the plan stage you'll need to declare it as an artifact for apply to have access to it. If you have additional stages (such as destroy used here) then you would also have to declare it as an artifact in your apply stage to ensure that it continues to pass on into your destroy stage. Otherwise, your destroy won't be able to tear down the build from the apply stage as it no longer has that state file. Hope this helps.

  • @dharshansrsr976
    @dharshansrsr976 Před 4 měsíci

    19:30 waiting for the second part to create keys as per the flow 😊

  • @ragavand4678
    @ragavand4678 Před 4 měsíci

    Thank you very much brother.it really helps me to understand how terraform works...

  • @user-pg9yy1un1s
    @user-pg9yy1un1s Před 2 měsíci

    only one Thala @ Abhishek Vermalla

  • @BrandanKing
    @BrandanKing Před měsícem

    Great tutorial! If I am using Windows where do I find where my binaries and dependencies are when defining them (entrypoint) in the gitlab.ci.yml file?

  • @harshshah4477
    @harshshah4477 Před 4 měsíci

    It is a good project to automate the IAC though how can we configure the automation of the BE & FE codebase as well? So that whenever I commit any changes in my code base automation directly updates the code in EC2.

  • @OnCloudNine-wv9kv
    @OnCloudNine-wv9kv Před 3 měsíci

    While creating the pipeline. 31.53 timestamps. how did you get the image name and the path? i tried looking that in your previous video but coudnt find it. i'd appreciate if you help me here.

  • @tech_channel110
    @tech_channel110 Před 4 měsíci +1

    Sir give me fyp idea using devops and cloud
    Eg . Cloud infrastructure

  • @oc4618
    @oc4618 Před 3 měsíci

    can you explain the 'entry point' value on the gitlab yml. I got a bit lost and wasn't sure how you got that value

  • @user-ux2hc4zw7x
    @user-ux2hc4zw7x Před 4 měsíci

    Bro which tool you used for project documentation in ubuntu 22.04?.

  • @Djsanddy
    @Djsanddy Před 2 měsíci

    can you please do a similar one for github CICD. Thanks a ton

  • @user-ux2hc4zw7x
    @user-ux2hc4zw7x Před 4 měsíci

    Bro which tool used for documenting in ubuntu!!?.

  • @jac9886
    @jac9886 Před 2 měsíci

    Excellent video Nasi, it helped me a lot! I just have one question left, in your repository there's a variable TF_VAR_gitlab_token: ${GITLAB_ACCESS_TOKEN} which I was particularly interested in seeing its configuration, but you didn't mention it in the video. Is there another video about it or could you explain it to me here? Thank you very much!

  • @sjokkz
    @sjokkz Před 4 měsíci

    how can i reuse the same pipeline to deploy multiple environments with the same resources?

  • @OnCloudNine-wv9kv
    @OnCloudNine-wv9kv Před 4 měsíci

    Did you create s3 and dynamoDB manually or via terraform code?

    • @cloudchamp
      @cloudchamp  Před 4 měsíci +1

      Manually in this video but also have another terraform backend video where it’s done in terraform 👍🏻

  • @wassellaouini
    @wassellaouini Před měsícem

    nice video man, i have a question, why didnt you define any triggers? or is the gitlab CI runs automatically when you push on the main branch by default?

  • @pallavirathod2883
    @pallavirathod2883 Před 15 dny

    I'm getting this error
    Missing newline after argument
    3: resource = "AWS_instance" "server" {
    An argument definition must end with a newline
    Please help me with this

  • @yogendrahj9365
    @yogendrahj9365 Před 4 měsíci

    Hi Nasi, i am almost there. But getting state lock error in the destroy stage. Not very sure how i can pass -lock=false for this stage manually. This work fine manually i can run this. Now im running the full pipeline and it started failing in the plan job itself saying state lock. Any leads please?

    • @cloudchamp
      @cloudchamp  Před 4 měsíci

      You can manually release the lock using terraform force-unlock command with the lock Id.
      -lock=false is not recommended in production environments where you have multiple people working together
      Let me know if still facing issue.

    • @yogendrahj9365
      @yogendrahj9365 Před 4 měsíci

      @@cloudchamp yes force-unlock is my first choice but silly thing is i am unable to find the lockid either in the error or state file. Below is the error i get if i run plan and cant see lock id. "Error: Error acquiring the state lock

      │ Error message: 2 errors occurred:
      │ * ResourceNotFoundException: Requested resource not found
      │ * ResourceNotFoundException: Requested resource not found



      │ Terraform acquires a state lock to protect the state from being written
      │ by multiple users at the same time. Please resolve the issue above and try
      │ again. For most commands, you can disable locking with the "-lock=false"
      │ flag, but this is not recommended."

    • @yogendrahj9365
      @yogendrahj9365 Před 4 měsíci

      something silly im missing.

  • @sparshkhandelwal816
    @sparshkhandelwal816 Před 3 měsíci

    15:09

  • @guibhai8578
    @guibhai8578 Před 4 měsíci

    nasi can you share some resource to learn golang

  • @sharafathussain2036
    @sharafathussain2036 Před 10 dny

    you didnot configure any runner on this pipeline, which runner is it using ? thanks

    • @cloudchamp
      @cloudchamp  Před 9 dny

      I did configured and showed you how to connect in this Gitlab Tutorial:
      Learn Complete GitLab CI/CD in 1 hour | GitLab CI CD Tutorial
      czcams.com/video/JWXVijJfnHc/video.html

  • @khaledziraoui5246
    @khaledziraoui5246 Před 4 měsíci

    Do u have any videos ro learn terraform please for a beginner ,appreciate it

    • @cloudchamp
      @cloudchamp  Před 4 měsíci

      Absolutely I do, check out the playlist or a 60 mins video

    • @khaledziraoui5246
      @khaledziraoui5246 Před 4 měsíci

      @cloudchamp Thank you very much ,i will start watching them videos , ,is it possible to learn that in one month for a beginner

  • @faizanmomin4417
    @faizanmomin4417 Před 4 měsíci

    Hey, Brother!
    I am also DevOps engineer, Could you please tell me which terminal are you using, It's Looking Good Though!

    • @cloudchamp
      @cloudchamp  Před 4 měsíci +1

      I am using inbuilt terminal . I have Ubuntu 22 in my local

  • @heisenberg7049
    @heisenberg7049 Před 4 měsíci

    Hey bro ur discord link expired can u update it

  • @CHARAN_REDDY18
    @CHARAN_REDDY18 Před 3 měsíci

    bruh were did you learn devops course

  • @zikou6405
    @zikou6405 Před 4 měsíci

    apply:
    stage: apply
    script:
    - terraform apply -input=false "planfile"
    dependencies:
    - plan
    the dependencies is not needed since apply and plan are in different stage so if plan stage failed the following stages will fail too
    if we put the plan and apply in the same stage then we need to add the dependecies line

  • @peace___maker
    @peace___maker Před 3 měsíci

    Can I do this project in windows 11

  • @santhoshkumarsg9339
    @santhoshkumarsg9339 Před měsícem

    Instead of calling the child module vpc (source=./vpc) inside web/mani.tf, why did you call source=./vpc inside main.tf (CICDTF/main.tf)
    Kindly explain me this brother..

  • @suresh.beats___
    @suresh.beats___ Před 4 měsíci +2

    bro why dont u explain in super putty

    • @cloudchamp
      @cloudchamp  Před 4 měsíci

      It’s the same when you do it in Linux machine mine is Ubuntu 20

  • @gopalkrishnav2946
    @gopalkrishnav2946 Před měsícem

    You are too fast bro