From 471d6c020de8bd38f205f3328f2f21d9188779cf Mon Sep 17 00:00:00 2001 From: "Diego OJeda (BinBash)" <38356409+diego-ojeda-binbash@users.noreply.github.com> Date: Wed, 23 Aug 2023 10:38:39 -0300 Subject: [PATCH] Add support for passing existing Security Group IDs (#37) * Add support for passing existing Security Group IDs * Update docs * Disable SumoLogic --- .circleci/config.yml | 10 +++++----- README.md | 1 + instances.tf | 2 +- security.tf | 10 ++++++---- variables.tf | 6 ++++++ 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c952b54..1f63dff 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -273,9 +273,9 @@ jobs: # CircleCI orbs are open-source, shareable packages of parameterizable reusable # configuration elements, including jobs, commands, and executors. # -orbs: - sumologic: circleci/sumologic@1.0.6 - slack: circleci/slack@4.1.1 +# orbs: +# sumologic: circleci/sumologic@1.0.6 +# slack: circleci/slack@4.1.1 # # Jobs workflow @@ -296,5 +296,5 @@ workflows: branches: only: # only branches matching the below regex filters will run - master - - sumologic/workflow-collector: - context: binbashar-org-global-context + # - sumologic/workflow-collector: + # context: binbashar-org-global-context diff --git a/README.md b/README.md index 50eaddc..6a66a77 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ No modules. | [prefix](#input\_prefix) | Prefix | `string` | `"default"` | no | | [root\_block\_device](#input\_root\_block\_device) | Customize details about the root block device of the instance. See Block Devices below for details | `list(map(string))` | `[]` | no | | [root\_device\_backup\_tag](#input\_root\_device\_backup\_tag) | EC2 Root Block Device backup tag | `string` | `"True"` | no | +| [security\_group\_ids](#input\_security\_group\_ids) | A list of security group ids | `list(string)` | `[]` | no | | [security\_group\_rules](#input\_security\_group\_rules) | A list of security group rules | `list(any)` | `[]` | no | | [subnet\_id](#input\_subnet\_id) | Subnet ID | `string` | n/a | yes | | [tag\_approved\_ami\_value](#input\_tag\_approved\_ami\_value) | Set the specific tag ApprovedAMI ('true' \| 'false') that identifies aws-config compliant AMIs | `string` | `"false"` | no | diff --git a/instances.tf b/instances.tf index bd2585d..1249f23 100644 --- a/instances.tf +++ b/instances.tf @@ -27,7 +27,7 @@ data "aws_ami" "ubuntu_linux" { resource "aws_instance" "main" { ami = var.ami_id != "" ? var.ami_id : data.aws_ami.ubuntu_linux.id instance_type = var.instance_type - vpc_security_group_ids = [aws_security_group.main.id] + vpc_security_group_ids = length(var.security_group_ids) > 0 ? var.security_group_ids : [aws_security_group.main[0].id] subnet_id = var.subnet_id key_name = var.key_pair_name iam_instance_profile = var.instance_profile == "" ? aws_iam_instance_profile.basic_instance[0].id : var.instance_profile diff --git a/security.tf b/security.tf index bd73771..18a1998 100644 --- a/security.tf +++ b/security.tf @@ -2,6 +2,7 @@ # Security Groups # resource "aws_security_group" "main" { + count = length(var.security_group_rules) > 0 ? 1 : 0 name = "${var.prefix}-${var.name}-instance" description = "${title(var.name)} Security Group Rules" vpc_id = var.vpc_id @@ -20,20 +21,21 @@ resource "aws_security_group_rule" "ingress_rules" { protocol = lookup(element(var.security_group_rules, count.index), "protocol", "tcp") cidr_blocks = lookup(element(var.security_group_rules, count.index), "cidr_blocks", "0.0.0.0/0") description = lookup(element(var.security_group_rules, count.index), "description", "") - security_group_id = aws_security_group.main.id + security_group_id = aws_security_group.main[0].id } # # Security Groups Egress Rules # resource "aws_security_group_rule" "egress_allow_all" { + count = length(var.security_group_rules) > 0 ? 1 : 0 type = "egress" from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] description = "Allow Egress All" - security_group_id = aws_security_group.main.id + security_group_id = aws_security_group.main[0].id } # @@ -42,14 +44,14 @@ resource "aws_security_group_rule" "egress_allow_all" { resource "aws_iam_instance_profile" "basic_instance" { count = var.instance_profile == "" ? 1 : 0 - name = "basic-instance-profile-${var.prefix}-${var.name}" + name = "${var.prefix}-${var.name}" role = aws_iam_role.basic_instance_assume_role[0].name } resource "aws_iam_role" "basic_instance_assume_role" { count = var.instance_profile == "" ? 1 : 0 - name = "basic-instance-role-${var.prefix}-${var.name}" + name = "${var.prefix}-${var.name}" path = "/" assume_role_policy = data.aws_iam_policy_document.this.json } diff --git a/variables.tf b/variables.tf index 5a7cd57..24af2e9 100644 --- a/variables.tf +++ b/variables.tf @@ -144,6 +144,12 @@ variable "security_group_rules" { default = [] } +variable "security_group_ids" { + type = list(string) + description = "A list of security group ids" + default = [] +} + variable "dns_records_internal_hosted_zone" { type = list(any) description = "A list of DNS private (internal hosted zone) records to create with the instance's IP"