|
| 1 | +Start-Transcript -path C:\buildkite-agent\terminate-instance.log -append |
| 2 | + |
1 | 3 | $Token = (Invoke-WebRequest -UseBasicParsing -Method Put -Headers @{'X-aws-ec2-metadata-token-ttl-seconds' = '60'} http://169.254.169.254/latest/api/token).content
|
2 | 4 |
|
3 | 5 | $InstanceId = (Invoke-WebRequest -UseBasicParsing -Headers @{'X-aws-ec2-metadata-token' = $Token} http://169.254.169.254/latest/meta-data/instance-id).content
|
4 | 6 | $Region = (Invoke-WebRequest -UseBasicParsing -Headers @{'X-aws-ec2-metadata-token' = $Token} http://169.254.169.254/latest/meta-data/placement/region).content
|
5 | 7 |
|
6 |
| -Write-Output "terminate-instance: disconnecting agent..." |
7 |
| -nssm stop buildkite-agent |
8 |
| - |
9 |
| -Write-Output "terminate-instance: requesting instance termination..." |
| 8 | +Write-Output "$(Get-Date) terminate-instance: requesting instance termination..." |
10 | 9 | aws autoscaling terminate-instance-in-auto-scaling-group --region "$Region" --instance-id "$InstanceId" "--should-decrement-desired-capacity" 2> $null
|
11 | 10 |
|
12 | 11 | # If autoscaling request was successful, we will terminate the instance, otherwise, if
|
13 | 12 | # BuildkiteTerminateInstanceAfterJob is set to true, we will mark the instance as unhealthy
|
14 | 13 | # so that the ASG will terminate it despite scale-in protection. Otherwise, we should not
|
15 | 14 | # terminate the instance, so we need to retart the agent.
|
16 | 15 | if ($lastexitcode -eq 0) {
|
17 |
| - Write-Output "terminate-instance: terminating instance..." |
| 16 | + Write-Output "$(Get-Date) terminate-instance: terminating instance..." |
18 | 17 | } else {
|
19 |
| - Write-Output "terminate-instance: ASG could not decrement (we're already at minSize)" |
| 18 | + Write-Output "$(Get-Date) terminate-instance: ASG could not decrement (we're already at minSize)" |
20 | 19 | if ($Env:BUILDKITE_TERMINATE_INSTANCE_AFTER_JOB -eq "true") {
|
21 |
| - Write-Output "terminate-instance: marking instance as unhealthy" |
| 20 | + Write-Output "$(Get-Date) terminate-instance: marking instance as unhealthy" |
22 | 21 | aws autoscaling set-instance-health `
|
23 | 22 | --instance-id "$InstanceId" `
|
24 | 23 | --region "$Region" `
|
25 | 24 | --health-status Unhealthy
|
26 | 25 | } else {
|
27 |
| - Write-Output "terminate-instance: restarting agent..." |
| 26 | + Write-Output "$(Get-Date) terminate-instance: restarting agent..." |
28 | 27 | nssm start buildkite-agent
|
29 | 28 | }
|
30 | 29 | }
|
| 30 | + |
| 31 | +Stop-Transcript |
0 commit comments