Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions cloud-agnostic/require_module_version_satisfies.sentinel
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# This policy uses the tfconfig/v2 import to require modules to
# compare a map of modules to their version reuqirements.
# This uses the version.satisfy function.
# Note this is DRAFT only, so don't use without test.

import "tfconfig-functions" as config
import "version"

module_versions = {
"terraform-azure-wibblywobbly", ">2.0"
"terraform-aws-moneyburn", ">~0.9"
}

# Get all modules

allModuleCalls = config.find_all_module_calls()

#Get all module calls tht have version_constraint as undefined or empty.
violatingModuleCalls = filter allModuleCalls as address, mc {
mc.address in module_versions
}

# Print any violations
for violatingModuleCalls as address, mc {
if not mc.version.satisfies(module_versions[mc.address])
print("Module", address, "does not meet version requirement: ", module_versions[mc.address])
}

# Main rule
main = rule {
length(violatingModuleCalls) is 0
}