Terraform
Terraform is used to manage existing and popular service providers for building and versioning infrastructure as well as custom in-house solutions. It generates an execution plan describing the desired state, an then executes it to build the described infrastructure. As the configuration changes, it is able to determine the changes and execute accordingly.