Skip to content

Releases: cloudtools/stacker

1.7.2

10 Nov 01:28
Compare
Choose a tag to compare

1.7.2 (2020-11-09)

  • address breaking moto change to awslambda [GH-763]
  • Added Python version validation before update kms decrypt output [GH-765]

1.7.1

24 Aug 02:59
Compare
Choose a tag to compare

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

08 Apr 04:21
1.7.0
e2e7b23
Compare
Choose a tag to compare

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

22 Jan 16:47
1.6.0
53d480c
Compare
Choose a tag to compare

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

14 Oct 22:37
1.5.0
cfa01da
Compare
Choose a tag to compare

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

29 Aug 01:14
1.4.1
d0dcf51
Compare
Choose a tag to compare

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

06 Aug 02:18
1.4.0
ca228b3
Compare
Choose a tag to compare

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

04 May 02:58
1.3.0
Compare
Choose a tag to compare

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 to AWS_PROFILE) [GH-563]
  • class_path/template_path are no longer required when a stack is locked [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

02 Mar 01:35
1.2.0
Compare
Choose a tag to compare

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]

1.2.0rc2

28 Feb 02:42
1.2.0rc2
Compare
Choose a tag to compare

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]
  • 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]