Skip to content

Commit

Permalink
Remove deprecated null_data_source (#96)
Browse files Browse the repository at this point in the history
* Refactor to remove deprecated null_data_source resource
* Update examples, README, test
  • Loading branch information
mdfilio committed May 18, 2022
1 parent e7491c8 commit cc19962
Show file tree
Hide file tree
Showing 9 changed files with 66 additions and 82 deletions.
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ workflows:
- test:
filters:
branches:
ignore: master
ignore: master
- check_destruction:
requires:
- test
filters:
branches:
ignore: master
ignore: master
2 changes: 1 addition & 1 deletion .terraform-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.13.2
0.13.7
40 changes: 19 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,14 @@ New variable `ssm_bootstrap_list` was added to allow setting the SSM association

| Name | Version |
|------|---------|
| terraform | >= 0.12 |
| aws | >= 2.7.0 |
| terraform | >= 0.13.7 |
| aws | ~> 3.0 |

## Providers

| Name | Version |
|------|---------|
| aws | >= 2.7.0 |
| null | n/a |
| aws | ~> 3.0 |

## Modules

Expand All @@ -71,23 +70,22 @@ New variable `ssm_bootstrap_list` was added to allow setting the SSM association

| Name |
|------|
| [aws_ami](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/data-sources/ami) |
| [aws_caller_identity](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/data-sources/caller_identity) |
| [aws_cloudwatch_log_group](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/cloudwatch_log_group) |
| [aws_cloudwatch_metric_alarm](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/cloudwatch_metric_alarm) |
| [aws_eip_association](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/eip_association) |
| [aws_iam_instance_profile](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/iam_instance_profile) |
| [aws_iam_policy](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/iam_policy) |
| [aws_iam_policy_document](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/data-sources/iam_policy_document) |
| [aws_iam_role](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/iam_role) |
| [aws_iam_role_policy_attachment](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/iam_role_policy_attachment) |
| [aws_instance](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/instance) |
| [aws_region](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/data-sources/region) |
| [aws_route53_record](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/route53_record) |
| [aws_ssm_association](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/ssm_association) |
| [aws_ssm_document](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/ssm_document) |
| [aws_ssm_parameter](https://registry.terraform.io/providers/hashicorp/aws/2.7.0/docs/resources/ssm_parameter) |
| [null_data_source](https://registry.terraform.io/providers/hashicorp/null/latest/docs/data-sources/data_source) |
| [aws_ami](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/data-sources/ami) |
| [aws_caller_identity](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/data-sources/caller_identity) |
| [aws_cloudwatch_log_group](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/cloudwatch_log_group) |
| [aws_cloudwatch_metric_alarm](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/cloudwatch_metric_alarm) |
| [aws_eip_association](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/eip_association) |
| [aws_iam_instance_profile](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/iam_instance_profile) |
| [aws_iam_policy](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/iam_policy) |
| [aws_iam_policy_document](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/data-sources/iam_policy_document) |
| [aws_iam_role](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/iam_role) |
| [aws_iam_role_policy_attachment](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/iam_role_policy_attachment) |
| [aws_instance](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/instance) |
| [aws_region](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/data-sources/region) |
| [aws_route53_record](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/route53_record) |
| [aws_ssm_association](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/ssm_association) |
| [aws_ssm_document](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/ssm_document) |
| [aws_ssm_parameter](https://registry.terraform.io/providers/hashicorp/aws/3.0/docs/resources/ssm_parameter) |

## Inputs

Expand Down
27 changes: 8 additions & 19 deletions examples/custom_ami.tf
Original file line number Diff line number Diff line change
@@ -1,47 +1,36 @@
provider "aws" {
version = "~> 2.7"
version = "~> 3.0"
region = "us-west-2"
}

module "vpc" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.1"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.7"

name = "EC2-AR-BaseNetwork-Test1"
}

data "aws_region" "current_region" {
}

data "aws_ami" "my_custom_ami" {
executable_users = ["self"]
most_recent = true
owners = ["self"]

filter {
name = "name"
values = ["MyCustomAMI"]
}
}

data "aws_ami" "community_ami" {
data "aws_ami" "centos7_marketplace" {
owners = ["aws-marketplace"]
most_recent = true
owners = ["679593333241"]

filter {
name = "name"
values = ["CentOS Linux 7 x86_64 HVM EBS*"]
name = "product-code"
values = ["cvugziknvmxgqna9noibqnnsy"]
}
}

module "ec2_ar" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-ec2_autorecovery?ref=v0.12.10"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-ec2_autorecovery?ref=v0.12.26"

backup_tag_value = "False"
detailed_monitoring = true
ec2_os = "centos7"
enable_ebs_optimization = false
encrypt_secondary_ebs_volume = false
image_id = data.aws_ami.community_ami.ami_id
image_id = data.aws_ami.centos7_marketplace.id
install_codedeploy_agent = false
instance_count = 3
instance_type = "t2.micro"
Expand Down
10 changes: 5 additions & 5 deletions examples/custom_cw_agent_config.tf
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
locals {
cwagent_vars = {
application_log_group_name = "custom_app_log_group_name"
system_log_group_name = "custom_system_log_group_name"
application_log = "custom_app_log_group_name"
system_log = "custom_system_log_group_name"
}
}

Expand All @@ -19,15 +19,15 @@ resource "random_string" "res_name" {
}

module "vpc" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.1"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.7"

name = "EC2-AR-BaseNetwork-Test1"
}

module "ec2_ar_with_codedeploy" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-ec2_autorecovery?ref=v0.12.10"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-ec2_autorecovery?ref=v0.12.26"

ec2_os = "rhel6"
ec2_os = "amazon2"
instance_count = 1
subnets = module.vpc.private_subnets

Expand Down
6 changes: 3 additions & 3 deletions examples/managed.tf
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
provider "aws" {
version = "~> 2.7"
version = "~> 3.0"
region = "us-west-2"
}

module "vpc" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.1"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.7"

name = "EC2-AR-BaseNetwork-Test1"
}
Expand All @@ -13,7 +13,7 @@ data "aws_region" "current_region" {
}

module "ec2_ar" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-ec2_autorecovery?ref=v0.12.10"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-ec2_autorecovery?ref=v0.12.26"

backup_tag_value = "False"
detailed_monitoring = true
Expand Down
6 changes: 3 additions & 3 deletions examples/unmanaged.tf
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ provider "aws" {
}

module "vpc" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.1"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.7"

name = "EC2-AR-BaseNetwork-Test1"
}
Expand All @@ -13,13 +13,13 @@ data "aws_region" "current_region" {
}

module "sns" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-sns?ref=v0.12.1"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-sns?ref=v0.12.2"

name = "my-alarm-notification-topic"
}

