All Projects → dikhan → Terraform Provider Openapi

dikhan / Terraform Provider Openapi

Licence: apache-2.0
OpenAPI Terraform Provider that configures itself at runtime with the resources exposed by the service provider (defined in a swagger file)

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Terraform Provider Openapi

Rapipdf
PDF generation from OpenAPI / Swagger Spec
Stars: ✭ 132 (-1.49%)
Mutual labels:  swagger, openapi
Wizard
Wizard是一款开源的文档管理工具,支持Markdown/Swagger/Table类型的文档。
Stars: ✭ 1,733 (+1193.28%)
Mutual labels:  swagger, openapi
L5 Swagger
OpenApi or Swagger integration to Laravel
Stars: ✭ 1,781 (+1229.1%)
Mutual labels:  swagger, openapi
Restful React
A consistent, declarative way of interacting with RESTful backends, featuring code-generation from Swagger and OpenAPI specs 🔥
Stars: ✭ 1,814 (+1253.73%)
Mutual labels:  swagger, openapi
Angular Swagger Ui
An angularJS implementation of Swagger UI
Stars: ✭ 131 (-2.24%)
Mutual labels:  swagger, openapi
Swagger Combine
Combines multiple Swagger schemas into one dereferenced schema.
Stars: ✭ 102 (-23.88%)
Mutual labels:  swagger, openapi
Netcoreblockly
.NET Core API to Blockly - generate from WebAPI, Swagger, OData, GraphQL =>
Stars: ✭ 121 (-9.7%)
Mutual labels:  swagger, openapi
Swurg
Parse OpenAPI documents into Burp Suite for automating OpenAPI-based APIs security assessments (approved by PortSwigger for inclusion in their official BApp Store).
Stars: ✭ 94 (-29.85%)
Mutual labels:  swagger, openapi
Vs Swagger Viewer
Swagger Viewer lets you preview and validate Swagger 2.0 and OpenAPI files as you type in Visual Studio Code.
Stars: ✭ 126 (-5.97%)
Mutual labels:  swagger, openapi
Grpc Gateway
The gRPC-Gateway is a plugin of the Google protocol buffers compiler protoc. It reads protobuf service definitions and generates a reverse-proxy server which translates a RESTful HTTP API into gRPC. This server is generated according to the google.api.http annotations in your service definitions.
Stars: ✭ 12,223 (+9021.64%)
Mutual labels:  swagger, openapi
Apifuzzer
Fuzz test your application using your OpenAPI or Swagger API definition without coding
Stars: ✭ 101 (-24.63%)
Mutual labels:  swagger, openapi
Mentorship Backend
Mentorship System is an application that matches women in tech to mentor each other, on career development, through 1:1 relations during a certain period of time. This is the backend of this system.
Stars: ✭ 132 (-1.49%)
Mutual labels:  swagger, openapi
Koa Oai Router
Koa Router, based on OpenAPI, Swagger and Json Schema.
Stars: ✭ 97 (-27.61%)
Mutual labels:  swagger, openapi
Webapiclient
An open source project based on the HttpClient. You only need to define the c# interface and modify the related features to invoke the client library of the remote http interface asynchronously.
Stars: ✭ 1,618 (+1107.46%)
Mutual labels:  swagger, openapi
Kaizen Openapi Editor
Eclipse Editor for the Swagger-OpenAPI Description Language
Stars: ✭ 97 (-27.61%)
Mutual labels:  swagger, openapi
Openapi Core
OpenAPI core
Stars: ✭ 119 (-11.19%)
Mutual labels:  swagger, openapi
Fastapi Jsonrpc
JSON-RPC server based on fastapi
Stars: ✭ 82 (-38.81%)
Mutual labels:  swagger, openapi
Cats
Generate tests at runtime based on OpenApi specs
Stars: ✭ 86 (-35.82%)
Mutual labels:  swagger, openapi
Http Router
🎉 Release 2.0 is released! Very fast HTTP router for PHP 7.1+ (incl. PHP8 with attributes) based on PSR-7 and PSR-15 with support for annotations and OpenApi (Swagger)
Stars: ✭ 124 (-7.46%)
Mutual labels:  swagger, openapi
Open Api Renderer
🎩 A React renderer for OpenAPI v3.
Stars: ✭ 127 (-5.22%)
Mutual labels:  swagger, openapi

