The Bamboo AWS Plugin adds a Task to create or delete an AWS CloudFormation stack (a collection of related Amazon Web Services resources) and another Task to start, stop or reboot a provisioned EC2 instance.
It enables you to unleash the power of AWS from Tasks within your build with the following key features:
- Stack Lifecycle Management - create or delete a CloudFormation stack defined by a template provided via URL or inline and specify template parameters and advanced options.
- Variable Substitution/Definition - substitute Bamboo variables in CloudFormation template parameters (and some other fields) to customize the stack and reuse variables defined by stack outputs in subsequent Tasks.
- Instance State Transitions - start, stop or reboot a provisioned EC2 instance.
Release 1.4.0 adds a task to start, stop or reboot a provisioned EC2 instance; in addition it adds event reporting during CloudFormation stack transitions, retrieves AWS configuration data remotely and features some minor usability improvements as well.
Goals / Usage
The short term goal is mirroring the functionality available via the AWS management console in a Bamboo Task, i.e. creating/updating/deleting a stack with parameters. Familiarity with CloudFormation operation is assumed accordingly, thus the documentation currently covers noteworthy specifics regarding the plugin only.
Simply navigate to your Bamboo Administration -> Plugin Manager menu, and search for "AWS" under the Install tab.
The provided CloudFormation sample template URL simply exercises parameter substitution (thus there are no cost implied).
Amazon provides many more AWS CloudFormation Sample Templates - please be aware of the following:
- You will be billed for the AWS resources used, if you create a stack from a template including non free resources (check the template source, which will indicate this in case).
- You must reference a template in an S3 bucket in the same region in which you are creating the stack. Each sample template is available in every AWS Region (see 'Using Templates in Different Regions' on the bottom of the referenced URL for details).
The provided CloudFormation sample inline template simply creates a SNS Topic (thus there are no cost implied until you send a significant amount of notifications).
To empower advanced build and automation scenarios, it his highly recommended to become acquainted with Using Global, Plan or Build-specific Variables; currently substitutions are enabled within the following Task configuration fields: Stack Name Template URL Template Body Template Parameters
Limitations / Roadmap
You should be aware of the following limitations regarding AWS API coverage and integration:
- We have focused on API coverage so far and usability is not up to speed yet accordingly, there is obviously room for improvements, e.g.:
- Some configuration screen polish should get us a long way already.
- Fetching existing AWS resources for selection during configuration would avoid manual copying of information.
- Offering several samples/defaults to ease getting started.
- Updating a stack has been postponed - fixing this is on our list.
- Stack rollback is currently handled as follows, hopefully covering the majority of use cases (please let us know otherwise):
- A stack rolled back successfully by CloudFormation is treated as a failed build by Bamboo.
- A stack not rolled back due to rollback being disabled explicitly is still treated as a failed build by Bamboo.
Amazon Elastic Compute Cloud (EC2)
- We currently consider instance lifecycle goals (i.e. create/terminate) to be sufficiently addressed by the CloudFormation Task, hopefully covering the majority of use cases (please let us know otherwise).
- The Task currently supports only one instance at a time, allowing multiple values is on our list.
Further down the road we'd like to integrate other AWS services as well.
Licensed under the Apache License, Version 2.0, see LICENSE.TXT for details.
- BAWS-68 - As a user, I need a task to operate an EC2 instance so that I can start/stop/reboot a provisioned AWS resource.
- BAWS-48 - Add stable AWS artifact retrieval via missingcloud.
- Many thanks to Mitch Garnaat for starting this indeed missing cloud data collection!
- BAWS-66 - Add event reporting during stack transition.
- BAWS-77 - Adjust configuration screen radio button layout.
- BAWS-50 - Add variable substitution in template parameters.
- BAWS-59 - Add variable definition from stack outputs.
- BAWS-58 - Fix templates requiring IAM capability not being usable.
- BAWS-44 - Add template parameter handling.
- BAWS-45 - Add stack outputs handling.
- BAWS-46 - Add URL based template specification.
- BAWS-19 - Add disable rollback option.
- BAWS-20 - Add creation timeout option.
- BAWS-21 - Add SNS notification option.
- BAWS-31 - Fix not all completed stack transitions triggering task completion and/or proper task result.
- BAWS-37 - Fix validation errors not being displayed.
- BAWS-9 - As a user, I need a task to create a CloudFormation stack so that I can provision a collection of related AWS resources.
- BAWS-10 - As a user, I need a task to delete a CloudFormation stack so that I can terminate a collection of related AWS resources.