data "aws_ami" "mac_11" { most_recent = true owners = ["amazon"] filter { name = "name" values = [ "amzn-ec2-macos-11.7.4-*-*" ] } filter { name = "owner-alias" values = [ "amazon", ] } } data "aws_ami" "mac_12" { most_recent = true owners = ["amazon"] filter { name = "name" values = [ "amzn-ec2-macos-12.7.3-*-*" ] } filter { name = "owner-alias" values = [ "amazon", ] } } data "aws_ami" "mac_13" { most_recent = true owners = ["amazon"] filter { name = "name" values = [ "amzn-ec2-macos-13.7-*-*" ] } filter { name = "owner-alias" values = [ "amazon", ] } } data "aws_ami" "mac_14" { most_recent = true owners = ["amazon"] filter { name = "name" values = [ "amzn-ec2-macos-14.7-*-*" ] } filter { name = "owner-alias" values = [ "amazon", ] } } data "aws_ami" "mac_15" { most_recent = true owners = ["amazon"] filter { name = "name" values = [ "amzn-ec2-macos-15.0-*-*" ] } filter { name = "owner-alias" values = [ "amazon", ] } } module "vpc" { source = "terraform-aws-modules/vpc/aws" version = "2.64.0" name = "mac-instance-vpc" azs = var.availability_zones cidr = var.vpc_cidr public_subnets = var.public_subnets_cidrs enable_dns_hostnames = true enable_dns_support = true } resource "aws_security_group" "ssh" { name_prefix = "mac-ssh-sg-" vpc_id = module.vpc.vpc_id ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } lifecycle { create_before_destroy = true } } # mac2-m2.metal # 4 performance cores, 4 efficiency cores 8vCPUs 24G Mem 10G Network 8G EBS # mac2-m2pro.metal # 8 performance cores, 4 efficiency cores 12vCPUs 32G Mem 10G Network 8G EBS resource "aws_instance" "mac_instance" { ami = data.aws_ami.mac_15.image_id instance_type = "mac1.metal" key_name = var.ssh_key_name subnet_id = module.vpc.public_subnets[1] vpc_security_group_ids = [aws_security_group.ssh.id] } # ssh -i private_key.pem ec2-user@52.53.52.53