Sato converts AWS CloudFormation and Azure ARM templates into Terraform configuration files.
Sato is a translation tool that converts AWS CloudFormation and Azure ARM templates into Terraform configuration files. It automates the migration of infrastructure-as-code from proprietary formats to Terraform's open-source syntax, helping teams modernize their cloud provisioning workflows. The tool generates ready-to-use Terraform resource files that can be directly applied or further customized.
DevOps engineers, cloud architects, and platform teams who are managing legacy CloudFormation or ARM templates and want to adopt Terraform for infrastructure management.
Developers choose Sato because it significantly reduces the manual effort of rewriting cloud infrastructure code, providing a quick path to Terraform adoption. Its unique selling point is supporting both major cloud vendors' templating formats in a single, fast Go-based tool.
Sato converts ARM or CFN into Terraform
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports both AWS CloudFormation and Azure ARM templates in one tool, as shown by the parse command for CFN and bisect for ARM, enabling cross-cloud migration.
Built in Go, it runs as a standalone binary or via Docker, with installation options like brew and scoop ensuring quick deployment and execution.
Generated Terraform files can be validated with terraform plan and integrated with policy tools like Pike, as demonstrated in the README with scan examples.
Includes a see command to show Terraform equivalents for CFN or ARM resources, aiding in learning and verification, e.g., mapping AWS::EC2::Instance to aws_instance.
Does not support all CloudFormation or ARM resources and built-in functions; the README admits 'needs a lot of work supporting resources and built-in functions/template as yet.'
Requires valid and strictly typed CloudFormation templates, as noted in the 'Valid CloudFormation' section where booleans and ints must be properly typed, not as strings.
Output is pragmatic but may not match exact original structures, necessitating manual tweaks; the philosophy states it aims to get users 'most of the way' but not perfectly.
Only compatible with Terraform versions >=0.14.0, as indicated by the badge, which could limit use in environments with older Terraform setups.