github.com/bengesoff/terraform@v0.3.1-0.20141018223233-b25a53629922/website/source/intro/index.html.markdown (about)

     1  ---
     2  layout: "intro"
     3  page_title: "Introduction"
     4  sidebar_current: "what"
     5  ---
     6  
     7  # Introduction to Terraform
     8  
     9  Welcome to the intro guide to Terraform! This guide is the best
    10  place to start with Terraform. We cover what Terraform is, what
    11  problems it can solve, how it compares to existing software,
    12  and contains a quick start for using Terraform.
    13  
    14  If you are already familiar with the basics of Terraform, the
    15  [documentation](/docs/index.html) provides a better reference
    16  guide for all available features as well as internals.
    17  
    18  ## What is Terraform?
    19  
    20  Terraform is a tool for building, changing, and versioning infrastructure
    21  safely and efficiently. Terraform can manage existing and popular service
    22  providers as well as custom in-house solutions.
    23  
    24  Configuration files describe to Terraform the components needed to
    25  run a single application or your entire datacenter.
    26  Terraform generates an execution plan describing
    27  what it will do to reach the desired state, and then executes it to build the
    28  described infrastructure. As the configuration changes, Terraform is able
    29  to determine what changed and create incremental execution plans which
    30  can be applied.
    31  
    32  The infrastructure Terraform can manage includes
    33  low-level components such as
    34  compute instances, storage, and networking, as well as high-level
    35  components such as DNS entries, SaaS features, etc.
    36  
    37  Examples work best to showcase Terraform. Please see the
    38  [use cases](/intro/use-cases.html).
    39  
    40  The key features of Terraform are:
    41  
    42  * **Infrastructure as Code**: Infrastructure is described using a high-level
    43    configuration syntax. This allows a blueprint of your datacenter to be
    44    versioned and treated as you would any other code. Additionally,
    45    infrastructure can be shared and re-used.
    46  
    47  * **Execution Plans**: Terraform has a "planning" step where it generates
    48    an _execution plan_. The execution plan shows what Terraform will do when
    49    you call apply. This lets you avoid any surprises when Terraform
    50    manipulates infrastructure.
    51  
    52  * **Resource Graph**: Terraform builds a graph of all your resources,
    53    and parallelizes the creation and modification of any non-dependent
    54    resources. Because of this, Terraform builds infrastructure as efficiently
    55    as possible, and operators get insight into dependencies in their
    56    infrastructure.
    57  
    58  * **Change Automation**: Complex changesets can be applied to
    59    your infrastructure with minimal human interaction.
    60    With the previously mentioned execution
    61    plan and resource graph, you know exactly what Terraform will change
    62    and in what order, avoiding many possible human errors.
    63  
    64  ## Next Steps
    65  
    66  See the page on [Terraform use cases](/intro/use-cases.html) to see the
    67  multiple ways Terraform can be used. Then see
    68  [how Terraform compares to other software](/intro/vs/index.html)
    69  to see how it fits into your existing infrastructure. Finally, continue onwards with
    70  the [getting started guide](/intro/getting-started/install.html) to use
    71  Terraform to manage real infrastructure and to see how it works.