Gruntwork release 2020-02
Guides / Update Guides / Releases / 2020-02
This page is lists all the updates to the Gruntwork Infrastructure as Code
Library that were released in 2020-02. For instructions
on how to use these updates in your code, check out the updating
documentation.
Here are the repos that were updated:
Published: 2/28/2020 | Release notes
Published: 2/26/2020 | Modules affected: **No changes to underlying modules** | Release notes
- Update CircleCi Packer from 1.3.3 to 1.5.4 
The Packer template used to generate machine images now uses the clean_resource_name function when generating the artifact's image name (changed from clean_ami_name). Note that the clean_ami_name function was deprecated in Packer's 1.5.0 release.
Published: 2/20/2020 | Modules affected: server-group | Release notes
- The server-groupmodule now exposes a newuser_data_base64parameter that you can use to pass in Base64-encoded data (e.g., gzipped cloud-init script).
Published: 2/28/2020 | Modules affected: redis | Release notes
- Add count to var.allow_connections_from_cidr_blocks.
Published: 2/20/2020 | Modules affected: jenkins-server | Release notes
- You can now configure the health check max retries and time between retries for Jenkins using the new input variables deployment_health_check_max_retriesanddeployment_health_check_retry_interval_in_seconds, respectively. Changed the default settings to be ten minutes worth of retries instead of one hour.
Published: 2/20/2020 | Modules affected: jenkins-server | Release notes
Made several updates to the jenkins-server module:
- Expose a new user_data_base64input variable that allows you to pass in Base64-encoded User Data (e.g., such as a gzipped cloud-init script).
- Fixed deprecation warnings with the ALB listener rules.
- Updated the version of the albmodule used under the hood. This new version no longer sets theEnvironmenttag on the load balancer. Therefore, thejenkins-servermodule no longer takes anenvironment_namevariable as an input variable, so if you're upgrading, you'll need to remove this variable.
Published: 2/18/2020 | Modules affected: infrastructure-deploy-script, ecs-deploy-runner, ecs-deploy-runner-invoke-iam-policy, infrastructure-deployer | Release notes
This release introduces the ECS Deploy Runner stack, a collection of CLI utilities, modules, and scripts that can be used for implementing a secure Terraform / Terragrunt CI/CD pipeline. Refer to the overview documentation for more details. The following is a summary of the components:
- infrastructure-deploy-script: A python script that can be used to run- terraformor- terragrunton a module stored in a git repository.
- ecs-deploy-runner: A terraform module to manage the ECS Deploy Runner stack. This module contains a- Dockerfilefor a docker container with the- infrastructure-deploy-scriptand deploys an ECS task definition to run the container on ECS Fargate with an AWS Lambda function that exposes a minimal interface to invoke the deployment task.
- ecs-deploy-runner-invoke-iam-policy: A terraform module to manage an IAM policy that grants the minimal permissions necessary to invoke the ECS Deploy Runner Invoker Lambda function.
- infrastructure-deployer: A CLI utility to invoke and stream the logs of a deployment running in the ECS Deploy Runner stack.
This release also adds a new script to the terraform-helpers module, git-updated-folders, which can be used to get a list of all the folders that were updated between two git refs (branch, tag, or SHA).
Published: 2/4/2020 | Modules affected: gruntwork-module-circleci-helpers | Release notes
When running with -t, go get will pull versions of packages that might
be needed for testing but not for the functionality of the dependency
that uses it. This can break our tests when those versions have
incompatibilities.
Published: 2/4/2020 | Modules affected: aws-securityhub, aws-config | Release notes
aws-config has been migrated to module-security as the module aws-config-multi-region. If you were using the aws-config module before, replace with the URL to module-security. See the migration guide for more details.
As a result of this change, both aws-config-multi-region and aws-securityhub has been enhanced with a new input variable opt_in_regions which allows you to restrict what regions AWS Config and SecurityHub are enabled in.
Published: 2/28/2020 | Modules affected: rds | Release notes
- Make var.allow_connections_from_cidr_blocksoptional.
Published: 2/26/2020 | Modules affected: rds, aurora | Release notes
- Add the ability to enable Performance Insights in the rdsmodule.
- Add copy_tags_to_snapshotsupport to therdsmodule.
- Add copy_tags_to_snapshotsupport to theauroramodule.
Published: 2/19/2020 | Modules affected: rds | Release notes
- Add the ability to enable deletion_protectionin therdsmodule.
Published: 2/7/2020 | Modules affected: rds, aurora | Release notes
- Allow specifying the Certificate Authority (CA) bundle to use in the auroramodule via theca_cert_identifierinput variable.
- Update the ca_cert_identifierinput variable in therdsmodule to set the default tonullinstead of hard-coding it tords-ca-2019. This means this module (and theauroramodule) will now use whatever default is set by the underlying RDS resources in the AWS provider. This is why this release is marked as backwards incompatible.
Published: 2/6/2020 | Modules affected: aurora | Release notes
- You can now configure backtracking (in-place, destructive rollback to a previous point-in-time) on Aurora clusters using the backtrack_windowvariable.
Published: 2/20/2020 | Modules affected: ecs-service | Release notes
Add logs:CreateLogGroup to the IAM permissions for the ECS task execution role. This is necessary for ECS to create a new log group if the configured log group does not already exist.
Published: 2/19/2020 | Modules affected: ecs-service | Release notes
The ecs-service module now exposes task_role_permissions_boundary_arn and task_execution_role_permissions_boundary_arn input parameters that can be used to set permission boundaries on the IAM roles created by this module.
Published: 2/22/2020 | Modules affected: eks-cluster-control-plane | Release notes
The clean_up_cluster_resources script now cleans up residual security groups from the ALB ingress controller.
Published: 2/7/2020 | Modules affected: eks-k8s-external-dns, eks-k8s-cluster-autoscaler, eks-cloudwatch-container-logs, eks-alb-ingress-controller | Release notes
The IAM Role for Service Accounts (IRSA) input variables for the application modules (eks-k8s-external-dns, eks-k8s-cluster-autoscaler, eks-cloudwatch-container-logs, and eks-alb-ingress-controller) are now required. Previously, we defaulted use_iam_role_for_service_accounts to true, but this meant that you needed to provide two required variables eks_openid_connect_provider_arn and eks_openid_connect_provider_url. However, these had defaults of empty string and do not cause an error in the terraform config, which means that you would have a successful deployment even if they weren't set. This can be confusing because each of these services will silently fail since they will not have access to the AWS resources they need to manage. Starting this release the IRSA input variables have been consolidated to a single required variable iam_role_for_service_accounts_config.
Published: 2/26/2020 | Modules affected: lambda | Release notes
You can now set the permissions boundary on the IAM role created for the lambda function.
Published: 2/26/2020 | Modules affected: lambda-edge, keep-warm | Release notes
- Bump all examples and modules to use nodejs12.x as the runtime, as 6.x and 8.x have been deprecated.
Published: 2/19/2020 | Modules affected: alb | Release notes
- The - albmodule no longer exposes an- environment_nameinput variable. This variable was solely used to set an- Environmenttag on the load balancer. To upgrade to this version, you will need to remove the- environment_nameparameter from your code. If you wish to maintain the tag for backwards compatibility, set it in the- custom_tagsparameter as follows:
 - custom_tags = &
 Environment = "whatever value you were setting for environment_name before"
 &
 
 