module "unmanaged_ar" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-ec2_autorecovery?ref=v0.12.10"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-ec2_autorecovery?ref=v0.12.26"

ec2_os = "centos7"
instance_count = 1
Expand Down
51 changes: 24 additions & 27 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ locals {
}

terraform {
required_version = ">= 0.12"
required_version = ">= 0.13.7"

required_providers {
aws = ">= 2.7.0"
aws = "~> 3.0"
}
}

Expand Down Expand Up @@ -422,25 +422,22 @@ data "aws_iam_policy_document" "mod_ec2_instance_role_policies" {
}


data "null_data_source" "instance_ips" {
count = var.instance_count

inputs = {
private_ip = element(
coalescelist(
aws_instance.mod_ec2_instance_with_secondary_ebs.*.private_ip,
aws_instance.mod_ec2_instance_no_secondary_ebs.*.private_ip,
locals {
instance_ips = tolist([for n in range(var.instance_count) :
element(coalescelist(
aws_instance.mod_ec2_instance_with_secondary_ebs.*.private_ip,
aws_instance.mod_ec2_instance_no_secondary_ebs.*.private_ip,
),
count.index,
n
)
}
])
}

resource "aws_route53_record" "instance" {
count = var.create_internal_route53 ? var.instance_count : 0

name = "${var.name}${var.instance_count > 1 ? format("-%03d.", count.index + 1) : "."}${var.internal_zone_name}"
records = [data.null_data_source.instance_ips[count.index].outputs["private_ip"]]
records = [local.instance_ips[count.index]]
ttl = "300"
type = "A"
zone_id = var.internal_zone_id
Expand Down Expand Up @@ -567,18 +564,18 @@ resource "aws_cloudwatch_log_group" "application_logs" {
retention_in_days = var.cloudwatch_log_retention
}

data "null_data_source" "alarm_dimensions" {
count = var.instance_count
locals {

inputs = {
InstanceId = element(
coalescelist(
aws_instance.mod_ec2_instance_with_secondary_ebs.*.id,
aws_instance.mod_ec2_instance_no_secondary_ebs.*.id,
instance_ids = [for n in range(var.instance_count) :
element(coalescelist(
aws_instance.mod_ec2_instance_with_secondary_ebs.*.id,
aws_instance.mod_ec2_instance_no_secondary_ebs.*.id,
),
count.index,
n
)
}
]

alarm_dimensions = tolist([for n in range(var.instance_count) : tomap({ "InstanceId" = tostring(local.instance_ids[n]) })])
}

module "status_check_failed_system_alarm_ticket" {
Expand All @@ -591,7 +588,7 @@ module "status_check_failed_system_alarm_ticket" {
["StatusCheckFailedSystemAlarmTicket", var.name],
)
comparison_operator = "GreaterThanThreshold"
dimensions = data.null_data_source.alarm_dimensions.*.outputs
dimensions = local.alarm_dimensions[*]
evaluation_periods = "2"
notification_topic = [var.notification_topic]
metric_name = "StatusCheckFailed_System"
Expand All @@ -618,7 +615,7 @@ resource "aws_cloudwatch_metric_alarm" "status_check_failed_instance_alarm_reboo
],
)
comparison_operator = "GreaterThanThreshold"
dimensions = data.null_data_source.alarm_dimensions[count.index].outputs
dimensions = local.alarm_dimensions[count.index]
evaluation_periods = "5"
metric_name = "StatusCheckFailed_Instance"
namespace = "AWS/EC2"
Expand All @@ -643,7 +640,7 @@ resource "aws_cloudwatch_metric_alarm" "status_check_failed_system_alarm_recover
],
)
comparison_operator = "GreaterThanThreshold"
dimensions = data.null_data_source.alarm_dimensions[count.index].outputs
dimensions = local.alarm_dimensions[count.index]
evaluation_periods = "2"
metric_name = "StatusCheckFailed_System"
namespace = "AWS/EC2"
Expand All @@ -665,7 +662,7 @@ module "status_check_failed_instance_alarm_ticket" {
["StatusCheckFailedInstanceAlarmTicket", var.name],
)
comparison_operator = "GreaterThanThreshold"
dimensions = data.null_data_source.alarm_dimensions.*.outputs
dimensions = local.alarm_dimensions[*]
evaluation_periods = "10"
metric_name = "StatusCheckFailed_Instance"
notification_topic = [var.notification_topic]
Expand All @@ -687,7 +684,7 @@ module "cpu_alarm_high" {
alarm_name = join("-", ["CPUAlarmHigh", var.name])
comparison_operator = var.cw_cpu_high_operator
customer_alarms_enabled = true
dimensions = data.null_data_source.alarm_dimensions.*.outputs
dimensions = local.alarm_dimensions[*]
evaluation_periods = var.cw_cpu_high_evaluations
metric_name = "CPUUtilization"
notification_topic = [var.notification_topic]
Expand Down
2 changes: 1 addition & 1 deletion tests/test1/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ resource "random_string" "res_name" {
}

module "vpc" {
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.4"
source = "git@github.com:rackspace-infrastructure-automation/aws-terraform-vpc_basenetwork?ref=v0.12.7"

name = "${random_string.res_name.result}-EC2-AR-BaseNetwork-Test1"
}
Expand Down

0 comments on commit cc19962

Please sign in to comment.