@ejholmes ejholmes released this Mar 2, 2018 · 127 commits to master since this release

Assets 2

This release of stacker brings a large performance improvement, simpler logging and some fixes to long standing issues.

Parallelism

The stacker build and stacker destroy commands now execute stack updates in parallel, when possible. We've seen this provide a 5-10x improvement in total run time in most cases.

We've also introduced a -j/--max-parallel flag that can be used to control the level of parallelism. By default, stacker will execute an unlimited number of stacks in parallel, based on what the underlying stack dependencies allow. You can use the following values with the flag:

  • 0: Unlimited parallelism, controlled by the graph topology.
  • 1: No parallelism and multi-threading disabled.
  • >=2: Execute a maximum of N stacks in parallel at any time.

We've also worked on optimizing stacker's API calls to CloudFormation to keep API throttling to a minimum and exponentially backoff when rate limits are hit.

Automatic dependency resolution for --stacks

In the past, the --stacks flag would only build the provided stack. If the stack had dependencies, stacker would crash.

Now, stacker will automatically build any transitive dependencies of the given stacks.

Simplified logging

In the past, stacker used ANSI escape sequences to try to produce pretty output. Unfortunately, this had a number of issues and didn't scale well on large stack configs.

With this release, logging has been moved to a simple sequential logger that doesn't use ANSI escape sequences to move the cursor around. You'll also get color output when using --interactive mode, if your terminal is attached to a TTY!

Raw template support

You can now specify a template_path pointing to a raw json or yaml CloudFormation template. In some cases, this can help with transitioning legacy non-troposphere templates to be managed by stacker.

Refer to the docs for more information.

Special thanks to @troyready for this contribution!

Full Changes

  • assertRenderedBlueprint always dumps current results [GH-528]
  • The --stacks flag now automatically builds dependencies of the given stack [GH-523]
  • an unecessary DescribeStacks network call was removed [GH-529]
  • support stack json/yaml templates [GH-530]
  • stacker {build,destroy} now executes stacks in parallel. Parallelism can be controled with a -j flag. [GH-531]
  • logging output has been simplified and no longer uses ANSI escape sequences to clear the screen [GH-532]
  • logging output is now colorized in --interactive mode if the terminal has a TTY [GH-532]
  • removed the upper bound on the boto3 dependency [GH-542]