पाठ 16 / 25
Module Sources and Versions
Registry, git and local paths.
Pin what you reuse
Modules can come from a local path (./modules/service), the public or a private registry (terraform-aws-modules/vpc/aws with a version constraint), or a git repository pinned to a tag (git::https://...?ref=v1.4.0). Pin versions so upgrades are deliberate, read the module's inputs and what it creates, and review changelogs before upgrading; a popular module can still create resources you did not expect.
Module source examples
Not run here; it needs a cloud account or a remote backend.
module "vpc" {
source = "terraform-aws-modules/vpc/aws" # public registry
version = "~> 5.8"
name = "shop"
cidr = "10.0.0.0/16"
}
module "service" {
source = "git::https://github.com/acme/tf-modules.git//service?ref=v1.4.0" # pinned tag
}Run plan after module upgrades
Upgrade one module at a time and read the plan; module changes can rename or replace resources.
त्वरित जाँच: Why pin module versions?
- Unpinned modules cannot be used
- Pinning makes modules free
- So upgrades happen deliberately after review, not silently
- Versions are only for providers
Answer
So upgrades happen deliberately after review, not silently — Reproducible builds need pinned inputs.