{"id":19427750,"url":"https://github.com/zeroae/terraform-registry","last_synced_at":"2026-05-03T07:42:44.745Z","repository":{"id":67578726,"uuid":"247394656","full_name":"zeroae/terraform-registry","owner":"zeroae","description":"(Private) Terraform Registry using Chalice and PynamoDB","archived":false,"fork":false,"pushed_at":"2020-06-22T17:19:20.000Z","size":89,"stargazers_count":2,"open_issues_count":16,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-01T06:26:53.615Z","etag":null,"topics":["chalice","pynamodb","registry","terraform","tf-registry"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zeroae.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-15T03:29:12.000Z","updated_at":"2022-09-24T16:15:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"bf732e31-3816-4706-84b6-884c8f7d9e2e","html_url":"https://github.com/zeroae/terraform-registry","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zeroae/terraform-registry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroae%2Fterraform-registry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroae%2Fterraform-registry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroae%2Fterraform-registry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroae%2Fterraform-registry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeroae","download_url":"https://codeload.github.com/zeroae/terraform-registry/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroae%2Fterraform-registry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32562118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chalice","pynamodb","registry","terraform","tf-registry"],"created_at":"2024-11-10T14:12:46.732Z","updated_at":"2026-05-03T07:42:44.729Z","avatar_url":"https://github.com/zeroae.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zeroae/terraform-registry\nZero A.E.'s [12-Factor][12-factor] codebase of the [Terraform Registry API][registry-api] implemented using [Chalice][chalice] and [PynamoDB][pynamodb].\n\n## Similar projects (and likely more complete), in alphabetical order\n  - [apparentlymart/terraform-aws-tf-registry](https://github.com/apparentlymart/terraform-aws-tf-registry)\n  - [apparentlymart/terraform-simple-registry](https://github.com/apparentlymart/terraform-simple-registry)\n  - [dflook/terraform-registry](https://github.com/dflook/terraform-registry)\n  - [outsideris/citizen](https://github.com/outsideris/citizen)\n  - [rmb938/tf-registry](https://github.com/rmb938/tf-registry)\n\n## Deployments\n1. Requirements: \n    - conda\n    - docker-compose\n    - keybase (for secrets)\n\n1. Clone the repository and secrets\n    ```shell script\n    git clone https://github.com/zeroae/terraform-registry.git\n    cd terraform-registry\n\n    # Submodules did not work\n    git clone keybase://team/zeroae/terraform-registry-secrets secrets\n    # Fix the acme.json file permissions. 600 is not able to be committed to Git\n    find . -type f -name acme.json -exec chmod 600 {} \\;\n    ```\n   \n1. Create conda environment\n    ```shell script\n    conda env create \n    conda activate terraform-registry\n    ```` \n\n### Local Deployment\n1. Additional Requirements:\n    - docker-compose\n\n1. Start the app on local mode\n    ```shell script\n    docker-compose up -d\n    ```\n   \n1. Wait until the `app`, `backend` and `manage` services are healthy\n    ```shell script\n    watch docker-compose ps  \n    ```\n   \n1. Attach to the Management container \n    ```shell script\n    docker attach terraform-registry_manage_1\n    ./manage.py --help\n    ```\n\n    1. Initialize the Database\n       ```shell script\n       ./manage.py db init\n       ./manage.py db restore tests/integration/local.ddb\n       ```\n    1. Verify Terraform CLI can reach the local server\n        ```shell script\n        cd tests/integration/tf.local.zeroae.net\n        rm -rf .terraform\n        terraform init\n        ```\n    1. Detach from the container\n        ```shell script\n        Ctrl-P + Ctrl-Q\n        ```\n\n1. Verify Terraform CLI can reach the local registry (outside management)\n    ```shell script\n    cd tests/integration/tf.local.zeroae.net\n    rm -rf .terraform\n    terraform init\n    ```\n\n## AWS (dev) Deployment\n1. Use Chalice to (re)deploy the `dev` stage to AWS\n    ```shell script\n    export AWS_CONFIG_FILE=\"./secrets/aws/config\"\n    chalice deploy --stage=dev\n    ```\n   You may also set the `AWS_DEFAULT_PROFILE` environment variable to control where the API is deployed\n\n1. Initialize the Database\n    ```shell script\n    ./manage.py --stage=dev db init\n\n    # Optionally load content into the DynamoDB backend\n    ./manage.py --stage=dev db restore tests/integration/local.ddb\n    ```\n\n1. Configure a custom domain name(`tf.zeroae.net`) to point to the dev stage\n    1. Use the AWS Certificate Manager to register a certificate for `tf.zeroae.net`\n    1. Create a custom domain name in API Gateway\n        - `tf.zeroae.net`\n        - Edge Optimized\n        - TLS 1.2\n        - The ACM certificate from the previous step\n    1. Create an ALIAS DNS record for `tf.zeroae.net` pointing to the API Gateway Name and ZONE ID from previous step.\n    1. Add API Mapping for the dev Stage\n\n1. Verify Terraform CLI can reach the remote server\n    ```shell script\n    cd tests/integration/tf.zeroae.net\n    rm -rf .terraform\n    terraform init\n    ```\n\n## CLI Usage (`manage.py`)\n\nWhen utilizing the `manage.py` remember that if a `--stage` is not specified then all of the actions will be taken on\nthe local environment that can be established by the `docker-compose` configuration described above.\n\n### Working with the DynamoDB Backend\n\nThe backend for the API can be controlled through the `manage.py` command line interface (CLI).\n\n**Initialize**\n\n```shell script\n./manage.py db init\n```\n\n**Backup**\n\n```shell script\n./manage.py db backup \u003cout filename\u003e\n```\n\n**Restore**\n\n```shell script\n./manage.py db restore \u003cin file\u003e\n```\n\n**Destroy**\n\n```shell script\n./manage.py db destroy\n```\n\n### Working with Modules\n\nPlacing modules in the registry can be done through the `manage.py` command line interface (CLI).\n\nEach module record is a combination of the name, the provider, the version and then the location in which that module\ncan be found.\n\n**Create a Record**\n\n```shell script\n./manage.py record create \u003cmodule\u003e/\u003cname\u003e/\u003cprovider\u003e/\u003cversion\u003e \u003cgo-getter-url\u003e\n```\n\nAdditional Options: `--verified`, `--owner`, `--description`, `--source`\n\n**Delete a Record**\n\n```shell script\n./manage.py record delete \u003cmodule\u003e/\u003cname\u003e/\u003cprovider\u003e/\u003cversion\u003e\n```\n\n**Import a Record from [registry.terraform.io][registry.terraform.io]**\n\n```shell script\n./manage.py record import [--registry registry.terraform.io] \u003cmodule\u003e/\u003cname\u003e/\u003cprovider\u003e/\u003cversion\u003e\n```\n\n---\n[12-factor]: https://www.12factor.net\n[chalice]: https://github.com/aws/chalice\n[pynamodb]: https://github.com/pynamodb/PynamoDB\n[registry-api]: https://www.terraform.io/docs/registry/api.html\n[registry.terraform.io]: https://registry.terraform.io\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeroae%2Fterraform-registry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzeroae%2Fterraform-registry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeroae%2Fterraform-registry/lists"}