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 additional usage options.
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 Cloud Pricing API by registering for an API key:
infracost register
The INFRACOST_API_KEY
environment variable can be used to set the API key in CI systems.
If you prefer, you can run your own pricing API.
-
Run infracost
using our example Terraform project to see how it works. You can also play with the main.tf
file in the example:
git clone https://github.com/infracost/example-terraform.git
infracost --tfdir example-terraform/aws
Basic usage
There are 4 usage methods for Infracost depending on your use-case. The following is the default method. Point to the Terraform directory using --tfdir
and pass any required Terraform flags using --tfflags
. Internally Infracost runs Terraform init
, plan
and show
; init
requires cloud credentials to be set, e.g. via the usual AWS_ACCESS_KEY_ID
environment variables. This method works with remote state too.
infracost --tfdir /path/to/code --tfflags "-var-file=myvars.tfvars"
The Infracost GitHub Action, GitLab CI template or CircleCI Orb can be used to automatically add a PR comment showing the cost estimate diff
between a pull/merge request and the master branch.
Development
Install Go dependencies:
make deps
Install latest version of terraform-provider-infracost. If you want to use a local development version, see this
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
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 community Slack channel, we are a friendly bunch and happy to help you get started :)
We're looking for people to help us add new AWS and Google resources and are willing to pay for that. Please direct-message Ali Khajeh-Hosseini on our community Slack channel to find out more!
License
Apache License 2.0