Infracost shows hourly and monthly cost estimates for a Terraform project. This helps developers, DevOps et al. quickly see the cost breakdown and compare different deployment options upfront.
Table of Contents
Checkout the docs site for detailed usage options, supported resources and more information.
Installation
-
Download and install the latest Infracost release
Linux:
curl -s -L https://github.com/infracost/infracost/releases/latest/download/infracost-linux-amd64.tar.gz, tar xz -C /tmp && \ sudo mv /tmp/infracost-linux-amd64 /usr/local/bin/infracost
macOS (Homebrew):
brew install infracost
macOS (manual):
curl -s -L https://github.com/infracost/infracost/releases/latest/download/infracost-darwin-amd64.tar.gz, tar xz -C /tmp && \ sudo mv /tmp/infracost-darwin-amd64 /usr/local/bin/infracost
Docker:
docker pull infracost/infracost docker run --rm \ -e INFRACOST_API_KEY=see_following_step_on_how_to_get_this \ -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \ -v $PWD/:/code/ infracost/infracost --tfdir /code/ # add other required flags for infracost or envs for Terraform
-
Use our free hosted API for cloud prices by registering for an API key:
infracost register
Alternatively you can run your own pricing API and set the
INFRACOST_PRICING_API_ENDPOINT
environment variable to point to it.The
INFRACOST_API_KEY
environment variable can be used to set to the API key in CI systems.
Basic usage
Generate a cost breakdown from a Terraform directory:
infracost --tfdir /path/to/code --tfflags "-var-file=myvars.tfvars"
Check the docs site for more details.
The Infracost GitHub action can be used to automatically add a PR comment showing the cost estimate diff
between a pull request and the master branch whenever Terraform files change.
Development
Install Go dependencies:
make deps
Install latest version of terraform-provider-infracost. If you want to use a local development version see #using-a-local-version-of-terraform-provider-infracost
make install_provider
Get an API key.
make run ARGS="register"
Alternatively checkout and run the cloud-pricing-api and set the INFRACOST_PRICING_API_ENDPOINT
environment variable to point to it.
Add the API key to your .env.local
file:
cat <<EOF >> .env.local
INFRACOST_API_KEY=XXX
EOF
Run the code:
make run ARGS="--tfdir examples/terraform"
Run all tests:
make test
Exclude integration tests:
make test ARGS="-v -short"
Build:
make build
Using a local version of terraform-provider-infracost
To use a local development version of terraform-provider-infracost
-
Fork/clone the terraform-provider-infracost repository
-
Inside the directory that you cloned the repository run the following to install the local version in your
~/.terraform.d/plugins
directory:
make install
Contributing
Pull requests are welcome! For more info, see the CONTRIBUTING file. For major changes, please open an issue first to discuss what you would like to change.
Join our chat, we are a friendly bunch and happy to help you get started :) https://discord.gg/rXCTaH3