Skip to main content

Convert Cloudformation Templates to Terraform.

Project description

Python Latest Tests Coverage License


Cloudformation 2 Terraform

Convert your Cloudformation templates to Terraform.
Report Bug · Request Feature ·

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. Contact
  7. Acknowledgements

About The Project

cf2tf is a CLI tool that attempts to convert Cloudformation to Terraform. We say attempt because it's not really possible to make the conversion with 100% accuracy (currently) because of several reasons mostly around converting a Map value in Cloudformation to the correct value in HCL.

Getting Started

Prerequisites

Cloudformation 2 Terraform requires python >= 3.8

Installation

cf2tf is available as an easy to install pip package.

pip install cf2tf

If you are a Homebrew user, can you install via brew:

$ brew install cf2tf

Usage

To convert a template to terraform.

cf2tf my_template.yaml

This above command will dump all the terraform resources to stdout. You might want to save the results:

cf2tf my_template.yaml > main.tf

If you prefer to have each resource in its own file then:

cf2tf my_template.yaml -o some_dir

If some_dir doesn't exist, then it will be created for you. Then each resource type will be saved to a specific file (variables.tf, outputs.tf etc.).

Roadmap

  • Better conversion of Cloudformation Maps to Terraform (Maps, Block and json)
  • Allow overides for specific resources
  • Handle more advanced Cloudformation parameter types like SSM/Secrets manager
  • Better handling of Recources/Properties that failed conversion
  • Only download files needed, not entire terraform source code (200MB)

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

This project uses poetry to manage dependencies and pre-commit to run formatting, linting and tests. You will need to have both installed to your system as well as python 3.12.

  1. Fork the Project

  2. Setup the environment. This project uses vscode devcontainer to provide a completly configured development environment. If you are using vscode and have the remote container extension installed, you should be asked to use the devcontainer when you open this project inside of vscode.

    If you are not using devcontainers then you will need to have python installed. Install the poetry, nox, nox_poetry and pre-commit packages. Then run poetry install and pre-commit install commands.

    Most of the steps can be found in the Dockerfile.

  3. Create your Feature Branch (git checkout -b feature/AmazingFeature)

  4. Commit your Changes (git commit -m 'Add some AmazingFeature')

  5. Push to the Branch (git push origin feature/AmazingFeature)

  6. Open a Pull Request

Contact

Levi - @shady_cuz

Acknowledgements

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cf2tf-0.9.3a28.tar.gz (37.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cf2tf-0.9.3a28-py3-none-any.whl (41.7 kB view details)

Uploaded Python 3

File details

Details for the file cf2tf-0.9.3a28.tar.gz.

File metadata

  • Download URL: cf2tf-0.9.3a28.tar.gz
  • Upload date:
  • Size: 37.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.13 Linux/6.17.0-1013-azure

File hashes

Hashes for cf2tf-0.9.3a28.tar.gz
Algorithm Hash digest
SHA256 09830848968dcbdf0a39ac02ad1075f1353434f055b1ac6b9b9fa60a77bfb7d1
MD5 bcd336848a6af78ffe630b3d7e1af9cc
BLAKE2b-256 aab7d13215e7adbd8aa12b176b41794aed41d3fd417037cc730bc1bd7de80997

See more details on using hashes here.

File details

Details for the file cf2tf-0.9.3a28-py3-none-any.whl.

File metadata

  • Download URL: cf2tf-0.9.3a28-py3-none-any.whl
  • Upload date:
  • Size: 41.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.13 Linux/6.17.0-1013-azure

File hashes

Hashes for cf2tf-0.9.3a28-py3-none-any.whl
Algorithm Hash digest
SHA256 a6b6fa0bc07ec8317c3c1ea5b1350a5f27e1d97397f85eea38a2bbee1bfa1f6b
MD5 fcb9d80d705e6804390bd6db2161090c
BLAKE2b-256 6bd7936c8041f1ddbf03d3f8dc49bc33292ed280fc634d9537da3eda77d2bb5b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page