{"id":17888281,"url":"https://github.com/squat/terraform-provider-openapi-scaffolding","last_synced_at":"2026-01-16T00:46:04.441Z","repository":{"id":207039283,"uuid":"718262960","full_name":"squat/terraform-provider-openapi-scaffolding","owner":"squat","description":"A Cookiecutter template for scaffolding new Terraform providers that are automatically generated from an OpenAPI specification","archived":false,"fork":false,"pushed_at":"2024-10-12T06:27:05.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T16:44:34.173Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/squat.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":"2023-11-13T18:12:41.000Z","updated_at":"2024-10-12T06:27:04.000Z","dependencies_parsed_at":"2023-11-13T20:26:31.255Z","dependency_job_id":"a312bee0-3f69-4914-8684-51d20e4e4e8e","html_url":"https://github.com/squat/terraform-provider-openapi-scaffolding","commit_stats":null,"previous_names":["squat/terraform-provider-openapi-scaffolding"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Fterraform-provider-openapi-scaffolding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Fterraform-provider-openapi-scaffolding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Fterraform-provider-openapi-scaffolding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Fterraform-provider-openapi-scaffolding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/squat","download_url":"https://codeload.github.com/squat/terraform-provider-openapi-scaffolding/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246927809,"owners_count":20856193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-10-28T13:37:00.597Z","updated_at":"2026-01-16T00:46:04.410Z","avatar_url":"https://github.com/squat.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform Provider OpenAPI Scaffolding\n\nThis is a [Cookiecutter](https://github.com/cookiecutter/cookiecutter) template for scaffolding new Terraform providers that are automatically generated from an OpenAPI specification.\n\n[![Build Status](https://github.com/squat/terraform-provider-openapi-scaffolding/workflows/CI/badge.svg)](https://github.com/squat/terraform-provider-openapi-scaffolding/actions?query=workflow%3ACI)\n\n## Getting Started\n\nIn order to render a new provider from the template, `cookiecutter` must be installed.\nOptionally, [`cruft`](https://github.com/cruft/cruft) can be installed to enable automatically updating the provider from the template.\nAssuming, `cruft` is available, a new Terraform provider can be rendered with:\n```sh\ncruft create git@github.com:squat/terraform-provider-openapi-scaffolding.git \u003c\u003c EOF\nyour_github_username\nCloudProviderName\nhttps://cloud.provider.website.example.com\nhttps://cloud.provider.website.example.com/openapi-specification.yaml\n\nEOF\n```\n\nOnce the template has rendered, change into to the newly created directory:\n```sh\ncd terraform-provider-cloudprovidername\n```\n\nNext, edit the [OpenAPI Overlay](https://github.com/OAI/Overlay-Specification) `overlay.yaml` file to annotate the API operations with the necessary [Speakeasy tags](https://www.speakeasyapi.dev/docs/create-terraform#how-it-works-adding-annotations).\nFinally, export the Speakeasy API key and generate the provider:\n```sh\nexport SPEAKEASY_API_KEY=\u003cyour_speakeasy_api_key\u003e\nmake generate\n```\n\nThat's it!\nYou now have a working Terraform provider.\n\n## Testing\n\nTo test the newly generated provider, navigate to the root of the provider repository and run:\n```sh\ngo run main.go --debug\n```\n\nThis command will output a `TF_REATTACH_PROVIDERS` environment variable; copy it and navigate to a new directory containing Terraform configuration that leverages the provider.\nNow, initialize and apply the Terraform configuration:\n```sh\nTF_REATTACH_PROVIDERS=... terraform init\nTF_REATTACH_PROVIDERS=... terraform apply\n```\n\n## Publishing\n\nThe provider can now be tagged and pushed to a GitHub repository.\nReleases are automated using GitHub actions: a new GitHub release will automatically be created for every Git tag that is found in the repository.\nThe following secrets must be set in the GitHub repository:\n* `GPG_PRIVATE_KEY`;\n* `PASSPHRASE`; and\n* `SPEAKEASY_API_KEY`.\n\nSee the [Terraform providers documentation](https://developer.hashicorp.com/terraform/registry/providers/publishing) for instructions on generating a GPG key and passphrase and create a [Speakeasy](https://www.speakeasyapi.dev/) account in order to generate an API key.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsquat%2Fterraform-provider-openapi-scaffolding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsquat%2Fterraform-provider-openapi-scaffolding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsquat%2Fterraform-provider-openapi-scaffolding/lists"}