Bird
Raised Fist0
Terraformcloud~5 mins

Terraform vs CloudFormation vs Pulumi - Quick Revision & Key Differences

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is Terraform?
Terraform is a tool that helps you create and manage cloud resources using simple code. It works with many cloud providers, not just one.
Click to reveal answer
beginner
What is CloudFormation?
CloudFormation is a tool by Amazon Web Services (AWS) that lets you create and manage AWS resources using templates written in JSON or YAML.
Click to reveal answer
beginner
What is Pulumi?
Pulumi is a tool that lets you create cloud resources using real programming languages like JavaScript, Python, or Go, making it easier to use familiar coding skills.
Click to reveal answer
intermediate
Which tool supports multiple cloud providers?
Terraform and Pulumi support many cloud providers like AWS, Azure, and Google Cloud. CloudFormation only works with AWS.
Click to reveal answer
intermediate
How do Terraform and Pulumi differ in coding style?
Terraform uses its own simple language called HCL, while Pulumi uses real programming languages, allowing more complex logic and reuse.
Click to reveal answer
Which tool is limited to AWS only?
ATerraform
BPulumi
CAll support multiple clouds
DCloudFormation
Which tool allows using languages like JavaScript or Python?
ATerraform
BPulumi
CCloudFormation
DNone of these
What language does Terraform use?
AJSON
BYAML
CHCL
DPython
Which tool is best if you want to manage resources across AWS, Azure, and Google Cloud?
ATerraform
BCloudFormation
COnly AWS supports multiple clouds
DNone of these
Which tool uses templates written in JSON or YAML?
ACloudFormation
BTerraform
CNone of these
DPulumi
Explain the main differences between Terraform, CloudFormation, and Pulumi.
Think about cloud support and coding style.
You got /3 concepts.
    Why might a developer choose Pulumi over Terraform?
    Consider coding flexibility and language choice.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which infrastructure as code tool is designed to work only with AWS and uses JSON or YAML for its templates?
      easy
      A. CloudFormation
      B. Terraform
      C. Pulumi
      D. Ansible

      Solution

      1. Step 1: Identify AWS-only tool

        CloudFormation is the only tool among the options that works exclusively with AWS.
      2. Step 2: Check template language

        CloudFormation uses JSON or YAML for its templates, unlike Terraform (HCL) or Pulumi (programming languages).
      3. Final Answer:

        CloudFormation -> Option A
      4. Quick Check:

        AWS-only + JSON/YAML = CloudFormation [OK]
      Hint: AWS-only and JSON/YAML means CloudFormation [OK]
      Common Mistakes:
      • Confusing Terraform as AWS-only
      • Thinking Pulumi uses JSON/YAML
      • Selecting Ansible which is not IaC focused
      2. Which of the following is the correct way to describe Pulumi's approach to infrastructure as code?
      easy
      A. Uses general-purpose programming languages like JavaScript or Python
      B. Uses JSON or YAML templates tightly integrated with AWS
      C. Uses shell scripts for provisioning
      D. Uses a domain-specific language called HCL

      Solution

      1. Step 1: Identify Pulumi's language style

        Pulumi uses real programming languages such as JavaScript, Python, Go, or C# for defining infrastructure.
      2. Step 2: Eliminate other options

        HCL is Terraform's language, JSON/YAML with AWS is CloudFormation, and shell scripts are not Pulumi's approach.
      3. Final Answer:

        Uses general-purpose programming languages like JavaScript or Python -> Option A
      4. Quick Check:

        Pulumi = real programming languages [OK]
      Hint: Pulumi uses real programming languages, not templates [OK]
      Common Mistakes:
      • Confusing Pulumi with Terraform's HCL
      • Thinking Pulumi uses JSON/YAML
      • Assuming Pulumi uses shell scripts
      3. Given the following statements, which tool supports multiple cloud providers and uses a simple declarative language called HCL?
      1. Supports AWS, Azure, GCP
      2. Uses JSON or YAML
      3. Uses HCL
      4. Uses programming languages like TypeScript
      medium
      A. Chef
      B. Pulumi
      C. CloudFormation
      D. Terraform

      Solution

      1. Step 1: Match multi-cloud support

        Terraform supports multiple clouds like AWS, Azure, and GCP.
      2. Step 2: Match language used

        Terraform uses HCL, a simple declarative language. JSON/YAML is CloudFormation, programming languages like TypeScript is Pulumi.
      3. Final Answer:

        Terraform -> Option D
      4. Quick Check:

        Multi-cloud + HCL = Terraform [OK]
      Hint: Multi-cloud + HCL means Terraform [OK]
      Common Mistakes:
      • Choosing Pulumi for HCL language
      • Selecting CloudFormation for multi-cloud
      • Confusing Chef with IaC tools
      4. You wrote a Pulumi program in Python but it fails to deploy because it uses AWS-specific resource names not supported by Azure. What is the main error here?
      medium
      A. Terraform should be used instead of Pulumi for AWS
      B. Pulumi does not support Python as a language
      C. Using AWS resource names in a multi-cloud Pulumi program without adjusting for Azure
      D. CloudFormation templates are required for Azure deployments

      Solution

      1. Step 1: Identify the cause of failure

        The Pulumi program uses AWS resource names but tries to deploy on Azure, causing incompatibility.
      2. Step 2: Understand Pulumi's multi-cloud nature

        Pulumi supports multiple clouds but resource names and APIs differ per cloud and must be adjusted accordingly.
      3. Final Answer:

        Using AWS resource names in a multi-cloud Pulumi program without adjusting for Azure -> Option C
      4. Quick Check:

        Cloud-specific resource names must match target cloud [OK]
      Hint: Match resource names to target cloud in Pulumi [OK]
      Common Mistakes:
      • Thinking Pulumi can't use Python
      • Believing Terraform is required for AWS
      • Assuming CloudFormation works on Azure
      5. You want to manage infrastructure across AWS and Azure using a single tool. You prefer writing code in TypeScript and want to reuse existing programming skills. Which tool should you choose and why?
      hard
      A. CloudFormation, because it is tightly integrated with AWS
      B. Pulumi, because it supports multiple clouds and uses real programming languages like TypeScript
      C. Terraform, because it supports multiple clouds and uses HCL
      D. Ansible, because it uses YAML for automation

      Solution

      1. Step 1: Identify multi-cloud support with TypeScript

        Pulumi supports multiple clouds and allows writing infrastructure code in TypeScript, matching the requirement.
      2. Step 2: Compare other tools

        Terraform supports multi-cloud but uses HCL, not TypeScript. CloudFormation is AWS-only. Ansible is for automation, not primarily IaC with TypeScript.
      3. Final Answer:

        Pulumi, because it supports multiple clouds and uses real programming languages like TypeScript -> Option B
      4. Quick Check:

        Multi-cloud + TypeScript = Pulumi [OK]
      Hint: Multi-cloud + TypeScript means Pulumi [OK]
      Common Mistakes:
      • Choosing Terraform for TypeScript support
      • Selecting CloudFormation for multi-cloud
      • Confusing Ansible with IaC tools