1.2.0
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 ofN
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]