Terraform Provider OpenAPI Build Status GoDoc GoReportCard CodeCov

This terraform provider aims to minimise as much as possible the efforts needed from service providers to create and maintain custom terraform providers. This provider uses terraform as the engine that will orchestrate and manage the cycle of the resources and depends on a swagger file (hosted on a remote endpoint) to successfully configure itself dynamically at runtime.

Powered by https://www.terraform.io

Following The OpenAPI Specification

What are the main pain points that this terraform provider tries to tackle?

  • As as service provider, you can focus on improving the service itself rather than the tooling around it.
  • Due to the dynamic nature of this terraform provider, the service provider can continue expanding the functionality of the different APIs by introducing new versions, and this terraform provider will be able to discover the new resource versions automatically without the need to add support for those as you would when mantining your own custom Terraform provider.
  • Find consistency across APIs provided by different teams encouraging the adoption of OpenAPI specification for describing, producing, consuming, and visualizing RESTful Web services.

Overview

API terraform provider is a powerful full-fledged terraform provider that is able to configure itself at runtime based on a Swagger specification file containing the definitions of the APIs exposed. The dynamic nature of this provider is what makes it very flexible and convenient for service providers as subsequent upgrades to their APIs will not require new compilations of this provider. The service provider APIs are discovered on the fly and therefore the service providers can focus on their services rather than the tooling around it.

Pre-requirements

  • The service provider hosts APIs documented using OpenApi 2.0 specification and the APIs comply with the OpenAPI Terraform Provider How to guidelines. The service provider API's OpenAPI document must also be available via a discovery endpoint served through HTTP/s or the file system.

Requirements

How to use Terraform Provider OpenAPI

Things to know regarding custom terraform providers

  • Terraform expects third party (in-house) providers to be manually installed in a specific directory. Refer to the OpenAPI Terraform provider installation instructions to learn more about this.
  • Terraform expects terraform provider names to follow a specific naming scheme. The naming scheme for plugins is terraform-<type>-<name>_vX.Y.Z, where <type> is either provider or provisioner, <name> is the provider's name and X.Y.Z is the version of the plugin.

More information about how terraform discovers third party terraform providers and naming conventions here.

OpenAPI Terraform provider installation

There are multiple ways how the OpenAPI Terraform provider can be installed. Please refer to the OpenAPI Terraform provider installation document to learn more about it.

OpenAPI Terraform provider in action

After having provisioned your environment with the OpenAPI Terraform provider you can now write Terraform configuration files using resources provided by the OpenAPI service. Refer to Using the OpenAPI Terraform Provider doc for more details.

Terraform provider documentation

You can generate the Terraform documentation automatically given an already Terraform compatible OpenAPI document using the The OpenAPI Terraform Documentation Renderer library. The OpenAPI document is the source of truth for both the OpenAPI Terraform provider as well as the user facing documentation.

References

Additionally, the following documents provide deep insight regarding OpenAPI and Terraform as well as frequently asked questions:

  • How to document contains information about how to define a OpenAPI document following good practises that make it work seamlessly with this terraform provider. Additionally, learn more about what is currently supported.
  • Migrating to Terraform 0.12. This document describes how to update configuration created using Terraform v0.11 to v0.12.
  • FAQ document answers for the most frequently asked questions.

Contributing

Please follow the guidelines from:

References

  • go-swagger: Api terraform provider makes extensive use of this library which offers a very convenient implementation to serialize and deserialize swagger specifications.
  • JsonPath: Json path is used in the plugin external configuration file to define values for provider schema properties that are coming from external files.

Authors

  • Daniel I. Khan Ramiro

See also the list of contributors who participated in this project.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].