Deploying to AWS OpsWorks

Components

The deployment of an artifact to AWS OpsWorks involves several major components as follows:

  • Appsan app represents code that you want to run on an application server

  • Instancesinstances represent the EC2 instances that handle the work of serving applications, balancing traffic, and so on

  • Layera layer defines which packages and applications are installed on an EC2 instance, how they are configured, and so on

  • Stacka stack represents a set of instances that you want to manage collectively, typically because they have a common purpose

Requirements

Tasks for AWS supports adding and deploying OpsWorks Apps with dedicated tasks. All other components are considered long running and expected to be either provisioned manually or via AWS CloudFormation (see Alternative workflow via CloudFormation below).

Workflow

The stack architecture is illustrated by the diagram in What is AWS OpsWorks?:

The resulting deployment workflow comprises the following activities:

  1. provision an application server stack, either manually via the AWS Management Console or via AWS CloudFormation (see Alternative workflow via CloudFormation below)

  2. (optional) upload the application source code (the 'App Source') – see the Upload File(s) action of the Amazon S3 Object task
    OpsWorks also supports other repository types besides S3, such as Git, SVN or HTTP

  3. create an app – see the Create App action of the AWS OpsWorks App task

  4. deploy the app – see the Deploy App action of the AWS OpsWorks Deployment task

Alternative workflow via CloudFormation

As an alternative to using the AWS OpsWorks tasks built into Tasks for AWS, it is also possible to provision the OpsWorks components directly via the AWS CloudFormation Stack task and the corresponding CloudFormation resource types:

A typical workflow based on CloudFormation might look as follows:

  1. (optional) upload the application source code (the 'App Source') – see the Upload File(s) action of the Amazon S3 Object task
    OpsWorks also supports other repository types besides S3, such as Git, SVN or HTTP

  2. create/update the CloudFormation stack that provisions the OpsWorks app, instance(s), layer and environment – see the Create Stack action of the AWS CloudFormation Stack task
    You can use the Update stack, if it already exists option to reuse the same Bamboo job for both actions

  3. deploy the app – see the Deploy App action of the AWS OpsWorks Deployment task

Frequently Asked Questions (FAQ)