Your application and everything you need to deploy
Package your application, client tools, configuration, and deployment logic into an installer that you can distribute and run with a single command
What is Porter?
Take everything you need to do a deployment, the application itself and the entire process to deploy it: command-line tools, configuration files, secrets, and bash scripts to glue it all together. Package that into a versioned bundle distributed over standard Docker registries or plain tgz files.
Now anyone can install your application without deep knowledge of your deployment process, or following a step-by-step deployment doc, regardless of the tech stack.
- Single command to find and deploy any application, regardless of the tech stack. No knowledge of the deployment process necessary.
- Secure handling of secrets and credentials, integrated with industry standard secret stores.
- Share the operational load of managing your team's deployments.
- Works with and improves existing tools, such as bash, cloud CLIs, terraform and helm. You don't rewrite your existing deployments to start using Porter.
- Reliable deployments because the client environment: cli versions, installed commands, configuration... is dependable and consistent.
When would I use Porter?
Porter is never a replacement for an existing tool. Think of it as doing extra nice things on top of what those great tools already do!
- 📦 Package everything you use to deploy in a single artifact that can be easily distributed over registries and across air gapped networks.
- 🔏 Sign the bundle and verify its signature before installing as part of your supply chain security solution.
- 🕑 Save time because the bundle contains the exact version of your deployment tools. Users don’t need to find and install tools or switch between versions.
- 🗂 View rich metadata about a deployment. Run porter explain to quickly see how to customize an installation with parameters, what credentials are needed by the bundle. There is no need for detailed installation documentation.
- 🧠 Reduce the operational knowledge required to manage an application. Often deployments involve multiple tools, such as terraform, AND helm, AND kubectl; all glued together with bash scripts. Bundles abstract away the details of a deployment, and provide a consistent set of commands to deploy any application.
- 💁♀️ Manage deployments securely as a team. Porter uses secure just-in-time credential injection and remembers the parameters last used to deploy. Teammates don’t need to hunt down the proper values themselves, or copy sensitive credentials into local environment variables or files. Secrets remain secure in a secret store such as Hashcorp Vault or Azure Key Vault.
These are just some of the reasons why working with bundles with the tools embedded inside is helpful vs. using the same tools standalone.
Credentials and Secrets 🔐
Parameterized Bundles 👩🏽🔬🧬
Connect Action Inputs and Outputs🧩
Contribute a Mixin
Porter is a cloud-agnostic tool that can work anywhere and with any tool, but in order to have great support for these clouds and tools, custom-made mixins are best.
Do you know tools we don't have custom mixins for yet?
Looking for ideas and copy/pasta?
Join the Community
More information about the Porter project, and how to contribute.