github.com/maheshbr/terraform@v0.3.1-0.20141020033300-deec7194a3ea/website/source/intro/vs/cloudformation.html.markdown (about)

     1  ---
     2  layout: "intro"
     3  page_title: "Terraform vs. CloudFormation, Heat, etc."
     4  sidebar_current: "vs-other-cloudformation"
     5  ---
     6  
     7  # Terraform vs. CloudFormation, Heat, etc.
     8  
     9  Tools like CloudFormation, Heat, etc. allow the details of an infrastructure
    10  to be codified into a configuration file. The configuration files allow
    11  the infrastructure to be elastically created, modified and destroyed. Terraform
    12  is inspired by the problems they solve.
    13  
    14  Terraform similarly uses configuration files to detail the infrastructure
    15  setup, but it goes further by being both cloud-agnostic and enabling
    16  multiple providers and services to be combined and composed. For example,
    17  Terraform can be used to orchestrate an AWS and OpenStack cluster simultaneously,
    18  while enabling 3rd-party providers like CloudFlare and DNSimple to be integrated
    19  to provide CDN and DNS services. This enables Terraform to represent and
    20  manage the entire infrastructure with its supporting services, instead of
    21  only the subset that exists within a single provider. It provides a single
    22  unified syntax, instead of requiring operators to use independent and
    23  non-interoperable tools for each platform and service.
    24  
    25  Terraform also separates the planning phase from the execution phase,
    26  by using the concept of an execution plan. By running `terraform plan`,
    27  the current state is refreshed and the configuration is consulted to
    28  generate an action plan. The plan includes all actions to be taken:
    29  which resources will be created, destroyed or modified. It can be
    30  inspected by operators to ensure it is exactly what is expected. Using
    31  `terraform graph`, the plan can be visualized to show dependent ordering.
    32  Once the plan is captured, the execution phase can be limited to only
    33  the actions in the plan. Other tools combine the planning and execution
    34  phases, meaning operators are forced to mentally reason about the effects
    35  of a change, which quickly becomes intractable in large infrastructures.
    36  Terraform lets operators apply changes with confidence, as they know exactly
    37  what will happen beforehand.
    38