open-vault/enos/modules/ec2_info/main.tf

191 lines
3.4 KiB
HCL

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
locals {
architectures = toset(["arm64", "x86_64"])
canonical_owner_id = "099720109477"
rhel_owner_id = "309956199498"
ids = {
"arm64" = {
"rhel" = {
"8.8" = data.aws_ami.rhel_88["arm64"].id
"9.1" = data.aws_ami.rhel_91["arm64"].id
}
"ubuntu" = {
"18.04" = data.aws_ami.ubuntu_1804["arm64"].id
"20.04" = data.aws_ami.ubuntu_2004["arm64"].id
"22.04" = data.aws_ami.ubuntu_2204["arm64"].id
}
}
"amd64" = {
"rhel" = {
"7.9" = data.aws_ami.rhel_79.id
"8.8" = data.aws_ami.rhel_88["x86_64"].id
"9.1" = data.aws_ami.rhel_91["x86_64"].id
}
"ubuntu" = {
"18.04" = data.aws_ami.ubuntu_1804["x86_64"].id
"20.04" = data.aws_ami.ubuntu_2004["x86_64"].id
"22.04" = data.aws_ami.ubuntu_2204["x86_64"].id
}
}
}
}
data "aws_ami" "ubuntu_1804" {
most_recent = true
for_each = local.architectures
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-*-18.04-*-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
filter {
name = "architecture"
values = [each.value]
}
owners = [local.canonical_owner_id]
}
data "aws_ami" "ubuntu_2004" {
most_recent = true
for_each = local.architectures
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-*-20.04-*-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
filter {
name = "architecture"
values = [each.value]
}
owners = [local.canonical_owner_id]
}
data "aws_ami" "ubuntu_2204" {
most_recent = true
for_each = local.architectures
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-*-22.04-*-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
filter {
name = "architecture"
values = [each.value]
}
owners = [local.canonical_owner_id]
}
data "aws_ami" "rhel_79" {
most_recent = true
# Currently latest latest point release-1
filter {
name = "name"
values = ["RHEL-7.9*HVM-20*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
filter {
name = "architecture"
values = ["x86_64"]
}
owners = [local.rhel_owner_id]
}
data "aws_ami" "rhel_88" {
most_recent = true
for_each = local.architectures
# Currently latest latest point release-1
filter {
name = "name"
values = ["RHEL-8.8*HVM-20*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
filter {
name = "architecture"
values = [each.value]
}
owners = [local.rhel_owner_id]
}
data "aws_ami" "rhel_91" {
most_recent = true
for_each = local.architectures
# Currently latest latest point release-1
filter {
name = "name"
values = ["RHEL-9.1*HVM-20*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
filter {
name = "architecture"
values = [each.value]
}
owners = [local.rhel_owner_id]
}
data "aws_region" "current" {}
data "aws_availability_zones" "available" {
state = "available"
filter {
name = "zone-name"
values = ["*"]
}
}
output "ami_ids" {
value = local.ids
}
output "current_region" {
value = data.aws_region.current
}
output "availability_zones" {
value = data.aws_availability_zones.available
}