Skip to content

Ops-Talks/agronomist

Repository files navigation

Agronomist

Quality Checks codecov GitHub Release Python GitHub Stars

Automate your Module version management for your Terragrunt/OpenTofu/Terraform infrastructure.

Agronomist continuously monitors and reports on module updates, ensuring your IaC stays current, secure, and maintainable with minimal effort.

Agronomist Logo

What it does?

  • Scans .hcl and .tf files and finds source with ?ref= pointing to Git repositories.
  • Queries releases/tags to suggest a new version.
  • Generates JSON report and optionally updates refs in-place.
  • Generates human-readable reports with updates using Markdown.
  • Supports blacklist filtering to ignore specific repositories, modules, or files.
  • Can be used via local CLI, GitHub Action, or GitLab CI.

Requirements

  • Python 3.10+
  • Git
  • GitHub/GitLab token (PAT)

Quick start (CLI)

Install from Latest Release (recommended)

# Download the latest wheel from releases
# https://github.com/Ops-Talks/agronomist/releases/latest

# Install globally with pipx
pipx install agronomist-X.Y.Z-py3-none-any.whl

Build from Source

Using Make (recommended)

make build-docker
# Artifacts in dist/
pipx install dist/agronomist-*-py3-none-any.whl

Using Poetry

poetry build
pipx install dist/agronomist-*-py3-none-any.whl

Usage (after installing with pipx)

agronomist report --root . --json report.json
agronomist report --root . --markdown report.md --json report.json
agronomist update --root . --json report.json

Alternative: Using poetry directly

poetry install
poetry run agronomist report --root . --json report.json
poetry run agronomist report --root . --markdown report.md --json report.json
poetry run agronomist update --root . --json report.json

Documentation

Development & Testing

Run Tests

# Install test dependencies
make install-test-deps

# Run all workflow tests
make test-workflows

# Run unit tests only
make test-unit

# Run integration tests only
make test-integration

For comprehensive testing guide, see docs/testing.md.