I am trying to fire up an EC2 instance, wait until it is a "running" state, then set a bamboo variable to the newly created instance id for use to deploy.
Reference: Bash script . I know that is .sh and not windows, but it proves it can be done, and I am working on Windows 2012 based EC2 configurations.
So I set a Bamboo Variable via the Plan Configuration -> Variables(tab)
Name: instance_id, Value: i-xxxxxxx
Then i have a script task (cmd, inline):
echo ${bamboo.instance_id}
EC2_RUN_RESULT=aws ec2 run-instances --image-id ami-xxxxxxx --instance-type t2.micro --key-name KeyName --security-groups launchSecurityGroup
set ${bamboo.instance_id}=EC2_RUN_RESULT.id
Doesn't work.
set ${bamboo.instance_id}="abc123"
echo ${bamboo.instance_id}
Only returns "i-xxxxxxx"
How do I set a variable? And how do I setup a loop that will wait until the EC2 Instance is in a running state?
Thank you in advance!
So I've answered most of the question(s) except how to pass variable to another task.
|||| -> Storing a variable.
You must use a Windows PowerShell (can be inline or a script)
$ec2_result = aws ec2 discribe-instances --instance-id a1234bc567defg --query "Instances[].State[].Name" --output | Out-String
Then you can use it where ever you need to
Write-Host $ec2_result
*NOTE: make sure you add trim so you don't get errors. I.e.
|||| -> Waiting for an operation
In your Windows PowerShell (inline or script); this is how I did it.
$state = "pending"
Do{
Start-Sleep -s 15
$state = aws ec2 discribe-instance-status --instance-id $instance_id.Trim() --query "InstanceStatuses[].InstanceState[].Name" --output text | Out-String
} Until ($state.Trim() -eq "running")
So how do I pass the $instance_id to another script? I cannot assign it to a bamboo.variable?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.