11254438fa41ef9c1ed482d9d48c3b1c6bf3f50b
infra-provisioner
This tool provisions infra resources like rds, s3 on demand with details given in infra_manifest.
Simply explained, its a thin wrapper over terraform to hide the complexities like hcl, remote backend, targeted resources etc when provisioning resources.
SonarQube dashboard
Take a look at the sonarqube dashboard
Usage Guide
Install
go get -v github.com/navi-infra/infra-provisioner/v2
Check templates generated
infra-provisioner --manifest sample_infra_manifest.json --template-only database
Run plan for resources
infra-provisioner --manifest sample_infra_manifest.json --plan database
Provision resource
infra-provisioner --manifest sample_infra_manifest.json database
Development Guide
Typical workflow
- Add templates to your resource in templates folder
- Make changes to cli to support new resource
- Package templates with
go-bindata -o bindata/bindata.go templates/...- Note: check bindata.go after generating to validate package name should be
bindata
- Note: check bindata.go after generating to validate package name should be
- Dry run with
go run . --manifest sample_infra_manifest.json --template-only resourceName
Package templates
go get github.com/shuLhan/go-bindata/cmd/go-bindata
go-bindata -pkg=bindata -o bindata/bindata.go templates/...
Caveats
- Interrupts, term signals are not handled when code execution moves to bash.
Before commit
Always run
go-bindata -pkg=bindata -o bindata/bindata.go templates/...
go test ./...
After commit
Always
- create a tag and push
- run gocd infra agent pipeline
Description
Languages
Go
60.2%
HCL
30.3%
Shell
9.5%