diff --git a/README.md b/README.md index 7cf0a3a..9b4c22f 100644 --- a/README.md +++ b/README.md @@ -145,14 +145,15 @@ python3 scripts/sync-terraform-modules.py --render python3 scripts/sync-terraform-modules.py --check ``` -The weekly `--write` job discovers public `terraform-aws-` repositories in -the `native-cube` GitHub organization, adds an initial catalogue entry from the -repository description, and refreshes its Registry metadata. The workflow opens -or updates a pull request containing the JSON configuration and generated HTML; -maintainers can refine the generated presentation fields in that PR. Add -`example_path` only when the repository contains a complete maintained example. -GitHub Actions must be permitted to create pull requests in the repository or -organization workflow settings. +The weekly `--write` job discovers public, non-archived +`terraform-aws-` repositories in the `native-cube` GitHub organization, +adds an initial catalogue entry from the repository description, and refreshes +its Registry metadata. Repositories are removed from the catalogue when they +are archived. The workflow opens or updates a pull request containing the JSON +configuration and generated HTML; maintainers can refine the generated +presentation fields in that PR. Add `example_path` only when the repository +contains a complete maintained example. GitHub Actions must be permitted to +create pull requests in the repository or organization workflow settings. To run an update manually, open the repository’s **Actions** tab, select **Terraform module catalogue**, choose **Run workflow**, enter an optional reason, diff --git a/scripts/sync-terraform-modules.py b/scripts/sync-terraform-modules.py index 5d133e8..b349d3e 100755 --- a/scripts/sync-terraform-modules.py +++ b/scripts/sync-terraform-modules.py @@ -291,11 +291,31 @@ def live_catalogue(catalogue): namespace = updated["namespace"] provider = updated["provider"] repositories = github_repositories(namespace) - terraform_repositories = { + all_terraform_repositories = { repository["name"]: repository for repository in repositories if repository.get("name", "").startswith(f"terraform-{provider}-") } + + stored_names = {module["name"] for module in updated["modules"]} + missing = sorted( + name + for name in stored_names + if f"terraform-{provider}-{name}" not in all_terraform_repositories + ) + if missing: + raise SyncError("GitHub module catalogue drift: missing from GitHub: " + ", ".join(missing)) + + terraform_repositories = { + name: repository + for name, repository in all_terraform_repositories.items() + if not repository.get("archived") + } + updated["modules"] = [ + module + for module in updated["modules"] + if f'terraform-{provider}-{module["name"]}' in terraform_repositories + ] stored_by_name = {module["name"]: module for module in updated["modules"]} for repository_name, repository in sorted(terraform_repositories.items()): name = module_name_from_repository(repository_name, provider) @@ -305,13 +325,6 @@ def live_catalogue(catalogue): updated["modules"].append(discovered) stored_by_name[name] = discovered - missing = sorted( - name for name in stored_by_name - if f"terraform-{provider}-{name}" not in terraform_repositories - ) - if missing: - raise SyncError("GitHub module catalogue drift: missing from GitHub: " + ", ".join(missing)) - for module in updated["modules"]: name = module["name"] repository_name = f"terraform-{provider}-{name}" @@ -699,12 +712,19 @@ def check(catalogue): stored_names = {module["name"] for module in catalogue["modules"]} live_names = {module["name"] for module in live["modules"]} additions = sorted(live_names - stored_names) + removals = sorted(stored_names - live_names) if additions: raise SyncError( "new GitHub Terraform modules detected: " + ", ".join(additions) + "; run scripts/sync-terraform-modules.py --write" ) + if removals: + raise SyncError( + "archived GitHub Terraform modules detected: " + + ", ".join(removals) + + "; run scripts/sync-terraform-modules.py --write" + ) differences = metadata_drift(catalogue, live) if differences: raise SyncError( diff --git a/terraform-modules/index.html b/terraform-modules/index.html index cc26ec9..d6edb53 100644 --- a/terraform-modules/index.html +++ b/terraform-modules/index.html @@ -70,8 +70,8 @@ "@id": "https://native-cube.com/terraform-modules/#webpage", "url": "https://native-cube.com/terraform-modules/", "name": "Native Cube AWS Terraform Modules", - "description": "A catalogue of 11 public AWS Terraform modules maintained by Native Cube.", - "dateModified": "2026-09-09T08:48:48Z", + "description": "A catalogue of 10 public AWS Terraform modules maintained by Native Cube.", + "dateModified": "2026-09-09T14:12:07Z", "isPartOf": { "@id": "https://native-cube.com/#website" }, @@ -106,7 +106,7 @@ "@type": "ItemList", "@id": "https://native-cube.com/terraform-modules/#modules", "name": "Native Cube Terraform modules", - "numberOfItems": 11, + "numberOfItems": 10, "itemListElement": [ { "@type": "ListItem", @@ -126,21 +126,6 @@ { "@type": "ListItem", "position": 2, - "item": { - "@type": "SoftwareSourceCode", - "name": "EKS Auto Mode", - "description": "Build an EKS Auto Mode cluster with managed compute, load balancing, block storage, Pod Identity, and rendered Kubernetes resources.", - "url": "https://native-cube.com/terraform-modules/#eks-auto", - "sameAs": "https://registry.terraform.io/modules/native-cube/eks-auto/aws/latest", - "codeRepository": "https://github.com/native-cube/terraform-aws-eks-auto", - "version": "1.0.0", - "programmingLanguage": "HCL", - "runtimePlatform": "Amazon Web Services" - } - }, - { - "@type": "ListItem", - "position": 3, "item": { "@type": "SoftwareSourceCode", "name": "EKS Managed Node Group", @@ -155,7 +140,7 @@ }, { "@type": "ListItem", - "position": 4, + "position": 3, "item": { "@type": "SoftwareSourceCode", "name": "EKS Fargate Profile", @@ -170,7 +155,7 @@ }, { "@type": "ListItem", - "position": 5, + "position": 4, "item": { "@type": "SoftwareSourceCode", "name": "KMS", @@ -185,7 +170,7 @@ }, { "@type": "ListItem", - "position": 6, + "position": 5, "item": { "@type": "SoftwareSourceCode", "name": "VPC Flow Logs", @@ -200,7 +185,7 @@ }, { "@type": "ListItem", - "position": 7, + "position": 6, "item": { "@type": "SoftwareSourceCode", "name": "MQ", @@ -215,7 +200,7 @@ }, { "@type": "ListItem", - "position": 8, + "position": 7, "item": { "@type": "SoftwareSourceCode", "name": "RDS Aurora", @@ -230,7 +215,7 @@ }, { "@type": "ListItem", - "position": 9, + "position": 8, "item": { "@type": "SoftwareSourceCode", "name": "Elasticache", @@ -245,7 +230,7 @@ }, { "@type": "ListItem", - "position": 10, + "position": 9, "item": { "@type": "SoftwareSourceCode", "name": "S3", @@ -260,7 +245,7 @@ }, { "@type": "ListItem", - "position": 11, + "position": 10, "item": { "@type": "SoftwareSourceCode", "name": "Documentdb", @@ -334,7 +319,7 @@

Practical Terraform modules for AWS infrastructure.

-
11
+
10
Modules
@@ -514,135 +499,7 @@

Required inputs

License not declared - Source updated -

- - - - -
-
- - Kubernetes - Active -
-

EKS Auto Mode

-

Build an EKS Auto Mode cluster with managed compute, load balancing, block storage, Pod Identity, and rendered Kubernetes resources.

-
-
-
Version
-
v1.0.0
-
-
-
Required
-
2 inputs
-
-
-
- native-cube/eks-auto/aws - -
- -
- - Usage & requirements - - -
-
-
-
Released
-
-
-
-
Terraform
-
>= 1.5.0
-
-
-
AWS provider
-
>= 6.0
-
-
-

Module block

-
module "eks-auto" {
-  source  = "native-cube/eks-auto/aws"
-  version = "1.0.0"
-
-  # insert the 2 required variables here
-}
- - -

Required inputs

-
    -
  • - name - string -
  • -
  • - subnet_ids - list(string) -
  • -
- -

- Apache-2.0 license - Source updated + Source updated

diff --git a/terraform-modules/modules.json b/terraform-modules/modules.json index 954dd09..8b95e89 100644 --- a/terraform-modules/modules.json +++ b/terraform-modules/modules.json @@ -3,7 +3,7 @@ "$schema": "./modules.schema.json", "namespace": "native-cube", "provider": "aws", - "synced_at": "2026-09-09T08:48:48Z", + "synced_at": "2026-09-09T14:12:07Z", "modules": [ { "name": "eks", @@ -32,41 +32,10 @@ ], "archived": false, "deprecated": false, - "pushed_at": "2026-08-17T10:05:21Z", + "pushed_at": "2026-09-09T13:58:30Z", "license": null } }, - { - "name": "eks-auto", - "title": "EKS Auto Mode", - "category": "Kubernetes", - "theme": "auto", - "icon": "bolt", - "summary": "Build an EKS Auto Mode cluster with managed compute, load balancing, block storage, Pod Identity, and rendered Kubernetes resources.", - "example_path": "examples/minimal", - "metadata": { - "version": "1.0.0", - "published_at": "2026-07-22T08:18:13.94084Z", - "terraform_requirement": ">= 1.5.0", - "provider_requirement": ">= 6.0", - "required_inputs": [ - { - "name": "name", - "type": "string", - "description": "Name prefix for module-created resources. Used as the EKS cluster name when cluster_name is null." - }, - { - "name": "subnet_ids", - "type": "list(string)", - "description": "Subnet IDs for the EKS control plane and EKS Auto Mode managed compute. Use at least two subnets in different Availability Zones." - } - ], - "archived": false, - "deprecated": false, - "pushed_at": "2026-06-25T07:33:49Z", - "license": "Apache-2.0" - } - }, { "name": "eks-node-group", "title": "EKS Managed Node Group",