From e52d70885e533f72d8c80986aa902710da28c348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Mertcan=20=C3=87am?= Date: Thu, 19 Oct 2023 06:09:22 +0300 Subject: [PATCH] terraform-aws: variable driven ami selection (#10520) * modify variables.tf to accept AMI attributes via variables * update README to guide users on utilizing variable-driven AMI configuration * fix markdown lint error --- contrib/terraform/aws/README.md | 74 ++++++++---------------------- contrib/terraform/aws/variables.tf | 24 ++++++++-- 2 files changed, 39 insertions(+), 59 deletions(-) diff --git a/contrib/terraform/aws/README.md b/contrib/terraform/aws/README.md index 7e3428d19..28a9f08c4 100644 --- a/contrib/terraform/aws/README.md +++ b/contrib/terraform/aws/README.md @@ -50,70 +50,32 @@ Example (this one assumes you are using Ubuntu) ansible-playbook -i ./inventory/hosts ./cluster.yml -e ansible_user=ubuntu -b --become-user=root --flush-cache ``` -***Using other distrib than Ubuntu*** -If you want to use another distribution than Ubuntu 18.04 (Bionic) LTS, you can modify the search filters of the 'data "aws_ami" "distro"' in variables.tf. +## Using other distrib than Ubuntu*** -For example, to use: +To leverage a Linux distribution other than Ubuntu 18.04 (Bionic) LTS for your Terraform configurations, you can adjust the AMI search filters within the 'data "aws_ami" "distro"' block by utilizing variables in your `terraform.tfvars` file. This approach ensures a flexible configuration that adapts to various Linux distributions without directly modifying the core Terraform files. -- Debian Jessie, replace 'data "aws_ami" "distro"' in variables.tf with +### Example Usages -```ini -data "aws_ami" "distro" { - most_recent = true +- **Debian Jessie**: To configure the usage of Debian Jessie, insert the subsequent lines into your `terraform.tfvars`: - filter { - name = "name" - values = ["debian-jessie-amd64-hvm-*"] - } + ```hcl + ami_name_pattern = "debian-jessie-amd64-hvm-*" + ami_owners = ["379101102735"] + ``` - filter { - name = "virtualization-type" - values = ["hvm"] - } +- **Ubuntu 16.04**: To utilize Ubuntu 16.04 instead, apply the following configuration in your `terraform.tfvars`: - owners = ["379101102735"] -} -``` - -- Ubuntu 16.04, replace 'data "aws_ami" "distro"' in variables.tf with - -```ini -data "aws_ami" "distro" { - most_recent = true + ```hcl + ami_name_pattern = "ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-*" + ami_owners = ["099720109477"] + ``` - filter { - name = "name" - values = ["ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-*"] - } - - filter { - name = "virtualization-type" - values = ["hvm"] - } - - owners = ["099720109477"] -} -``` +- **Centos 7**: For employing Centos 7, incorporate these lines into your `terraform.tfvars`: -- Centos 7, replace 'data "aws_ami" "distro"' in variables.tf with - -```ini -data "aws_ami" "distro" { - most_recent = true - - filter { - name = "name" - values = ["dcos-centos7-*"] - } - - filter { - name = "virtualization-type" - values = ["hvm"] - } - - owners = ["688023202711"] -} -``` + ```hcl + ami_name_pattern = "dcos-centos7-*" + ami_owners = ["688023202711"] + ``` ## Connecting to Kubernetes diff --git a/contrib/terraform/aws/variables.tf b/contrib/terraform/aws/variables.tf index 479629e2f..783d4adff 100644 --- a/contrib/terraform/aws/variables.tf +++ b/contrib/terraform/aws/variables.tf @@ -20,20 +20,38 @@ variable "aws_cluster_name" { description = "Name of AWS Cluster" } +variable "ami_name_pattern" { + description = "The name pattern to use for AMI lookup" + type = string + default = "debian-10-amd64-*" +} + +variable "ami_virtualization_type" { + description = "The virtualization type to use for AMI lookup" + type = string + default = "hvm" +} + +variable "ami_owners" { + description = "The owners to use for AMI lookup" + type = list(string) + default = ["136693071363"] +} + data "aws_ami" "distro" { most_recent = true filter { name = "name" - values = ["debian-10-amd64-*"] + values = [var.ami_name_pattern] } filter { name = "virtualization-type" - values = ["hvm"] + values = [var.ami_virtualization_type] } - owners = ["136693071363"] # Debian-10 + owners = var.ami_owners } //AWS VPC Variables