Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,15 @@ locals {
extra_config = var.runner_install.start_script
})

# "16.0.3" -> ["16", "0", "3"]
runner_version_split = split(".", var.runner_gitlab.runner_version)
# ["16", "0", "3"] -> 16
runner_version_major = parseint(local.runner_version_split[0], 10)
# ["16", "0", "3"] -> 0
runner_version_minor = parseint(local.runner_version_split[1], 10)
# the `gitlab-runner fleeting install` command was introduced in 16.11
runner_use_new_fleeting_install = (local.runner_version_major == 16 && local.runner_version_minor >= 11) || local.runner_version_major > 16

file_yum_update = file("${path.module}/template/yum_update.tftpl")

template_eip = templatefile("${path.module}/template/eip.tftpl", {
Expand Down Expand Up @@ -80,13 +89,15 @@ locals {
public_key = var.runner_worker.use_private_key && var.runner_worker.type == "docker-autoscaler" ? tls_private_key.autoscaler[0].public_key_openssh : var.runner_worker_docker_machine_fleet.enable == true ? tls_private_key.fleet[0].public_key_openssh : ""
private_key = var.runner_worker.use_private_key && var.runner_worker.type == "docker-autoscaler" ? tls_private_key.autoscaler[0].private_key_pem : var.runner_worker_docker_machine_fleet.enable == true ? tls_private_key.fleet[0].private_key_pem : ""
use_private_key = var.runner_worker_docker_machine_fleet.enable || (var.runner_worker.use_private_key && var.runner_worker.type == "docker-autoscaler")
use_new_fleeting_install = local.runner_use_new_fleeting_install
use_new_runner_authentication_gitlab_16 = var.runner_gitlab_registration_config.type != ""
user_data_trace_log = var.debug.trace_runner_user_data
fleeting_plugin_version = var.runner_worker_docker_autoscaler.fleeting_plugin_version
})

template_runner_docker_autoscaler = templatefile("${path.module}/template/runner-docker-autoscaler-config.tftpl",
{
fleeting_plugin = local.runner_use_new_fleeting_install ? "aws:latest" : "fleeting-plugin-aws"
docker_autoscaling_name = var.runner_worker.type == "docker-autoscaler" ? aws_autoscaling_group.autoscaler[0].name : ""
connector_config_user = var.runner_worker_docker_autoscaler.connector_config_user
runners_capacity_per_instance = var.runner_worker_docker_autoscaler.capacity_per_instance
Expand Down
43 changes: 24 additions & 19 deletions template/gitlab-runner.tftpl
Original file line number Diff line number Diff line change
Expand Up @@ -199,37 +199,38 @@ then
fi

if [[ "${runners_executor}" == "docker-autoscaler" ]]; then
echo "installing docker"
echo "Installing Docker by autoscaler"
yum install docker -y
usermod -a -G docker ec2-user
service docker start

echo "Installing Docker fleeting plugin"
# Determine architecture
if [[ "$(uname -m)" == "x86_64" ]]; then
ARCH="amd64"
elif [[ "$(uname -m)" == "i686" ]]; then
ARCH="386"
elif [[ "$(uname -m)" == "armv7l" ]]; then
ARCH="arm"
elif [[ "$(uname -m)" == "aarch64" ]]; then
ARCH="arm64"
else
echo "Unsupported architecture"
exit 1
fi
if [[ "${use_new_fleeting_install}" == "false" ]]; then
# Determine architecture
if [[ "$(uname -m)" == "x86_64" ]]; then
ARCH="amd64"
elif [[ "$(uname -m)" == "i686" ]]; then
ARCH="386"
elif [[ "$(uname -m)" == "armv7l" ]]; then
ARCH="arm"
elif [[ "$(uname -m)" == "aarch64" ]]; then
ARCH="arm64"
else
echo "Unsupported architecture"
exit 1
fi

wget "https://gitlab.com/gitlab-org/fleeting/plugins/aws/-/releases/v${fleeting_plugin_version}/downloads/fleeting-plugin-aws-$(uname -s | tr '[:upper:]' '[:lower:]')-$ARCH"
chmod +x fleeting-plugin-aws-*
mv fleeting-plugin-aws-* /bin/fleeting-plugin-aws
echo "Installing Docker fleeting-plugin-aws manually"
wget "https://gitlab.com/gitlab-org/fleeting/plugins/aws/-/releases/v${fleeting_plugin_version}/downloads/fleeting-plugin-aws-$(uname -s | tr '[:upper:]' '[:lower:]')-$ARCH"
chmod +x fleeting-plugin-aws-*
mv fleeting-plugin-aws-* /bin/fleeting-plugin-aws
fi

mkdir ~/.aws
cat <<EOF > ~/.aws/config
[default]
region = "${aws_region}"

EOF

fi

# A small script to remove this runner from being registered with Gitlab. Executed at shutdown.
Expand Down Expand Up @@ -297,6 +298,10 @@ if ! ( rpm -q gitlab-runner >/dev/null )
then
curl --fail --retry 6 -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash
yum install gitlab-runner-${gitlab_runner_version} -y
if [[ "${runners_executor}" == "docker-autoscaler" ]] && [[ "${use_new_fleeting_install}" == "true" ]]; then
echo "Installing gitlab-runner fleeting plugin"
gitlab-runner fleeting install
fi
fi

#############################
Expand Down
2 changes: 1 addition & 1 deletion template/runner-docker-autoscaler-config.tftpl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Autoscaler config
[runners.autoscaler]
plugin = "fleeting-plugin-aws"
plugin = "${fleeting_plugin}"

capacity_per_instance = ${runners_capacity_per_instance}
update_interval = "${runners_update_interval}"
Expand Down