Kaynağa Gözat

make it possible to disable ephemeral/persistent storage

Chris Mague 4 yıl önce
ebeveyn
işleme
84cae36ad3
4 değiştirilmiş dosya ile 37 ekleme ve 21 silme
  1. 22 18
      instances.tf
  2. 5 0
      main.tf
  3. 5 3
      test/main.tf
  4. 5 0
      variables.tf

+ 22 - 18
instances.tf

@@ -11,34 +11,51 @@ resource "aws_instance" "re" {
 
 }
 
+resource "aws_eip" "re-eip" {
+  vpc   = true
+  count = var.data-node-count
+  tags  = merge({ Name = "${var.vpc-name}-node-eip-${count.index}" }, var.common-tags)
+}
+
+resource "aws_eip_association" "re-eip-assoc" {
+  count         = var.data-node-count
+  instance_id   = "${element(aws_instance.re.*.id, count.index)}"
+  allocation_id = "${element(aws_eip.re-eip.*.id, count.index)}"
+  depends_on    = ["aws_instance.re", "aws_eip.re-eip"]
+}
+
+# Handle attaching volumes if enable-volumes is set (true by default)
+
 resource "aws_ebs_volume" "re-ephemeral" {
-  count             = var.data-node-count
+  count             = local.count_volumes
   availability_zone = "${element(var.vpc-azs, count.index)}"
   size              = "${var.re-volume-size}"
   tags              = merge({ Name = "ephemeral-${var.vpc-name}-${count.index}" }, var.common-tags)
 }
 
 resource "aws_volume_attachment" "re-ephemeral" {
-  count       = var.data-node-count
+  count       = local.count_volumes
   device_name = "/dev/sdh"
   volume_id   = "${element(aws_ebs_volume.re-ephemeral.*.id, count.index)}"
   instance_id = "${element(aws_instance.re.*.id, count.index)}"
 }
 
 resource "aws_ebs_volume" "re-persistant" {
-  count             = var.data-node-count
+  count             = local.count_volumes
   availability_zone = "${element(var.vpc-azs, count.index)}"
   size              = "${var.re-volume-size}"
   tags              = merge({ Name = "persistant-${var.vpc-name}-${count.index}" }, var.common-tags)
 }
 
 resource "aws_volume_attachment" "re-persistant" {
-  count       = var.data-node-count
+  count       = local.count_volumes
   device_name = "/dev/sdj"
   volume_id   = "${element(aws_ebs_volume.re-persistant.*.id, count.index)}"
   instance_id = "${element(aws_instance.re.*.id, count.index)}"
 }
 
+# Handle attaching volumes if enable-flash is set (false by default)
+
 resource "aws_ebs_volume" "re-flash" {
   count = local.count_flash
   availability_zone = "${element(var.vpc-azs, count.index)}"
@@ -52,17 +69,4 @@ resource "aws_volume_attachment" "re-flash" {
   device_name = "/dev/sdi"
   volume_id   = "${element(aws_ebs_volume.re-flash.*.id, count.index)}"
   instance_id = "${element(aws_instance.re.*.id, count.index)}"
-}
-
-resource "aws_eip" "re-eip" {
-  vpc   = true
-  count = var.data-node-count
-  tags  = merge({ Name = "${var.vpc-name}-node-eip-${count.index}" }, var.common-tags)
-}
-
-resource "aws_eip_association" "re-eip-assoc" {
-  count         = var.data-node-count
-  instance_id   = "${element(aws_instance.re.*.id, count.index)}"
-  allocation_id = "${element(aws_eip.re-eip.*.id, count.index)}"
-  depends_on    = ["aws_instance.re", "aws_eip.re-eip"]
-}
+}

+ 5 - 0
main.tf

@@ -3,6 +3,11 @@ provider "aws" {
   profile = "${var.profile}"
 }
 
+# Allow us to configure volumes
+locals {
+  count_volumes = (var.enable-volumes == true ? var.data-node-count : 0)
+}
+
 # Allow us to enable flash devices
 locals {
   count_flash = (var.enable-flash == true ? var.data-node-count : 0)

+ 5 - 3
test/main.tf

@@ -15,9 +15,11 @@ module "mymodule" {
   vpc-name         = "myvpc"
   ssh-key          = "test.pem"
   allow-public-ssh = 1
+  enable-flash     = true
+  enable-volumes   = false
   vpc-azs          = ["us-west-1a", "us-west-1b"]
-  common-tags      = {
-    "Owner"        = "maguec"
-    "Project"      = "example"
+  common-tags = {
+    "Owner"   = "maguec"
+    "Project" = "example"
   }
 }

+ 5 - 0
variables.tf

@@ -66,6 +66,11 @@ variable "enable-flash" {
   default     = false
 }
 
+variable "enable-volumes" {
+  description = "Enable EBS Devices for Ephemeral and Persistent storage"
+  default     = true
+}
+
 variable "flash-iops" {
   description = "Enable Flash IOPS"
   default     = "100"