[
{
"data": {
"aws_partition": {
"current": {}
},
"aws_ssm_parameter": {
"this": {
"count": "${local.create ? 1 : 0}",
"name": "${var.ami_ssm_parameter}"
}
},
"aws_iam_policy_document": {
"assume_role_policy": {
"count": "${var.create && var.create_iam_instance_profile ? 1 : 0}",
"statement": {
"sid": "EC2AssumeRole",
"actions": [
"sts:AssumeRole"
],
"principals": {
"type": "Service",
"identifiers": [
"ec2.${data.aws_partition.current.dns_suffix}"
]
}
}
}
}
},
"locals": [
{
"create": "${var.create && var.putin_khuylo}",
"is_t_instance_type": "${replace(var.instance_type, \"/^t(2|3|3a){1}\\\\..*$/\", \"1\") == \"1\" ? true : false}"
},
{
"iam_role_name": "${try(coalesce(var.iam_role_name, var.name), \"\")}"
}
],
"resource": {
"aws_instance": {
"this": {
"count": "${local.create && !var.create_spot_instance ? 1 : 0}",
"ami": "${try(coalesce(var.ami, data.aws_ssm_parameter.this[0].value), null)}",
"instance_type": "${var.instance_type}",
"cpu_core_count": "${var.cpu_core_count}",
"cpu_threads_per_core": "${var.cpu_threads_per_core}",
"hibernation": "${var.hibernation}",
"user_data": "${var.user_data}",
"user_data_base64": "${var.user_data_base64}",
"user_data_replace_on_change": "${var.user_data_replace_on_change}",
"availability_zone": "${var.availability_zone}",
"subnet_id": "${var.subnet_id}",
"vpc_security_group_ids": "${var.vpc_security_group_ids}",
"key_name": "${var.key_name}",
"monitoring": "${var.monitoring}",
"get_password_data": "${var.get_password_data}",
"iam_instance_profile": "${var.create_iam_instance_profile ? aws_iam_instance_profile.this[0].name : var.iam_instance_profile}",
"associate_public_ip_address": "${var.associate_public_ip_address}",
"private_ip": "${var.private_ip}",
"secondary_private_ips": "${var.secondary_private_ips}",
"ipv6_address_count": "${var.ipv6_address_count}",
"ipv6_addresses": "${var.ipv6_addresses}",
"ebs_optimized": "${var.ebs_optimized}",
"dynamic": {
"capacity_reservation_specification": {
"for_each": "${length(var.capacity_reservation_specification) > 0 ? [var.capacity_reservation_specification] : []}",
"content": {
"capacity_reservation_preference": "${try(capacity_reservation_specification.value.capacity_reservation_preference, null)}",
"dynamic": {
"capacity_reservation_target": {
"for_each": "${try([capacity_reservation_specification.value.capacity_reservation_target], [])}",
"content": {
"capacity_reservation_id": "${try(capacity_reservation_target.value.capacity_reservation_id, null)}",
"capacity_reservation_resource_group_arn": "${try(capacity_reservation_target.value.capacity_reservation_resource_group_arn, null)}"
}
}
}
}
},
"root_block_device": {
"for_each": "${var.root_block_device}",
"content": {
"delete_on_termination": "${lookup(root_block_device.value, \"delete_on_termination\", null)}",
"encrypted": "${lookup(root_block_device.value, \"encrypted\", null)}",
"iops": "${lookup(root_block_device.value, \"iops\", null)}",
"kms_key_id": "${lookup(root_block_device.value, \"kms_key_id\", null)}",
"volume_size": "${lookup(root_block_device.value, \"volume_size\", null)}",
"volume_type": "${lookup(root_block_device.value, \"volume_type\", null)}",
"throughput": "${lookup(root_block_device.value, \"throughput\", null)}",
"tags": "${lookup(root_block_device.value, \"tags\", null)}"
}
},
"ebs_block_device": {
"for_each": "${var.ebs_block_device}",
"content": {
"delete_on_termination": "${lookup(ebs_block_device.value, \"delete_on_termination\", null)}",
"device_name": "${ebs_block_device.value.device_name}",
"encrypted": "${lookup(ebs_block_device.value, \"encrypted\", null)}",
"iops": "${lookup(ebs_block_device.value, \"iops\", null)}",
"kms_key_id": "${lookup(ebs_block_device.value, \"kms_key_id\", null)}",
"snapshot_id": "${lookup(ebs_block_device.value, \"snapshot_id\", null)}",
"volume_size": "${lookup(ebs_block_device.value, \"volume_size\", null)}",
"volume_type": "${lookup(ebs_block_device.value, \"volume_type\", null)}",
"throughput": "${lookup(ebs_block_device.value, \"throughput\", null)}"
}
},
"ephemeral_block_device": {
"for_each": "${var.ephemeral_block_device}",
"content": {
"device_name": "${ephemeral_block_device.value.device_name}",
"no_device": "${lookup(ephemeral_block_device.value, \"no_device\", null)}",
"virtual_name": "${lookup(ephemeral_block_device.value, \"virtual_name\", null)}"
}
},
"metadata_options": {
"for_each": "${var.metadata_options != null ? [var.metadata_options] : []}",
"content": {
"http_endpoint": "${lookup(metadata_options.value, \"http_endpoint\", \"enabled\")}",
"http_tokens": "${lookup(metadata_options.value, \"http_tokens\", \"optional\")}",
"http_put_response_hop_limit": "${lookup(metadata_options.value, \"http_put_response_hop_limit\", \"1\")}",
"instance_metadata_tags": "${lookup(metadata_options.value, \"instance_metadata_tags\", null)}"
}
},
"network_interface": {
"for_each": "${var.network_interface}",
"content": {
"device_index": "${network_interface.value.device_index}",
"network_interface_id": "${lookup(network_interface.value, \"network_interface_id\", null)}",
"delete_on_termination": "${lookup(network_interface.value, \"delete_on_termination\", false)}"
}
},
"launch_template": {
"for_each": "${var.launch_template != null ? [var.launch_template] : []}",
"content": {
"id": "${lookup(var.launch_template, \"id\", null)}",
"name": "${lookup(var.launch_template, \"name\", null)}",
"version": "${lookup(var.launch_template, \"version\", null)}"
}
},
"maintenance_options": {
"for_each": "${length(var.maintenance_options) > 0 ? [var.maintenance_options] : []}",
"content": {
"auto_recovery": "${try(maintenance_options.value.auto_recovery, null)}"
}
}
},
"enclave_options": {
"enabled": "${var.enclave_options_enabled}"
},
"source_dest_check": "${length(var.network_interface) > 0 ? null : var.source_dest_check}",
"disable_api_termination": "${var.disable_api_termination}",
"disable_api_stop": "${var.disable_api_stop}",
"instance_initiated_shutdown_behavior": "${var.instance_initiated_shutdown_behavior}",
"placement_group": "${var.placement_group}",
"tenancy": "${var.tenancy}",
"host_id": "${var.host_id}",
"credit_specification": {
"cpu_credits": "${local.is_t_instance_type ? var.cpu_credits : null}"
},
"timeouts": {
"create": "${lookup(var.timeouts, \"create\", null)}",
"update": "${lookup(var.timeouts, \"update\", null)}",
"delete": "${lookup(var.timeouts, \"delete\", null)}"
},
"tags": "${merge({ \"Name\" = var.name }, var.tags)}",
"volume_tags": "${var.enable_volume_tags ? merge({ \"Name\" = var.name }, var.volume_tags) : null}"
}
},
"aws_spot_instance_request": {
"this": {
"count": "${local.create && var.create_spot_instance ? 1 : 0}",
"ami": "${try(coalesce(var.ami, data.aws_ssm_parameter.this[0].value), null)}",
"instance_type": "${var.instance_type}",
"cpu_core_count": "${var.cpu_core_count}",
"cpu_threads_per_core": "${var.cpu_threads_per_core}",
"hibernation": "${var.hibernation}",
"user_data": "${var.user_data}",
"user_data_base64": "${var.user_data_base64}",
"user_data_replace_on_change": "${var.user_data_replace_on_change}",
"availability_zone": "${var.availability_zone}",
"subnet_id": "${var.subnet_id}",
"vpc_security_group_ids": "${var.vpc_security_group_ids}",
"key_name": "${var.key_name}",
"monitoring": "${var.monitoring}",
"get_password_data": "${var.get_password_data}",
"iam_instance_profile": "${var.create_iam_instance_profile ? aws_iam_instance_profile.this[0].name : var.iam_instance_profile}",
"associate_public_ip_address": "${var.associate_public_ip_address}",
"private_ip": "${var.private_ip}",
"secondary_private_ips": "${var.secondary_private_ips}",
"ipv6_address_count": "${var.ipv6_address_count}",
"ipv6_addresses": "${var.ipv6_addresses}",
"ebs_optimized": "${var.ebs_optimized}",
"spot_price": "${var.spot_price}",
"wait_for_fulfillment": "${var.spot_wait_for_fulfillment}",
"spot_type": "${var.spot_type}",
"launch_group": "${var.spot_launch_group}",
"block_duration_minutes": "${var.spot_block_duration_minutes}",
"instance_interruption_behavior": "${var.spot_instance_interruption_behavior}",
"valid_until": "${var.spot_valid_until}",
"valid_from": "${var.spot_valid_from}",
"dynamic": {
"capacity_reservation_specification": {
"for_each": "${length(var.capacity_reservation_specification) > 0 ? [var.capacity_reservation_specification] : []}",
"content": {
"capacity_reservation_preference": "${try(capacity_reservation_specification.value.capacity_reservation_preference, null)}",
"dynamic": {
"capacity_reservation_target": {
"for_each": "${try([capacity_reservation_specification.value.capacity_reservation_target], [])}",
"content": {
"capacity_reservation_id": "${try(capacity_reservation_target.value.capacity_reservation_id, null)}",
"capacity_reservation_resource_group_arn": "${try(capacity_reservation_target.value.capacity_reservation_resource_group_arn, null)}"
}
}
}
}
},
"root_block_device": {
"for_each": "${var.root_block_device}",
"content": {
"delete_on_termination": "${lookup(root_block_device.value, \"delete_on_termination\", null)}",
"encrypted": "${lookup(root_block_device.value, \"encrypted\", null)}",
"iops": "${lookup(root_block_device.value, \"iops\", null)}",
"kms_key_id": "${lookup(root_block_device.value, \"kms_key_id\", null)}",
"volume_size": "${lookup(root_block_device.value, \"volume_size\", null)}",
"volume_type": "${lookup(root_block_device.value, \"volume_type\", null)}",
"throughput": "${lookup(root_block_device.value, \"throughput\", null)}",
"tags": "${lookup(root_block_device.value, \"tags\", null)}"
}
},
"ebs_block_device": {
"for_each": "${var.ebs_block_device}",
"content": {
"delete_on_termination": "${lookup(ebs_block_device.value, \"delete_on_termination\", null)}",
"device_name": "${ebs_block_device.value.device_name}",
"encrypted": "${lookup(ebs_block_device.value, \"encrypted\", null)}",
"iops": "${lookup(ebs_block_device.value, \"iops\", null)}",
"kms_key_id": "${lookup(ebs_block_device.value, \"kms_key_id\", null)}",
"snapshot_id": "${lookup(ebs_block_device.value, \"snapshot_id\", null)}",
"volume_size": "${lookup(ebs_block_device.value, \"volume_size\", null)}",
"volume_type": "${lookup(ebs_block_device.value, \"volume_type\", null)}",
"throughput": "${lookup(ebs_block_device.value, \"throughput\", null)}"
}
},
"ephemeral_block_device": {
"for_each": "${var.ephemeral_block_device}",
"content": {
"device_name": "${ephemeral_block_device.value.device_name}",
"no_device": "${lookup(ephemeral_block_device.value, \"no_device\", null)}",
"virtual_name": "${lookup(ephemeral_block_device.value, \"virtual_name\", null)}"
}
},
"metadata_options": {
"for_each": "${var.metadata_options != null ? [var.metadata_options] : []}",
"content": {
"http_endpoint": "${lookup(metadata_options.value, \"http_endpoint\", \"enabled\")}",
"http_tokens": "${lookup(metadata_options.value, \"http_tokens\", \"optional\")}",
"http_put_response_hop_limit": "${lookup(metadata_options.value, \"http_put_response_hop_limit\", \"1\")}"
}
},
"network_interface": {
"for_each": "${var.network_interface}",
"content": {
"device_index": "${network_interface.value.device_index}",
"network_interface_id": "${lookup(network_interface.value, \"network_interface_id\", null)}",
"delete_on_termination": "${lookup(network_interface.value, \"delete_on_termination\", false)}"
}
},
"launch_template": {
"for_each": "${var.launch_template != null ? [var.launch_template] : []}",
"content": {
"id": "${lookup(var.launch_template, \"id\", null)}",
"name": "${lookup(var.launch_template, \"name\", null)}",
"version": "${lookup(var.launch_template, \"version\", null)}"
}
}
},
"enclave_options": {
"enabled": "${var.enclave_options_enabled}"
},
"source_dest_check": "${length(var.network_interface) > 0 ? null : var.source_dest_check}",
"disable_api_termination": "${var.disable_api_termination}",
"instance_initiated_shutdown_behavior": "${var.instance_initiated_shutdown_behavior}",
"placement_group": "${var.placement_group}",
"tenancy": "${var.tenancy}",
"host_id": "${var.host_id}",
"credit_specification": {
"cpu_credits": "${local.is_t_instance_type ? var.cpu_credits : null}"
},
"timeouts": {
"create": "${lookup(var.timeouts, \"create\", null)}",
"delete": "${lookup(var.timeouts, \"delete\", null)}"
},
"tags": "${merge({ \"Name\" = var.name }, var.tags)}",
"volume_tags": "${var.enable_volume_tags ? merge({ \"Name\" = var.name }, var.volume_tags) : null}"
}
},
"aws_iam_role": {
"this": {
"count": "${var.create && var.create_iam_instance_profile ? 1 : 0}",
"name": "${var.iam_role_use_name_prefix ? null : local.iam_role_name}",
"name_prefix": "${var.iam_role_use_name_prefix ? \"${local.iam_role_name}-\" : null}",
"path": "${var.iam_role_path}",
"description": "${var.iam_role_description}",
"assume_role_policy": "${data.aws_iam_policy_document.assume_role_policy[0].json}",
"permissions_boundary": "${var.iam_role_permissions_boundary}",
"force_detach_policies": true,
"tags": "${merge(var.tags, var.iam_role_tags)}"
}
},
"aws_iam_role_policy_attachment": {
"this": {
"for_each": "${{for k, v in var.iam_role_policies : k => v if var.create && var.create_iam_instance_profile}}",
"policy_arn": "${each.value}",
"role": "${aws_iam_role.this[0].name}"
}
},
"aws_iam_instance_profile": {
"this": {
"count": "${var.create && var.create_iam_instance_profile ? 1 : 0}",
"role": "${aws_iam_role.this[0].name}",
"name": "${var.iam_role_use_name_prefix ? null : local.iam_role_name}",
"name_prefix": "${var.iam_role_use_name_prefix ? \"${local.iam_role_name}-\" : null}",
"path": "${var.iam_role_path}",
"tags": "${merge(var.tags, var.iam_role_tags)}",
"lifecycle": {
"create_before_destroy": true
}
}
}
}
},
{
"resource": {
"aws_eks_cluster": {
"this": {
"count": "${var.create_eks ? 1 : 0}",
"name": "${var.cluster_name}",
"enabled_cluster_log_types": "${var.cluster_enabled_log_types}",
"role_arn": "${local.cluster_iam_role_arn}",
"version": "${var.cluster_version}",
"vpc_config": {
"security_group_ids": "${compact([local.cluster_security_group_id])}",
"subnet_ids": "${var.subnets}"
},
"kubernetes_network_config": {
"service_ipv4_cidr": "${var.cluster_service_ipv4_cidr}"
},
"dynamic": {
"encryption_config": {
"for_each": "${toset(var.cluster_encryption_config)}",
"content": {
"provider": {
"key_arn": "${encryption_config.value[\"provider_key_arn\"]}"
},
"resources": "${encryption_config.value[\"resources\"]}"
}
}
},
"tags": "${merge(var.tags, var.cluster_tags)}",
"depends_on": [
"${aws_cloudwatch_log_group.this}"
]
}
},
"aws_s3_bucket": {
"mybucket": {
"name": "mybucket"
},
"otherbucket": {
"name": "otherbucket"
}
}
}
}
]