mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-22 11:17:35 -05:00
Signed-off-by: Janos <86970079+janosdebugs@users.noreply.github.com> Signed-off-by: Damian Stasik <920747+damianstasik@users.noreply.github.com> Signed-off-by: Roman Grinovski <roman.grinovski@gmail.com> Co-authored-by: Damian Stasik <920747+damianstasik@users.noreply.github.com> Co-authored-by: Roman Grinovski <roman.grinovski@gmail.com>
41 lines
2.3 KiB
Plaintext
41 lines
2.3 KiB
Plaintext
---
|
|
description: A module is a container for multiple resources that are used together.
|
|
---
|
|
|
|
# Publishing Modules
|
|
|
|
If you've built a module that you intend to be reused, we recommend
|
|
[publishing the module](https://github.com/opentofu/registry/issues/new/choose) on the
|
|
[Public OpenTofu Registry](https://registry.opentofu.org). This will version
|
|
your module, generate documentation, and more.
|
|
|
|
Published modules can be easily consumed by OpenTofu, and users can
|
|
[constrain module versions](../../../language/modules/syntax.mdx#version)
|
|
for safe and predictable updates. The following example shows how a caller
|
|
might use a module from the Module Registry:
|
|
|
|
```hcl
|
|
module "consul" {
|
|
source = "hashicorp/consul/aws"
|
|
}
|
|
```
|
|
|
|
If you do not wish to publish your modules in the public registry, you can
|
|
instead use a [private registry](../../../internals/module-registry-protocol.mdx) to get
|
|
the same benefits.
|
|
|
|
We welcome contributions of modules from our community members, partners, and customers. Our ecosystem is made richer by each new module created or an existing one updated, as they reflect the wide range of experience and technical requirements of the community that uses them. Our cloud provider partners often seek to develop specific modules for popular or challenging use cases on their platform and utilize them as valuable learning experiences to empathize with their users. Similarly, our community module developers incorporate a variety of opinions and use cases from the broader OpenTofu community. Both types of modules have their place in the registry, accessible to practitioners who can decide which modules best fit their requirements.
|
|
|
|
## Distribution via other sources
|
|
|
|
Although the registry is the native mechanism for distributing re-usable
|
|
modules, OpenTofu can also install modules from
|
|
[various other sources](../../../language/modules/sources.mdx). The alternative sources
|
|
do not support the first-class versioning mechanism, but some sources have
|
|
their own mechanisms for selecting particular VCS commits, etc.
|
|
|
|
We recommend that modules distributed via other protocols still use the
|
|
[standard module structure](../../../language/modules/develop/structure.mdx) so that they can
|
|
be used in a similar way as a registry module or be published on the registry
|
|
at a later time.
|