From 125b2bd7e5e25b2c9f51056ee76c788bf47e3eea Mon Sep 17 00:00:00 2001 From: Anton Babenko Date: Thu, 6 Jun 2019 18:33:02 +0200 Subject: [PATCH 1/2] Added placement groups --- README.md | 1 + examples/basic/README.md | 1 + examples/basic/main.tf | 34 +++++++++++++++++++++------------- examples/basic/outputs.tf | 5 +++++ outputs.tf | 10 +++++----- 5 files changed, 33 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 0b607c5b..99ce67da 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ data "aws_ami" "ubuntu-xenial" { | credit\_specification | List of credit specification of instances | | id | List of IDs of instances | | key\_name | List of key names of instances | +| placement\_group | List of placement groups of instances | | primary\_network\_interface\_id | List of IDs of the primary network interface of instances | | private\_dns | List of private DNS names assigned to the instances. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC | | private\_ip | List of private IP addresses assigned to the instances | diff --git a/examples/basic/README.md b/examples/basic/README.md index 1634e044..9f29719c 100644 --- a/examples/basic/README.md +++ b/examples/basic/README.md @@ -29,6 +29,7 @@ Note that this example may create resources which can cost money. Run `terraform | ids\_t2 | List of IDs of t2-type instances | | instance\_id | EC2 instance ID | | instance\_public\_dns | Public DNS name assigned to the EC2 instance | +| placement\_group | List of placement group | | public\_dns | List of public DNS names assigned to the instances | | tags | List of tags | | vpc\_security\_group\_ids | List of VPC security group ids assigned to the instances | diff --git a/examples/basic/main.tf b/examples/basic/main.tf index e0653e00..442ece9a 100644 --- a/examples/basic/main.tf +++ b/examples/basic/main.tf @@ -37,7 +37,7 @@ data "aws_ami" "amazon_linux" { module "security_group" { source = "terraform-aws-modules/security-group/aws" - version = "2.7.0" + version = "~> 2.0" name = "example" description = "Security group for example usage with EC2 instance" @@ -53,6 +53,11 @@ resource "aws_eip" "this" { instance = "${module.ec2.id[0]}" } +resource "aws_placement_group" "web" { + name = "hunky-dory-pg" + strategy = "cluster" +} + module "ec2" { source = "../../" @@ -64,6 +69,7 @@ module "ec2" { subnet_id = "${element(data.aws_subnet_ids.all.ids, 0)}" vpc_security_group_ids = ["${module.security_group.this_security_group_id}"] associate_public_ip_address = true + placement_group = "${aws_placement_group.web.id}" root_block_device = [{ volume_type = "gp2" @@ -85,16 +91,18 @@ module "ec2_with_t2_unlimited" { associate_public_ip_address = true } -module "ec2_with_t3_unlimited" { - source = "../../" - - instance_count = 1 +// +//module "ec2_with_t3_unlimited" { +// source = "../../" +// +// instance_count = 1 +// +// name = "example-t3-unlimited" +// ami = "${data.aws_ami.amazon_linux.id}" +// instance_type = "t3.large" +// cpu_credits = "unlimited" +// subnet_id = "${element(data.aws_subnet_ids.all.ids, 0)}" +// vpc_security_group_ids = ["${module.security_group.this_security_group_id}"] +// associate_public_ip_address = true +//} - name = "example-t3-unlimited" - ami = "${data.aws_ami.amazon_linux.id}" - instance_type = "t3.large" - cpu_credits = "unlimited" - subnet_id = "${element(data.aws_subnet_ids.all.ids, 0)}" - vpc_security_group_ids = ["${module.security_group.this_security_group_id}"] - associate_public_ip_address = true -} diff --git a/examples/basic/outputs.tf b/examples/basic/outputs.tf index 8b3bec9d..1b79389f 100644 --- a/examples/basic/outputs.tf +++ b/examples/basic/outputs.tf @@ -23,6 +23,11 @@ output "tags" { value = "${module.ec2.tags}" } +output "placement_group" { + description = "List of placement group" + value = "${module.ec2.placement_group}" +} + output "instance_id" { description = "EC2 instance ID" value = "${module.ec2.id[0]}" diff --git a/outputs.tf b/outputs.tf index 7648c834..8f347686 100644 --- a/outputs.tf +++ b/outputs.tf @@ -7,6 +7,7 @@ locals { this_primary_network_interface_id = "${compact(concat(coalescelist(aws_instance.this.*.primary_network_interface_id, aws_instance.this_t2.*.primary_network_interface_id), list("")))}" this_private_dns = "${compact(concat(coalescelist(aws_instance.this.*.private_dns, aws_instance.this_t2.*.private_dns), list("")))}" this_private_ip = "${compact(concat(coalescelist(aws_instance.this.*.private_ip, aws_instance.this_t2.*.private_ip), list("")))}" + this_placement_group = "${compact(concat(coalescelist(aws_instance.this.*.placement_group, aws_instance.this_t2.*.placement_group), list("")))}" this_security_groups = "${compact(concat(coalescelist(flatten(aws_instance.this.*.security_groups), flatten(aws_instance.this_t2.*.security_groups)), list("")))}" this_vpc_security_group_ids = "${compact(concat(coalescelist(flatten(aws_instance.this.*.vpc_security_group_ids), flatten(aws_instance.this_t2.*.vpc_security_group_ids)), list("")))}" this_subnet_id = "${compact(concat(coalescelist(aws_instance.this.*.subnet_id, aws_instance.this_t2.*.subnet_id), list("")))}" @@ -25,11 +26,10 @@ output "availability_zone" { value = ["${local.this_availability_zone}"] } -// GH issue: https://github.com/terraform-aws-modules/terraform-aws-ec2-instance/issues/8 -//output "placement_group" { -// description = "List of placement groups of instances" -// value = ["${element(concat(aws_instance.this.*.placement_group, list("")), 0)}"] -//} +output "placement_group" { + description = "List of placement groups of instances" + value = ["${local.this_placement_group}"] +} output "key_name" { description = "List of key names of instances" From e32f39eb387a52962df68cd6e142cafc6eab09c4 Mon Sep 17 00:00:00 2001 From: Anton Babenko Date: Thu, 6 Jun 2019 18:34:19 +0200 Subject: [PATCH 2/2] Revert example --- examples/basic/main.tf | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/examples/basic/main.tf b/examples/basic/main.tf index 442ece9a..8cc5a666 100644 --- a/examples/basic/main.tf +++ b/examples/basic/main.tf @@ -91,18 +91,16 @@ module "ec2_with_t2_unlimited" { associate_public_ip_address = true } -// -//module "ec2_with_t3_unlimited" { -// source = "../../" -// -// instance_count = 1 -// -// name = "example-t3-unlimited" -// ami = "${data.aws_ami.amazon_linux.id}" -// instance_type = "t3.large" -// cpu_credits = "unlimited" -// subnet_id = "${element(data.aws_subnet_ids.all.ids, 0)}" -// vpc_security_group_ids = ["${module.security_group.this_security_group_id}"] -// associate_public_ip_address = true -//} +module "ec2_with_t3_unlimited" { + source = "../../" + + instance_count = 1 + name = "example-t3-unlimited" + ami = "${data.aws_ami.amazon_linux.id}" + instance_type = "t3.large" + cpu_credits = "unlimited" + subnet_id = "${element(data.aws_subnet_ids.all.ids, 0)}" + vpc_security_group_ids = ["${module.security_group.this_security_group_id}"] + associate_public_ip_address = true +}