All Projects → SCRT-HQ → VaporShell

SCRT-HQ / VaporShell

Licence: Apache-2.0 License
A PowerShell module for building, packaging and deploying AWS CloudFormation templates

Programming Languages

powershell
5483 projects

Projects that are alternatives of or similar to VaporShell

aws-serverless-code-pipeline-cf-template
This solution allows you to use a AWS CloudFormation template to create AWS CodePipeline, and AWS CodeBuild supporting Serverless Framework and GitHub
Stars: ✭ 40 (-16.67%)
Mutual labels:  cloudformation, cloudformation-template
aws-cloudformation-resource-providers-cloudformation
The CloudFormation Resource Provider Package For AWS CloudFormation
Stars: ✭ 42 (-12.5%)
Mutual labels:  cloudformation, cfn
StackJanitor
StackJanitor is a serverless, event-driven stack cleanup tool.
Stars: ✭ 37 (-22.92%)
Mutual labels:  cloudformation, cfn
Aws Cf Templates
A cloudonaut.io project. Engineered by widdix.
Stars: ✭ 2,399 (+4897.92%)
Mutual labels:  cloudformation, cloudformation-template
monitoring-jump-start
Monitor AWS resources with ease
Stars: ✭ 67 (+39.58%)
Mutual labels:  cloudformation, cloudformation-template
cfoo
CloudFormation master
Stars: ✭ 22 (-54.17%)
Mutual labels:  cloudformation, cloudformation-template
serverless-cloudformation-sub-variables
Serverless framework plugin for easily supporting AWS CloudFormation Sub intrinsic function variables
Stars: ✭ 25 (-47.92%)
Mutual labels:  cloudformation, cfn
aws-cloudformation-cognito-identity-pool
A Lambda-backed Custom Resource for a Cognito Identity Pool in CloudFormation
Stars: ✭ 35 (-27.08%)
Mutual labels:  cloudformation, cloudformation-template
cloudformation-coverage-roadmap
The AWS CloudFormation Public Coverage Roadmap
Stars: ✭ 993 (+1968.75%)
Mutual labels:  cloudformation, cfn
bora
A Ruby command line tool and rake tasks for working with cloudformation stacks and cfndsl
Stars: ✭ 18 (-62.5%)
Mutual labels:  cloudformation, cfndsl
taskcat
Test all the CloudFormation things! (with TaskCat)
Stars: ✭ 974 (+1929.17%)
Mutual labels:  cloudformation, cfn
amazon-ivs-simple-chat-web-demo
⚠️ IMPORTANT ⚠️ This repository is no longer actively maintained and will be archived at the end of 2022. A basic live chat implementation built with WebSockets, that can be used in conjunction with Amazon IVS to build compelling customer experiences for live video streams with chat use cases.
Stars: ✭ 53 (+10.42%)
Mutual labels:  cloudformation, cloudformation-template
terraform-aws-cloudformation-stack
Terraform module to provision CloudFormation Stack
Stars: ✭ 24 (-50%)
Mutual labels:  cloudformation, cfn
troposphere-cli
No description or website provided.
Stars: ✭ 11 (-77.08%)
Mutual labels:  cloudformation
dist-detect
Try to determine what Linux/Unix distribution is running on a remote host and get a hint if security updates are applied.
Stars: ✭ 14 (-70.83%)
Mutual labels:  ubuntu
sublime-patcher
Bash script for patching/cracking Sublime Text on Linux
Stars: ✭ 20 (-58.33%)
Mutual labels:  ubuntu
InstallOS
Network reinstallation of the Linux system.
Stars: ✭ 34 (-29.17%)
Mutual labels:  ubuntu
cerberus-lifecycle-cli
Command Line Interface for managing a Cerberus environment in AWS
Stars: ✭ 15 (-68.75%)
Mutual labels:  cloudformation
docker-nvidia-glx-desktop
MATE Desktop container designed for Kubernetes supporting OpenGL GLX and Vulkan for NVIDIA GPUs with WebRTC and HTML5, providing an open source remote cloud graphics or game streaming platform. Spawns its own fully isolated X Server instead of using the host X server, therefore not requiring /tmp/.X11-unix host sockets or host configuration.
Stars: ✭ 47 (-2.08%)
Mutual labels:  ubuntu
aws-cloudformation-templates
CloudFormation Templates
Stars: ✭ 15 (-68.75%)
Mutual labels:  cloudformation

VaporShell




📝        📦        🚀
Build | Package | Deploy
A PowerShell module for building, packaging and deploying AWS CloudFormation templates ☁️

Azure Pipelines     PowerShell Gallery - Install VaporShell     Discord - Chat      Slack - Chat     Gitter - Chat
Built with ❤︎ by Nate Ferrell. Looking for contributors!

Table of Contents

