Section | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
Variables are substituted in all Task configuration text fields (e.g. Stack Name, Template URL, Instance ID, Volume ID etc.).Please note the following feature
Note | ||
---|---|---|
| ||
Tasks may emit sensitive data like credentials which are not supposed to surface in build logs - this can be achieved as follows:
|
...
|
Variable Definition
Variables are defined by all most Tasks for reuse in subsequent Tasks as follows, see Bamboo Variable Substitution/Definition for details, and each task's documentation for example log outputs.
- A task's generated variables might get amended with respective AWS API additions over time - a live build log will always provide the most current variable shape accordingly.
Example
This example illustrates the variable generation pattern:
- variables have a dedicated prefix like
bamboo.custom.aws.*
, with*
being a task specific prefix, e.g.bamboo.custom.aws.cfncloudformation.stack
- variables refering referring to a collection of resources provide their ids in a semicolon separated list (i.e. the same format available on input), e.g.
${bamboo.custom.aws.ec2.imageinstance.resources}
with valuesamii-985b21f1a316b842;ami-9a5b21f3i-b4210842 (line 2)
you can refer to these variables from subsequent tasks via something like
bamboo.${
cfn.stack.sampleStackOutputKey}custom.aws.ec2.
- these variables are also available as environment variables in the Script Task for example, albeit named slightly different, e.g.
$bamboo_custom_aws_cfn_stack_StringWithRegex
(Unix) or%bamboo_custom_aws_cfn_stack_StringWithRegex%
(Windows)
...
title | Please note the following constraints: |
---|
- variables are only reusable in subsequent tasks and not in other jobs/stages due to the implied concurrency, see the following discussion and workaround
Available Task Variables
The following variables are available in the various tasks:
AWS CloudFormation Stack
- the collection of affected stack resources, e.g.
bamboo.custom.aws.cfn.stack.resources=i-3280997f;vol-e1debbcd;test-stack-SecurityGroup-KZWPADIUPCL6
- the status of each affected stack resource, e.g.
bamboo.custom.aws.cfn.stack.i-3280997f=CREATE_COMPLETE
- the collection of generated stack outputs, e.g.
bamboo.custom.aws.cfn.stack.outputs=sampleStackOutputKey;StringWithRegex;...
- the value of each generated stack output, e.g.
bamboo.custom.aws.cfn.stack.StringWithRegex=Hello
- Note: The variables with legacy naming without prefix remain available for compatibility (e.g.
bamboo.StringWithRegex=Hello
)
- Note: The variables with legacy naming without prefix remain available for compatibility (e.g.
AWS EC2 Instance
- the collection of affected instances, e.g. bamboo.
instance.resources.i-a316b842.PrivateDnsName}
(line 6)
- however, given script access to such a named resource is difficult, there is a shortcut to ease reusing the first (and often only) affected resource via something like${custom.aws.ec2.instance.first.i-a316b842.PrivateDnsName}
:(line 19)
=i-fa7b4596;i-080eec64the status of each affected instance, e.g. bamboo.Code Block language text linenumbers true Creating common variables for 2 resources affected by task: ... custom.aws.ec2.instance.resources: i-a316b842;i-b4210842 Creating resource variables for instance 'i-a316b842': ... custom.aws.ec2.instance.resources.i-a316b842.InstanceId: i-a316b842 ... custom.aws.ec2.instance.resources.i-a316b842.State: running ... custom.aws.ec2.instance.resources.i-a316b842.PrivateDnsName: ip-10-0-0-241.ec2.internal ... custom.aws.ec2.instance.resources.i-a316b842.PrivateIpAddress: 10.0.0.241 ... custom.aws.ec2.instance.resources
fa7b4596=started.i-a316b842.PublicDnsName: ... custom.aws.ec2.instance.resources.i-a316b842.PublicIpAddress: null ... custom.aws.ec2.instance.resources.i-a316b842.LaunchTime: 20150716T080402Z ... custom.aws.ec2.instance.resources.i-
AWS EC2 Image
- the collection of affected images, e.g. bamboo.
imagea316b842.tags: Name ... custom.aws.ec2.
=ami-985b21f1;ami-9a5b21f3the status of each affected instance, e.g. bamboo.instance.resources
image.ami-985b21f1=available.i-a316b842.tags.Name: taws-it-2.0.0 Creating resource variables for instance 'i-b4210842': ... <skipped> Creating common variables for first resource affected by task: Creating resource variables for instance 'i-a316b842': ... custom.aws.ec2.instance.
AWS EBS Snapshots
- the collection of affected snapshots, e.g. bamboo.
snapshots.resources=snap-f4dc35a1the status of each affected snapshots, e.g. bamboo.first.InstanceId: i-a316b842 ... custom.aws.ec2.instance.first.State: running ... custom.aws.ec2.
snapshots.snap-f4dc35a1=completedinstance.first.PrivateDnsName: ip-10-0-0-241.ec2.internal ... custom.aws.ec2.instance.first.PrivateIpAddress: 10.0.0.241 ... custom.aws.ec2.instance.first.PublicDnsName: ... custom.aws.ec2.instance.first.PublicIpAddress: null ... custom.aws.ec2.instance.first.LaunchTime: 20150716T080402Z ... custom.aws.ec2.instance.first.tags: Name ... custom.aws.ec2.instance.first.
tags.Name: taws-it-2.0.0
variables are also available as environment variables in the Script Task for example, albeit named slightly different, e.g.
$bamboo_custom_aws_cfn_stack_StringWithRegex
(Unix) or%bamboo_custom_aws_cfn_stack_StringWithRegex%
(Windows)variables are locally scoped and thus only reusable in subsequent tasks and not in other jobs/stages due to the implied concurrency, see the following discussion and workaround