Skip to content

Commit

Permalink
terraform-aws: variable driven ami selection (kubernetes-sigs#10520)
Browse files Browse the repository at this point in the history
* modify variables.tf to accept AMI attributes via variables

* update README to guide users on utilizing variable-driven AMI configuration

* fix markdown lint error
  • Loading branch information
mertcancam authored and lobiyedKarim1 committed Oct 25, 2023
1 parent 3f1409d commit 60ced30
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 59 deletions.
74 changes: 18 additions & 56 deletions contrib/terraform/aws/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
24 changes: 21 additions & 3 deletions contrib/terraform/aws/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 60ced30

Please sign in to comment.