Features

  • built from AWS's CloudFormation spec sheet: 100% coverage of all available resource and property types
  • runs on any OS: developed and tested in Windows, Ubuntu, and macOS on PowerShell v3-6
  • validates everything: built to make resulting templates reliable by leveraging parameter validation built into PowerShell
  • goes turbo: package and deploy your templates fast with one command: vsl vaporize

Prerequisites

  • PowerShell 3+
  • .NET 4.5.0+ OR .netstandard 1.3+
    • if you have PowerShell 4 or greater, you're covered!

Recommended: AWS Labs cfn-flip

If you are working with YAML templates, you need to install cfn-flip. VaporShell uses cfn-flip under the hood to work with YAML templates, as PowerShell does not natively support YAML at this time. If you are only working in JSON, then cfn-flip isn't necessary.

Installation

[Preferred] On PowerShell 5+ or have PowerShellGet installed? Install directly from the PowerShell Gallery:

Install-Module VaporShell -Scope CurrentUser

[Alternative] Not on PowerShell 5+, can't install PowerShellGet, or policies blocking installation from remote sources? You're covered as well:

  1. Head to the Releases section in the repo
  2. Download the VaporShell.zip file attached to the latest release.
  3. If on Windows: Right-click the downloaded zip, select Properties, then unblock the file.

    This is to prevent having to unblock each file individually after unzipping.

  4. Unzip the archive.
  5. (Optional) Place the module folder somewhere in your PSModulePath.

    You can view the paths listed by running the environment variable $env:PSModulePath

  6. Import the module, using the full path to the PSD1 file in place of VaporShell if the unzipped module folder is not in your PSModulePath:
    # In $env:PSModulePath
    Import-Module VaporShell
    
    # Otherwise, provide the path to the manifest file:
    Import-Module -Path C:\MyPSModules\VaporShell\2.6.2\VaporShell.psd1

Tips

Working with Credentials

If you are planning on packaging or deploying to CloudFormation, you will need to setup credentials in your local Shared Credentials file. If you are using the AWS command-line interface (CLI) and already have setup credentials, then you should be ready to go.

You can update or add a credential profile with Set-VSCredential:

Set-VSCredential -AccessKey $accessKey -SecretKey $secretKey -Region USWest1 -ProfileName DevAccount

Bare Necessities

When building templates with VaporShell, there are typically a few items that you'll want to include in your build script:

  1. Create a template object by calling one of these into a variable
    • $template = Initialize-VaporShell
      • Use when starting from scratch
    • $template = Import-VaporShell -Path .\template.json
      • Use when importing from an existing template to build off of
  2. Build out your template by using the object's ScriptMethods:
    • $template.AddResource()
    • $template.AddParameter()
    • $template.AddOutput()
    • etc....
  3. Export your template to local file or stdout (useful for piping directly into New-VSStack or other functions that support TemplateBody as pipeline input)
    • Export-VaporShell -VaporshellTemplate $template -Path .\template.json
      • This will output the template as template.json in your working directory
    • Export-VaporShell -VaporshellTemplate $template
      • This will output the template to stdout as a single string
    • $template.ToJSON()
      • This script method on the template object performs the same function as Export-VaporShell -VaporshellTemplate $template and outputs the string template as JSON to stdout
    • $template.ToYAML()
      • This does the same thing as the ToJSON() script method, but outputs to YAML (cfn-flip required)

Examples

#1 Initialize a VaporShell object
$vsl = Initialize-VaporShell -Description "A function triggered on a timer."

#2 Add a Serverless function with local code as the CodeUri and a schedule of 5 minutes (split into multiple lines for readability)
$samFunction = New-SAMFunction `
    -LogicalId "ScheduledFunction" `
    -Handler "index.handler" `
    -Runtime "nodejs6.10" `
    -CodeUri ".\code" `
    -Events (Add-SAMScheduleEventSource -LogicalId Timer -Schedule "rate(5 minutes)")
$vsl.AddResource($samFunction)
$TemplateFile = ".\sched-func.yaml"

#3 Save the template as YAML using the VaporShell object's ToYAML() method (uses cfn-flip to convert to/from YAML)
$vsl.ToYAML($TemplateFile)

<#4 Package and deploy (vsl vaporize) the template file (--tf $TemplateFile) as a change set with parameters:
    - stack name (--sn) 'sched-func'
    - S3 bucket also named 'sched-func' (defaults to the stack name if --s3 is not passed)
    - capabilities: CAPABILITY_IAM (--caps iam)
    - Verbose (--v) enabled
    - Force (--f) enabled (make sure that the bucket is created and objects are uploaded)
    - Watch (--w) the stack events in colorized output after executing the change
#>
vsl vaporize --tf $TemplateFile --sn sched-func --caps iam --v --f --w

Check out the Examples page for more.

In Action

This is a deployment being watched via Watch-Stack $stackName to show stack creation and deletion mid-deploy: Watch-Stack in action

License

Apache 2.0

Changelog

Changelog

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].