Skip to content

Commit

Permalink
Merge pull request #5 from DNXLabs/bugfix/destroy_runners_owned_by_te…
Browse files Browse the repository at this point in the history
…rminated_agents

Change agent to use on-demand instances and terminate orphan instances
  • Loading branch information
mvsnogueira-dnx committed Nov 9, 2021
2 parents 16dc40d + 5d3e0f5 commit f38b772
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
5 changes: 2 additions & 3 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ locals {
gitlab_runner_run_untagged = var.gitlab_runner_registration_config["run_untagged"]
gitlab_runner_maximum_timeout = var.gitlab_runner_registration_config["maximum_timeout"]
gitlab_runner_access_level = lookup(var.gitlab_runner_registration_config, "access_level", "not_protected")
runners_security_group_id = aws_security_group.docker_machine.id
})

template_runner_config = templatefile("${path.module}/template/runner-config.tpl",
Expand Down Expand Up @@ -179,9 +180,7 @@ resource "aws_autoscaling_group" "gitlab_runner_instance" {
}

instances_distribution {
spot_instance_pools = 3
on_demand_base_capacity = 0
on_demand_percentage_above_base_capacity = 0
on_demand_percentage_above_base_capacity = 100
}
}

Expand Down
16 changes: 14 additions & 2 deletions template/gitlab-runner.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@ fi
token=$(aws ssm get-parameters --names "${secure_parameter_store_runner_token_key}" --with-decryption --region "${secure_parameter_store_region}" | jq -r ".Parameters | .[0] | .Value")
if [[ `echo ${runners_token}` == "__REPLACED_BY_USER_DATA__" && `echo $token` == "null" ]]
then
token=$(curl --request POST -L "${runners_gitlab_url}/api/v4/runners" \
if [[ `echo ${gitlab_runner_registration_token}` != "" ]]
then
token=$(curl --request POST -L "${runners_gitlab_url}/api/v4/runners" \
--form "token=${gitlab_runner_registration_token}" \
--form "tag_list=${gitlab_runner_tag_list}" \
--form "description=${giltab_runner_description}" \
Expand All @@ -65,7 +67,17 @@ then
--form "maximum_timeout=${gitlab_runner_maximum_timeout}" \
--form "access_level=${gitlab_runner_access_level}" \
| jq -r .token)
aws ssm put-parameter --overwrite --type SecureString --name "${secure_parameter_store_runner_token_key}" --value="$token" --region "${secure_parameter_store_region}"
aws ssm put-parameter --overwrite --type SecureString --name "${secure_parameter_store_runner_token_key}" --value="$token" --region "${secure_parameter_store_region}"
else
echo "ERROR: Can't register the runner. The gitlab_runner_registration_token is required on initial deployment to do the agent registration."
fi
else
echo "WARNING: Runner already registered. Looking for orphan runners in the runners_security_group_id to destroy it"
terminate=$(aws ec2 describe-instances --region "${secure_parameter_store_region}" --filter "Name=instance.group-id,Values=${runners_security_group_id}" --query "Reservations[*].Instances[*].InstanceId" --output text)
if [[ `echo $terminate` != "" ]]
then
aws ec2 terminate-instances --instance-ids $terminate --region "${secure_parameter_store_region}"
fi
fi

sed -i.bak s/__REPLACED_BY_USER_DATA__/`echo $token`/g /etc/gitlab-runner/config.toml
Expand Down

0 comments on commit f38b772

Please sign in to comment.