Ashvin S b33b76013c Merge pull request #197 from navi-infra/INFRA-3199
INFRA-3199 | Ashvin | Determine state bucket for RDS based on account
2024-05-09 15:40:14 +05:30
2024-03-11 20:33:50 +05:30
2024-03-11 20:33:50 +05:30
2024-03-11 20:33:50 +05:30

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
  • 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

  1. Interrupts, term signals are not handled when code execution moves to bash.

Before commit

Always run

go-bindata -o bindata/bindata.go templates/...
go test ./...

After commit

Always

  • create a tag and push
  • run gocd infra agent pipeline
Description
No description provided
Readme 13 MiB
Languages
Go 60.2%
HCL 30.3%
Shell 9.5%