Gruntwork release 2016-09
Guides / Update Guides / Releases / 2016-09
This page is lists all the updates to the Gruntwork Infrastructure as Code
Library that were released in 2016-09. For instructions
on how to use these updates in your code, check out the updating
documentation.
Here are the repos that were updated:
Published: 9/20/2016 | Release notes
  BACKWARDS INCOMPATIBLE CHANGES
- Boilerplate now supports types for variables. Each variable in the boilerplate.ymlfile can define atypefield set to string, int, float, bool, list, map, or enum (enum variables can also include a list ofoptions). This allows for some basic error checking of the variable values and, even more importantly, allows you to use the corresponding Go template syntax for those types. For example, if-statements work as you would expect with booleans (no more having to checkif eq .Foo "true"), you can loop over lists and maps using therangekeyword, and you can do basic arithmetic on ints and floats.
- The promptfield inboilerplate.ymlhas been renamed todescription.
Published: 9/16/2016 | Release notes
- boilerplatenow has a- --missing-config-actionflag that controls its behavior when run against a template folder that doesn't have a- boilerplate.ymlfile. The default behavior is now to exit with an error.
Published: 9/16/2016 | Release notes
- You can now use Go template syntax and boilerplate values in the names of files and folders.
Published: 9/16/2016 | Release notes
- Boilerplate now has a nicer, clearer UI when it prompts for variable values.
Published: 9/16/2016 | Release notes
- Templates can now use several arithmetic helpers: plus,minus,times,divide, andmod.
- There is also a new slice START END INCREMENThelper that returns an array fromSTARTtoEND, incrementing byINCREMENT. This is useful if you need to do a quick loop over a fixed set of numbers in your templates.
Published: 9/2/2016 | Release notes
- Add support for specifying a list of dependencies in boilerplate.yml. Each dependency is anotherboilerplatetemplate, which allows you to chain templates together so that you can create more complicated templates out of simpler pieces.
Published: 9/1/2016 | Release notes
  BREAKING CHANGE: We have updated this module to support Terraform 0.7 features. 