Published: 2/4/2020 | Modules affected: alb | Release notes
This release fixes a bug in outputs.tf when removing a port from a listener. The call to zipmap() was not taking in to account removed ports, resulting in an error. We now use slice() to match the remaining ports to the ARNs.
Published: 2/26/2020 | Release notes
- We now use the Ubuntu 18.04 base AMI for the test server
- Fixed several broken links
- Updates to CODEOWNERS
- Officially deprecated this repo
Published: 2/27/2020 | Modules affected: metrics/cloudwatch-custom-metrics-iam-policy, logs/cloudwatch-log-aggregation-iam-policy | Release notes
- Added a create_resourcesinput variable tocloudwatch-custom-metrics-iam-policyso you can turn the module on and off (this is a workaround for Terraform not supportingcountinmodule).
- The cloudwatch-custom-metrics-iam-policyandcloudwatch-log-aggregation-iam-policymodules now output the JSON for the policies they create. This allows you to setcreate_resources = falseto not create the standalone IAM policies and instead, add the JSON from those policies to an IAM entity of your choice (e.g., an IAM role).
Published: 2/23/2020 | Modules affected: logs/cloudwatch-log-aggregation-scripts | Release notes
- Fix bug in the run-cloudwatch-logs-agent.shwhere the first argument passed to--extra-log-fileswas being skipped.
Published: 2/21/2020 | Modules affected: logs/cloudwatch-log-aggregation-scripts | Release notes
- Correct the docs and usage instructions for the cloudwatch-log-aggregation-scriptsmodule to correctly indicate that--log-group-nameis required.
Published: 2/20/2020 | Modules affected: metrics/cloudwatch-memory-disk-metrics-scripts | Release notes
The cloudwatch-memory-disk-metrics module now creates and sets up a new OS user cwmonitoring to run the monitoring scripts as. Previously this was using the user who was calling gruntwork-install, which is typically the default user for the cloud (e.g ubuntu for ubuntu and ec2-user for Amazon Linux). You can control which user to use by setting the module parameter cron-user.
Published: 2/20/2020 | Modules affected: alarms | Release notes
- All the modules under alarmsnow expose acreate_resourcesparameter that you can set tofalseto disable the module so it creates no resources. This is a workaround for Terraform not supportingcountorfor_eachonmodule. Note that this change is backwards incompatible solely because theroute53-health-check-alarmsmodule already exposed an identicalenabledparameter, but for consistency with all our other modules and repos, we've renamed it tocreate_resources. If you were using thisenabledparameter on theroute53-health-check-alarmsmodule, please rename it tocreate_resourcesnow.
Published: 2/20/2020 | Modules affected: logs/cloudwatch-log-aggregation | Release notes
- The run-cloudwatch-logs-agent.shno longer takes in a--vpc-nameparameter, which was only used to set a log group name if--log-group-namewas not passed in. The--log-group-nameis now required, which is simpler and makes the intent clearer. If you wish to preserve backwards compatibility with the log group name you were using before, set--log-group-nameto${vpc_name}-ec2-syslog.
Published: 2/21/2020 | Modules affected: fail2ban | Release notes
This release fixes a regression in the fail2ban module that prevented it from starting up on Amazon Linux 2.
Published: 2/20/2020 | Modules affected: codegen/generator, iam-users, iam-groups, aws-config-multi-region | Release notes
This release introduces security baseline modules for AWS Landing Zone with examples of how to configure accounts including setting up AWS Config, AWS CloudTrail, Amazon Guard Duty, IAM users, IAM groups, IAM password policies, and more.
The following additional fixes are also included in this release:
- The codegen generator go library has been updated to use name_prefixinstead ofname.
- aws-config-multi-regionhas been updated to use- name_prefixinstead of- name.
Published: 2/16/2020 | Modules affected: guardduty, guardduty-multi-region | Release notes
Previously, CloudWatch did not have the necessary permissions to deliver notifications to SNS. This release sets permissions correctly, and also fixes the associated GuardDuty test.
Published: 2/3/2020 | Modules affected: kms-master-key | Release notes
- The kms-master-keymodule now exposes acustomer_master_key_specvariable that allows you to specify whether the key contains a symmetric key or an asymmetric key pair and the encryption algorithms or signing algorithms that the key supports. The module now also grantskms:GetPublicKeypermissions, which is why this release was marked as "backwards incompatible."
Published: 2/26/2020 | Modules affected: network-acl-outbound, network-acl-inbound | Release notes
This release adds the icmp_type and icmp_code variables to the network ACL modules, allowing you to specify ICMP rules.
Published: 2/26/2020 | Modules affected: vpc-mgmt, vpc-app, _docs, vpc-flow-logs | Release notes
- Use route table associations for VPC endpoints
Issue #49 reported a number of errors when reducing num_availability_zones. Using the latest version of Terraform I was only able to reproduce one of them related to the VPC endpoint.
Error updating VPC Endpoint: InvalidRouteTableId.NotFound
This update changes the endpoint route table associates to the aws_vpc_endpoint_route_table_association resource, which handles the removal correctly.
- Allow not to create any resource on vpc-flow-logs
Now it's possible to fully deactivate the vpc-flow-logs module passing the variable create_resources = false