Scaffolding / Boilerplate generator for new Terraform provider projects
https://www.npmjs.com/package/generator-tfp
-
main.tf,variables.tf,outputs.tffiles to provider tf path -
testusing terratest -
.pre-commit-config.yamlforterraform fmt,terraform-docs,check-merge-conflictand (go fmt,golint) /rubocop
- terraform
pro tip: use tfenv - pre-commit
- For tests
- To use generator using Docker, Install Docker
recommended - To use generator using Nodejs, Install nodejs
pro tip: use nvm
Once you have Node.js installed, then install Yeoman.
npm install -g yoNow you can install tfp.
npm install -g tfpNote: 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.
npm linkTo use the included generator execute the below command in shell and provide your answers to the prompts.
yo tfp...
? 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.4Project 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
Step 1
On the generated provider's root path, Initialize git repository
git initStep 2
On the generated provider's root path, Install pre-commit hooks
pre-commit installStep 3
For golang tests, get below libs (you can use the dockerized version)
> go get github.com/gruntwork-io/terratest/modules/terraform
> go get github.com/stretchr/testify/assertFound a bug? feel free to raise an issue.
Pull requests are always welcome. Keen to review and merge asap.
MIT