Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andresjz/tf-provider
Project scaffolding for Terraform made with yeoman
https://github.com/andresjz/tf-provider
aws checkov devops-tools go lint terraform terratest
Last synced: about 14 hours ago
JSON representation
Project scaffolding for Terraform made with yeoman
- Host: GitHub
- URL: https://github.com/andresjz/tf-provider
- Owner: andresjz
- License: mit
- Created: 2022-02-05T05:05:14.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-02-06T09:09:50.000Z (over 2 years ago)
- Last Synced: 2024-09-19T07:09:42.060Z (9 days ago)
- Topics: aws, checkov, devops-tools, go, lint, terraform, terratest
- Language: JavaScript
- Homepage:
- Size: 85.9 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Terraform Provider generator
Scaffolding / Boilerplate generator for new Terraform provider projects
https://www.npmjs.com/package/generator-tfp
### Features
- `main.tf`, `variables.tf`,`outputs.tf` files to provider tf path
- `test` using terratest
- `.pre-commit-config.yaml` for `terraform fmt`, `terraform-docs`, `check-merge-conflict` and (`go fmt`, `golint`) / `rubocop`
### Prerequisites
- [terraform](https://learn.hashicorp.com/terraform/getting-started/install#installing-terraform) `pro tip: use tfenv`
- [pre-commit](https://pre-commit.com/#install)
- For tests
- **terratest**
- [golang](https://golang.org/doc/install#install) `pro tip: use gvm`
- [golint](https://github.com/golang/lint#installation)### Installation
- To use generator using Docker, Install [Docker](https://docs.docker.com/engine/install/) `recommended`
- To use generator using Nodejs, Install [nodejs](https://nodejs.org/en/download/) `pro tip: use nvm`Once you have Node.js installed, then [install Yeoman](https://yeoman.io).
```shell
npm install -g yo
```Now you can install tfp.
```shell
npm install -g tfp
```**Note**: You can also clone the project from github, and then use `npm link` in the project's root directory. The link will make it so that the terraform project generator will act like you installed it using `npm install -g generator-tf-proj`.
```shell
npm link
```### Usage
To use the included generator execute the below command in shell and provide your answers to the prompts.
##### With NodeJs
```sh
yo tfp
```##### Prompts
```sh
...
? Enter name for the new terraform provider : example-provider
? Enter description for the new terraform provider : Example terraform provider
? Enter author name : author
? Choose terraform version (Use arrow keys)
❯ 1.1.5
1.1.4
```Project layout generated for the new provider
```
example-provider
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .pre-commit-config.yaml
├── README.md
├── tf
│ ├── .terraform-version
│ ├── main.tf
│ ├── outputs.tf
│ ├── providers.tf
│ └── variables.tf
├── test
└── example_test.go
```##### Post generation steps
Step 1
On the generated provider's root path, Initialize git repository
```sh
git init
```Step 2
On the generated provider's root path, Install pre-commit hooks
```sh
pre-commit install
```Step 3
For golang tests, get below libs (you can use the dockerized version)
```sh
> go get github.com/gruntwork-io/terratest/modules/terraform
> go get github.com/stretchr/testify/assert
```### Contribution
Found a bug? feel free to raise an issue.
Pull requests are always welcome. Keen to review and merge asap.### Maintainer
### License
MIT