github.com/pdecat/terraform@v0.11.9-beta1/website/docs/registry/modules/use.html.md (about)

     1  ---
     2  layout: "registry"
     3  page_title: "Finding and Using Modules from the Terraform Registry"
     4  sidebar_current: "docs-registry-use"
     5  description: |-
     6    The Terraform Registry makes it simple to find and use modules.
     7  ---
     8  
     9  # Finding and Using Modules
    10  
    11  The [Terraform Registry](https://registry.terraform.io) makes it simple to
    12  find and use modules.
    13  
    14  ## Finding Modules
    15  
    16  Every page on the registry has a search field for finding
    17  modules. Enter any type of module you're looking for (examples: "vault",
    18  "vpc", "database") and resulting modules will be listed. The search query
    19  will look at module name, provider, and description to match your search
    20  terms. On the results page, filters can be used further refine search results.
    21  
    22  By default, only [verified modules](/docs/registry/modules/verified.html)
    23  are shown in search results. Verified modules are reviewed by HashiCorp to
    24  ensure stability and compatibility. By using the filters, you can view unverified
    25  modules as well.
    26  
    27  ## Using Modules
    28  
    29  The Terraform Registry is integrated directly into Terraform. This makes
    30  it easy to reference any module in the registry. The syntax for referencing
    31  a registry module is `<NAMESPACE>/<NAME>/<PROVIDER>`. For example:
    32  `hashicorp/consul/aws`.
    33  
    34  ~> **Note:** Module registry integration was added in Terraform v0.10.6, and full versioning support in v0.11.0.
    35  
    36  When viewing a module on the registry on a tablet or desktop, usage instructions
    37  are shown on the right side.
    38  You can copy and paste this to get started with any module. Some modules
    39  have required inputs you must set before being able to use the module.
    40  
    41  ```hcl
    42  module "consul" {
    43    source = "hashicorp/consul/aws"
    44    version = "0.1.0"
    45  }
    46  ```
    47  
    48  The `terraform init` command will download and cache any modules referenced by
    49  a configuration.
    50  
    51  ### Private Registry Module Sources
    52  
    53  You can also use modules from a private registry, like the one provided by
    54  Terraform Enterprise. Private registry modules have source strings of the form
    55  `<HOSTNAME>/<NAMESPACE>/<NAME>/<PROVIDER>`. This is the same format as the
    56  public registry, but with an added hostname prefix.
    57  
    58  ```hcl
    59  module "vpc" {
    60    source = "app.terraform.io/example_corp/vpc/aws"
    61    version = "0.9.3"
    62  }
    63  ```
    64  
    65  Depending on the registry you're using, you might also need to configure
    66  credentials to access modules. See your registry's documentation for details.
    67  [Terraform Enterprise's private registry is documented here.](/docs/enterprise/registry/index.html)
    68  
    69  Private registry module sources are supported in Terraform v0.11.0 and
    70  newer.
    71  
    72  ## Module Versions
    73  
    74  Each module in the registry is versioned. These versions syntactically must
    75  follow [semantic versioning](http://semver.org/). In addition to pure syntax,
    76  we encourage all modules to follow the full guidelines of semantic versioning.
    77  
    78  Terraform since version 0.11 will resolve any provided
    79  [module version constraints](/docs/modules/usage.html#module-versions) and
    80  using them is highly recommended to avoid pulling in breaking changes.
    81  
    82  Terraform versions after 0.10.6 but before 0.11 have partial support for the registry
    83  protocol, but always download the latest version instead of honoring version
    84  constraints.