diff --git a/terraform-aws-github-runner/main.tf b/terraform-aws-github-runner/main.tf index fe5e8bf29e..e10a41d557 100644 --- a/terraform-aws-github-runner/main.tf +++ b/terraform-aws-github-runner/main.tf @@ -188,6 +188,8 @@ module "runners_instances" { block_device_mappings = var.block_device_mappings runner_architecture = local.runner_architecture + ami_id_pining_linux = var.ami_id_pining_linux + ami_id_pining_linux_arm64 = var.ami_id_pining_linux_arm64 ami_owners_linux = var.ami_owners_linux ami_owners_linux_arm64 = var.ami_owners_linux_arm64 ami_owners_windows = var.ami_owners_windows diff --git a/terraform-aws-github-runner/modules/runners-instances/launch-template.tf b/terraform-aws-github-runner/modules/runners-instances/launch-template.tf index 2db15cdf56..f82fc66b44 100644 --- a/terraform-aws-github-runner/modules/runners-instances/launch-template.tf +++ b/terraform-aws-github-runner/modules/runners-instances/launch-template.tf @@ -31,6 +31,7 @@ locals { } data "aws_ami" "runner_ami_linux" { + count = var.ami_id_pining_linux == null ? 1 : 0 most_recent = "true" dynamic "filter" { @@ -45,6 +46,7 @@ data "aws_ami" "runner_ami_linux" { } data "aws_ami" "runner_ami_linux_arm64" { + count = var.ami_id_pining_linux_arm64 == null ? 1 : 0 most_recent = "true" dynamic "filter" { @@ -81,7 +83,7 @@ resource "aws_launch_template" "linux_runner" { instance_initiated_shutdown_behavior = "terminate" - image_id = data.aws_ami.runner_ami_linux.id + image_id = var.ami_id_pining_linux == null ? data.aws_ami.runner_ami_linux[0].id : var.ami_id_pining_linux instance_type = var.instance_type key_name = var.key_name @@ -138,7 +140,7 @@ resource "aws_launch_template" "linux_runner_nvidia" { instance_initiated_shutdown_behavior = "terminate" - image_id = data.aws_ami.runner_ami_linux.id + image_id = var.ami_id_pining_linux == null ? data.aws_ami.runner_ami_linux[0].id : var.ami_id_pining_linux instance_type = var.instance_type key_name = var.key_name @@ -195,7 +197,7 @@ resource "aws_launch_template" "linux_arm64_runner" { instance_initiated_shutdown_behavior = "terminate" - image_id = data.aws_ami.runner_ami_linux_arm64.id + image_id = var.ami_id_pining_linux_arm64 == null ? data.aws_ami.runner_ami_linux_arm64[0].id : var.ami_id_pining_linux_arm64 instance_type = var.instance_type key_name = var.key_name diff --git a/terraform-aws-github-runner/modules/runners-instances/variables.tf b/terraform-aws-github-runner/modules/runners-instances/variables.tf index e249c50876..29beb91f38 100644 --- a/terraform-aws-github-runner/modules/runners-instances/variables.tf +++ b/terraform-aws-github-runner/modules/runners-instances/variables.tf @@ -62,6 +62,18 @@ variable "instance_type" { default = "m5.large" } +variable "ami_id_pining_linux" { + description = "The AMI ID to pin the linux action runner instances to." + type = string + default = null +} + +variable "ami_id_pining_linux_arm64" { + description = "The AMI ID to pin the linux action runner instances to." + type = string + default = null +} + variable "ami_filter_linux" { description = "List of maps used to create the AMI filter for the action runner AMI." type = map(list(string)) diff --git a/terraform-aws-github-runner/variables.tf b/terraform-aws-github-runner/variables.tf index 0bea807826..7a25b0e7e7 100644 --- a/terraform-aws-github-runner/variables.tf +++ b/terraform-aws-github-runner/variables.tf @@ -253,6 +253,18 @@ variable "block_device_mappings" { default = {} } +variable "ami_id_pining_linux" { + description = "The AMI ID to pin the linux action runner instances to." + type = string + default = null +} + +variable "ami_id_pining_linux_arm64" { + description = "The AMI ID to pin the linux action runner instances to." + type = string + default = null +} + variable "ami_filter_linux" { description = "List of maps used to create the AMI filter for the action runner AMI." type = map(list(string))