- In both modules/asg-rolling-deploy-dynamicandmodules/asg-rolling-deploy-static, the input variablesvpc_subnet_ids,load_balancers, andavailability_zonesare now lists.
Published: 9/12/2016 | Release notes
- BREAKING CHANGE: We switched the redis module's implementation from CloudFormation over to Terraform now that Terraform supports Redis replication groups. Note that if you update to this new version of the redis module, it will delete you original ElastiCache cluster and replace it with a new one. Therefore, it's essential that you have all your data backed up and can take a downtime before you do the upgrade.
- Fix bugs in the outputs of both the memcached and redis module. It turns out that the Terraform (and in many cases, CloudFormation)  outputs are either missing or broken (see https://github.com/hashicorp/terraform/issues/8794 and https://github.com/hashicorp/terraform/issues/8788). We've added hacky workarounds that should do the trick for now, but we will be watching the progress of those bugs closely in the hope of getting a more reliable solution.
Published: 9/9/2016 | Release notes
- Snapshots can now properly be disabled for the redis module by setting the snapshot_retention_limitparameter to 0.
- In the redis module, the parameter_group_namevariable is now optional.
Published: 9/9/2016 | Release notes
- The redis module now properly handles boolean values for the input variable enable_automatic_failover.
Published: 9/9/2016 | Release notes
- The redis module would error out if the input variable namecontained a hyphen or dash. This should now be fixed. Note, however, that Terraform 0.7.x had some bugs with CloudFormation (which we use under the hood to create the redis replication group) that have been fixed as of Terraform 0.7.3, so you must use Terraform 0.7.3 to use the redis module!
Published: 9/1/2016 | Release notes
  BREAKING CHANGE: We have updated this module to support Terraform 0.7 features. 
Changes in modules/redis:
- The input variables subnet_idsandallow_connections_from_cidr_blocksare now lists.
- The output variable read_endpointsis now a list.
Changes in modules/memcached:
- The input variables subnet_idsandallow_connections_from_cidr_blocksare now lists.
- The output variable cache_addressesis now a list.
Published: 9/14/2016 | Release notes
- The build-packer-artifactscript no longer checks for AWS environment variables. This check was unnecessary, since Packer does it itself. Moreover, the script is often used on an EC2 Instance where credentials are available via an IAM role rather than environment variables.
Published: 9/10/2016 | Release notes
- Added a new scheduled-lambda-jobmodule that can be used to run AWS Lambda on a periodic basis. This is useful for background jobs, such as taking snapshots of servers.
- BUGFIX: The configure-environment-for-gruntwork-modulenow properly overwrites previous installs of Terraform, Packer, and Glide and doesn't get stuck asking for a user prompt.
Published: 9/2/2016 | Release notes
- git-add-commit-pushnow uses- git status --porcelainto determine if there are changes to commit.
Published: 9/2/2016 | Release notes
- Fix a bug in the git-add-commit-pushwhere it would incorrectly identify unstaged changes.
Published: 9/1/2016 | Release notes
- Fix a bug in docs-generatorwhere it did not copy binary files, such as images, correctly
Published: 9/1/2016 | Release notes
  BREAKING CHANGE: We have updated this module to support Terraform 0.7 features. 
modules/aurora changes: 
- No longer takes an availability_zonesinput variable.
- Input variables subnet_idsandallow_connections_from_cidr_blocksare now both lists.
- Output variables instance_endpointsandinstance_idsare now both lists.
modules/rds changes:
- Input variables subnet_idsandallow_connections_from_cidr_blocksare now both lists.
- Output variables read_replica_endpointsandread_replica_idsare now both lists.
Published: 9/1/2016 | Release notes
  BREAKING CHANGE: We have updated this module to support Terraform 0.7 features. 
In modules/ecs-cluster:
- Input variable vpc_subnet_idsis now a list.
Published: 9/14/2016 | Release notes
- In the elasticsearch-alarms module, we've increased the default low_cpu_credit_balance_periodvalue to 15 minutes. That metric is reported only roughly once every 5 minutes, and with the original setting, if the metric took too long, the alarm would keep flipping between OK and INSUFFICIENT_DATA. This new value should fix that issue.
Published: 9/13/2016 | Release notes
  Two changes to the elasticsearch-alarms module:
- The account_idparam has been renamed toaws_account_id
- The default threshold for the low disk space alarm is now 1024 instead of 100
Published: 9/13/2016 | Release notes
- Add a new elasticsearch-alarms module that trigger alarms for an Elasticsearch cluster when CPU usage or heap usage gets too high, storage space gets too low, or the cluster goes into yellow or red status
Published: 9/12/2016 | Release notes
- Added two new modules that provide CloudWatch alarms for ElastiCache: elasticache-redis-alarms and elasticache-memcached-alarms
Published: 9/11/2016 | Release notes
- The rds-alarms module now accepts an is_auroraparameter. Set it to true if you're using the module with Aurora so that the module doesn't create unnecessary disk space alarms (since Aurora automatically expands available disk space)
Published: 9/11/2016 | Release notes
- BREAKING CHANGE: The input variables for therds-alarmsmodule have changed from a singlerds_instance_idto a list calledrds_instance_ids, plus a second variable callednum_rds_instance_idsthat specifies the length ofrds_instance_ids. This allows you to add alarms to an RDS instance and all of its replicas.
Published: 9/10/2016 | Release notes
- Fix a bug in the ec2-disk-alarms module where it wouldn't allow you to create multiple alarms for the same EC2 Instance. The module now gives a unique name to each alarm so that you can have an alarm for multiple volumes on the same instance.
Published: 9/10/2016 | Release notes
- The run-cloudwatch-logs-agent.shscript now supports a new parameter called--extra-log-file, which allows you to specify custom log files to send to CloudWatch (in addition to syslog, which is sent by default). For example, you can easily add the nginx error log by specifying--extra-log-file kern=/var/log/kern.log.
Published: 9/3/2016 | Release notes
- Add CloudWatch Logs support for CentOS 7
Published: 9/2/2016 | Release notes
- Fix how the ELB access logs module sets the S3 bucket policy so that you don't get a diff every time you run terraform plan
Published: 9/1/2016 | Release notes
  BREAKING CHANGE: We have updated this module to support Terraform 0.7 features. 
- All input variables named alarm_sns_topic_arnsandinstance_idsare now lists.
Published: 10/1/2016 | Release notes
- NEW MODULE: In this release, we introduce the cloudtrailmodule, a streamlined way to setup AWS CloudTrail!
Published: 9/29/2016 | Release notes
- BREAKING CHANGE: We updated the kms-master-keymodule with a few changes:
- Previously, terraform would unnecessarily update the Key Policy on every terraform apply. This didn't break anything, but it confusingly reported 1 resource as being modified when in fact nothing was changed. This has now been fixed using the new data.aws_iam_policy_document.
- The var key_root_user_iam_arnshas been replaced withvar.allow_manage_key_permissions_with_iam(accepts true/false) to better reflect the significance of setting this value. Note that the varaws_account_idis also now required.
- The vars key_administrator_iam_arnsandkey_user_iam_arnshave been renamed tocmk_administrator_iam_arnsandcmk_user_iam_arnsto more accurately reflect that these vars grant access to a Customer Master Key (CMK).
- There is a new required input variable called aws_account_id.
Published: 9/27/2016 | Release notes
- We've added a new module, iam-groupsthat configures a best-practices set of IAM Groups and corresponding IAM Policies (permissions) you can use to better manage the security of your AWS account.
Published: 9/12/2016 | Release notes
- On boot, ssh-iamnow waits 90 seconds before executing to try to give other services (e.g. the EC2 metadata service) a chance to start. This should hopefully ensure thatssh-iamdoesn't hit any errors when it configures SSH access on boot and you don't have to wait for the next cron job to run (by default, they run every 30m) before SSH access works.
Published: 9/2/2016 | Release notes
  BREAKING CHANGE: We have updated this module to support Terraform 0.7 features. 
- In modules/kms-master-key, the input variableskey_administrator_iam_arns,key_user_iam_arns, andkey_root_user_iam_arnsare now all lists.
Published: 9/1/2016 | Release notes
Published: 9/10/2016 | Release notes
- The single-server module now allows you to enable/disable CIDR-based SSH access by setting the input variable allow_ssh_from_cidrtotrueorfalse(for backwards compatibility, the default value istrue).
- The single-server module now allows you to enable/disable security group-based SSH access by setting the input variable allow_ssh_from_security_grouptotrueorfalse(for backwards compatibility, the default value isfalse) and settingallow_ssh_from_security_group_idto the ID of the security group.
Published: 9/2/2016 | Release notes
  BREAKING CHANGE: We have updated this module to support Terraform 0.7 features. 
- In modules/single-server, the input variableallow_ssh_from_cidr_listis now a list.
Published: 9/29/2016 | Release notes
- The vpc-app and vpc-mgmt modules now allow you to pass in the IDs of virtual gateways to propagate into route tables. This is useful for propagating VPN routes. Use private_propagating_vgwsandpersistence_propagating_vgwsin vpc-app andprivate_propagating_vgwsin vpc-mgmt.