Releases: cloudtools/stacker
1.7.2
1.7.1
1.7.1 (2020-08-17)
- Fixing AMI lookup Key error on 'Name'
- hooks: lambda: allow uploading pre-built payloads [GH-#564]
- Ensure that base64 lookup codec encodes the bytes object as a string [GH-742]
- Use CloudFormation Change Sets for
stacker diff
- Locked stacks still have requirements [GH-746]
- change diff to use CFN change sets instead of comparing template dicts [GH-744]
- Add YAML environment file support [GH-740]
- fix
stack.set_outputs
not being called by diff if stack did not change [GH-754] - Fix python 2.7/3.5 dependency issue
- add cf notification arns [GH-756]
1.7.0
1.7.0 (2019-04-07)
- Additional ECS unit tests [GH-696]
- Keypair unit tests [GH-700]
- Jinja2 templates in plain cloudformation templates [GH-701]
- Custom log output formats [GH-705]
- Python 3.7 unit tests in CircleCI [GH-711]
- Upload blueprint templates with bucket-owner-full-control ACL [GH-713]
- Change test runner from nose to py.test [GH-714]
- support for importing a local public key file with the keypair hook [GH-715]
- support for storing private keys in SSM parameter store with the keypair hook [GH-715]
1.6.0
1.6.0 (2019-01-21)
- New lookup format/syntax, making it more generic [GH-665]
- Allow lowercase y/Y when prompted [GH-674]
- Local package sources [GH-677]
- Add
in_progress
option to stack config [GH-678] - Use default ACL for uploaded lambda code [GH-682]
- Display rollback reason after error [GH-687]
- ssm parameter types [GH-692]
1.5.0
1.5.0 (2018-10-14)
The big feature in this release is the introduction of "targets" which act as
sort of "virtual nodes" in the graph. It provides a nice way to logically group
stacks.
- Add support for "targets" [GH-572]
- Fix non-interactive changeset updates w/ stack policies [GH-657]
- Fix interactive_update_stack calls with empty string parameters [GH-658]
- Fix KMS unicode lookup in python 2 [GH-659]
- Locked stacks have no dependencies [GH-661]
- Set default profile earlier [GH-662]
- Get rid of recursion for tail retries and extend retry/timeout [GH-663]
1.4.1
1.4.1 (2018-08-28)
This is a minor bugfix release for 1.4.0, no major feature updates.
As of this release python 3.5+ support is no longer considered experimental, and should be stable.
Special thanks to @troyready for this release, I think most of these PRs were his :)
- allow raw cfn templates to be loaded from remote package_sources [GH-638]
- Add missing config keys to s3 package source model [GH-642]
- Account for UsePreviousValue parameters in diff [GH-644]
- fix file lookup documented and actual return types [GH-646]
- Creates a memoized provider builder for AWS [GH-648]
- update git ref to explicitly return string (fix py3 bytes error) [GH-649]
- Lock botocore/boto to versions that work with moto [GH-651]
1.4.0
1.4.0 (2018-08-05)
- YAML & JSON codecs for
file
lookup [GH-537] - Arbitrary
command
hook [GH-565] - Fix datetime is not JSON serializable error [GH-591]
- Run dump and outline actions offline [GH-594]
- Helper Makefile for functional tests [GH-597]
- Python3 support!!! [GH-600]
- YAML blueprint testing framework [GH-606]
- new
add_output
helper on Blueprint [GH-611] - Include lookup contents when lookups fail [GH-614]
- Fix issue with using previous value for parameters [GH-615]
- Stricter config parsing - only allow unrecognized config variables at the top-level [GH-623]
- Documentation for the
default
lookup [GH-636] - Allow configs without stacks [GH-640]
1.3.0
This release of stacker brings the much anticipated multi-region/multi-account support.
Multi-Account Support
You can now specify an AWS profile that a stack should use when provisioning it. This allows you to define different AWS profiles for different AWS accounts, and then "target" stacks to that account. Output lookups work across stacks in different accounts and regions.
To use a specific profile with a stack, you just specify the profile with a new profile
option:
stacks:
- name: vpc
profile: prod
When provisioning the stack, stacker will perform all AWS operations using the prod
profile defined in your AWS config file (~/.aws/config
or the AWS_CONFIG_FILE
environment variable).
For more information on AWS/boto3 profiles, see the boto3 credentials documentation.
Multi-Region Support
In addition to support for AWS profiles, you can also target a stack to a specific region using the new region
option:
stacks:
- name: vpc-west
region: us-west-2
See the documentation for more details.
Stack Policies
Stack policies are a feature in CloudFormation that allows you to provide extra protections on resources to prevent accidental updates. You can now manage stack policies directly with stacker, using the new stack_policy_path
option.
See the documentation for more details.
Fulle Changes
- Support for provisioning stacks in multiple accounts and regions has been added [GH-553], [GH-551]
- Added a
--profile
flag, which can be used to set the global default profile that stacker will use (similar toAWS_PROFILE
) [GH-563] class_path
/template_path
are no longer required when a stack islocked
[GH-557]- Support for setting stack policies on stacks has been added [GH-570]
For more information about using the new multi-region/account support, and best practices for setting up a shared boto3 profile, you can see the example setup here.
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]
1.2.0rc2
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]
- stacker now builds a DAG internally [GH-523]
- 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] - Fix parameter handling for diffs [GH-540]
- Fix an issue where SIGTERM/SIGINT weren't handled immediately [GH-543]
- Log a line when SIGINT/SIGTERM are handled [GH-543]
- Log failed steps at the end of plan execution [GH-543]
- Remove upper bound on boto3 dependency [GH-542]