All Projects → glassechidna → stackit

glassechidna / stackit

Licence: Apache-2.0 license
Cross-platform CloudFormation CLI tool for easy synchronous and idempotent stack updates

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to stackit

libdigidocpp
Libdigidocpp library offers creating, signing and verification of digitally signed documents, according to XAdES and XML-DSIG standards. Documentation http://open-eid.github.io/libdigidocpp
Stars: ✭ 80 (+116.22%)
Mutual labels:  osx
aem-aws-stack-builder
Adobe Experience Manager (AEM) infrastructure builder on AWS using CloudFormation stacks
Stars: ✭ 36 (-2.7%)
Mutual labels:  cloudformation
Dropbox-Paper-Desktop
Unofficial Dropbox Paper app for OS X
Stars: ✭ 22 (-40.54%)
Mutual labels:  osx
osx-cli
A collection of command line shortcuts for common OS X operations.
Stars: ✭ 21 (-43.24%)
Mutual labels:  osx
cim
CIM takes the pain out of Infrastructure as Code and CloudFormation
Stars: ✭ 51 (+37.84%)
Mutual labels:  cloudformation
psutil
Cross-platform lib for process and system monitoring in Python
Stars: ✭ 8,488 (+22840.54%)
Mutual labels:  osx
cdkgoat
CdkGoat is Bridgecrew's "Vulnerable by Design" AWS CDK repository. CdkGoat is a learning and training project that demonstrates how common configuration errors can find their way into production cloud environments.
Stars: ✭ 27 (-27.03%)
Mutual labels:  cloudformation
onepile
Playground for the future of private notes and document management
Stars: ✭ 41 (+10.81%)
Mutual labels:  osx
spotlight-cli
 Command-line tool for Spotlight.
Stars: ✭ 27 (-27.03%)
Mutual labels:  osx
MacOS-Developers-Excuses
A macOS screen saver that shows a random developer excuse over a beautiful photo background. Made with ❤
Stars: ✭ 53 (+43.24%)
Mutual labels:  osx
osx-callhistory-decryptor
macOS (incl big sur) call history decryptor/converter to CSV format.
Stars: ✭ 19 (-48.65%)
Mutual labels:  osx
autoscaling-ec2-gitlab-runners-fargate
Autoscaling EC2 GitLab Runners Spawned by Fargate
Stars: ✭ 20 (-45.95%)
Mutual labels:  cloudformation
ULogViewer
Cross-Platform Universal Log Viewer.
Stars: ✭ 64 (+72.97%)
Mutual labels:  osx
osx-statusbar-countdown
⏳📅 A utility to count down to a date from your macOS menubar, written in Swift
Stars: ✭ 40 (+8.11%)
Mutual labels:  osx
mmap-io
Clean straight forward mmap-bindings for node.js
Stars: ✭ 62 (+67.57%)
Mutual labels:  osx
cloudformation-coverage-roadmap
The AWS CloudFormation Public Coverage Roadmap
Stars: ✭ 993 (+2583.78%)
Mutual labels:  cloudformation
brewfile
🍎 Brewfile to install softwares in macOS for engineers
Stars: ✭ 37 (+0%)
Mutual labels:  osx
osxapp vers
Get product name, exact product version and build version from an Apple Install [Mac OS X|OS X|macOS]*.app or from a mounted Mac OS X Install CD/DVD image
Stars: ✭ 12 (-67.57%)
Mutual labels:  osx
lldbg
A lightweight native GUI for LLDB.
Stars: ✭ 83 (+124.32%)
Mutual labels:  osx
cfngoat
Cfngoat is Bridgecrew's "Vulnerable by Design" Cloudformation repository. Cfngoat is a learning and training project that demonstrates how common configuration errors can find their way into production cloud environments.
Stars: ✭ 70 (+89.19%)
Mutual labels:  cloudformation

stackit

stackit is a CLI tool to synchronously and idempotently operate on AWS CloudFormation stacks - a perfect complement for continuous integration systems and developers who prefer the comfort of the command line.

Animated gif demonstrating functionality

Where

The latest compiled stackit binaries for Linux, macOS and Windows can be downloaded from the project's GitHub Releases page.

Why

CloudFormation is inherently asychronous and this is reflected in the usage of the AWS CLI tools - a create-stack or update-stack operation exits long before the stack has reached its final state. stackit treats a stack update synchronously, streaming stack events to the CLI until the stack reaches a steady state.

AWS CLI commands for CloudFormation aren't idempotent. If you call create-stack when a stack already exists, the behaviour is different to if it doesn't. Likewise with update-stack. This means you either have to manually create a stack before putting it under CI, or script up a "does it exist yet?" check before deciding which command to invoke. stackit abstracts over these with an up facade.

How

up

stackit up --stack-name some-other-name # use this stack name, fallback to yml for rest
stackit up \
  --stack-name some-other-name \
  --template sample.yml \
  --param-value DockerImage=redis \
  --param-value Cluster=some-ecs-cluster # no yml necessary

Note that there is JSON printed at the end of the up command. This is all the Outputs defined in your CloudFormation template file. These are printed to stdout. The event lines above them are printed to stderr.

This separation makes it easy to pipe output from stackit up to another command without having to skip the log lines. Likewise, a non-zero exit code indicates stack update/creation failure.

outputs

stackit outputs --stack-name <name> prints the stack's Outputs in JSON form, without making any modifications to the stack.

tail

If an existing stack creation or update is in progress, stackit tail --stack-name <name> will poll for events, similar to the up command.

down

stackit down --stack-name <name> will delete the named stack if it exists, otherwise it will do nothing. Non-zero exit code indicates failure to delete an existing stack.

More

All commands can be passed a --profile <name> parameter. This will use alternative AWS credentials defined in a profile named in ~/.aws/config if it exists. If your profile requires MFA credentials in order to assume a role, stackit will prompt for those to be entered on stdin.

All commands can be passed a --region <region> parameter if you want to deploy your stack in a different region.

TODO

  • stackit <stack-name> cancel
  • stackit <stack-name> signal <logical-name>

Additional Flags

TODO: Document these properly

  • --service-role VAL
  • --previous-param-value NAME
  • --tag NAME=VAL (multiple)
  • --notification-arn (multiple)
  • --stack-policy VAL
  • --previous-template
  • --no-cancel-on-exit
  • --no-destroy (not yet implemented)

for changes: (not yet implemented)

  • --name VAL
  • --execute-if-no-destroy

Notes

  • Change-sets return special exit code to indicate destructive (replacement, deletion) actions
  • MFA support
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].