Skip to content
This repository has been archived by the owner on Jun 11, 2024. It is now read-only.
/ fusion Public archive

🧬 Generate secure by default cloud infrastructure configuration with Go and Terraform.

License

Notifications You must be signed in to change notification settings

slalombuild/fusion

Repository files navigation

🧬 fusion

Go Reference Latest Release Go Report Card

Generate secure by default cloud infrastructure configuration with Go and Terraform.

Install 📥

Install the fusion cli

Go

If you have Go setup on your system, you can install fusion with go install

go install github.com/slalombuild/fusion/cmd/fusion@latest

# Optionally install the fusionctl dev tool
go install github.com/slalombuild/fusion/cmd/fusionctl@latest

Homebrew

brew tap slalombuild/fusion https://github.com/slalombuild/fusion
brew install fusion

Scoop

scoop bucket add fusion https://github.com/slalombuild/fusion.git
scoop install fusion

Docker Image

docker run --rm -it ghcr.io/slalombuild/fusion:latest --help

Usage ⚡️

Getting started with fusion is as simple as naming the type of cloud resource you want and allow fusion to generate the terraform.

See available commands with --help

fusion —-help

Usage: fusion <command>

Generate secure by default cloud infrastructure configuration

Flags:
  -h, --help                  Show context-sensitive help.
      --version               Show version information
  -v, --verbose               Enable verbose logging
  -n, --no-color              Disable colorful output ($NO_COLOR)
      --no-format             Disable code formatting ($NO_FORMAT)
      --config=CONFIG-FLAG    Provide a JSON file which will populate flags and their values

Commands:
  new    Create new cloud resources with Terraform
  gen    Generate snippets and shell completions

Run "fusion <command> --help" for more information on a command.

For more in-depth examples of creating cloud resources with fusion, view the Example folder.

Snippets

Snippets are available in all supported IDEs with the pattern fsn-<provider>_<resource>

VSCode

# Install fusion vscode snippets into default snippets 
# directory
fusion gen snippets -e vscode -i
VSCode not installed in the default directory?
You will need to output a json file with `fusion gen snippets -e vscode -o filename.json` and place it and `package.json` from the repository's snippets directory within `.../.vscode/extensions/fusion-snippets`, creating directories if needed. Restart your IDE to make them available.

Intellij

# 1. Generate snippets
fusion gen snippets -e intellij -o filename.xml

# 2. Find your IDE's configuration directory

# 3. Create a directory within that called `templates` if it does not already exist, and drop the xml file in there. Then, restart your IDE to make them available.

Intellij users must check this page to find the Configuration directory that pertains to your IDE version and operating system.

Contributions

Is there a feature that you'd like to see implemented in Fusion? Feel free to open a Feature Request issue to let us know what you'd like to see! We encourage submitting Pull Requests directly to add terraform resources to the library

For detailed development instructions, view our DEVELOPMENT and CONTRIBUTING guidelines.