Module: code-deploy
Terraform module to provision AWS Code Deploy app and group.
Usage
For a complete example, see examples/complete.
For automated tests of the complete example using bats and Terratest (which tests and deploys the example on AWS), see test.
module "example" {
source = "cloudposse/code-deploy/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"
}
Examples
Here is an example of using this module:
examples/complete
- complete example of using this module
Variables
Required Variables
Optional Variables
alarm_configuration
optionalConfiguration of deployment to stop when a CloudWatch alarm detects that a metric has fallen below or exceeded a defined threshold.
alarms:
A list of alarms configured for the deployment group.
ignore_poll_alarm_failure:
Indicates whether a deployment should continue if information about the current state of alarms cannot be retrieved from CloudWatch.Type:
object({
alarms = list(string)
ignore_poll_alarm_failure = bool
})Default value:
null
auto_rollback_configuration_events
(string
) optionalThe event type or types that trigger a rollback. Supported types are
DEPLOYMENT_FAILURE
andDEPLOYMENT_STOP_ON_ALARM
.Default value:
"DEPLOYMENT_FAILURE"
autoscaling_groups
(list(string)
) optionalA list of Autoscaling Groups associated with the deployment group.
Default value:
[ ]
blue_green_deployment_config
(any
) optionalConfiguration block of the blue/green deployment options for a deployment group,
see https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/codedeploy_deployment_group#blue_green_deployment_configDefault value:
null
compute_platform
(string
) optionalThe compute platform can either be
ECS
,Lambda
, orServer
Default value:
"ECS"
create_default_service_role
(bool
) optionalWhether to create default IAM role ARN that allows deployments.
Default value:
true
create_default_sns_topic
(bool
) optionalWhether to create default SNS topic through which notifications are sent.
Default value:
true
deployment_style
optionalConfiguration of the type of deployment, either in-place or blue/green,
you want to run and whether to route deployment traffic behind a load balancer.deployment_option:
Indicates whether to route deployment traffic behind a load balancer.
Possible values:WITH_TRAFFIC_CONTROL
,WITHOUT_TRAFFIC_CONTROL
.
deployment_type:
Indicates whether to run an in-place deployment or a blue/green deployment.
Possible values:IN_PLACE
,BLUE_GREEN
.Type:
object({
deployment_option = string
deployment_type = string
})Default value:
null
ec2_tag_filter
optionalThe Amazon EC2 tags on which to filter. The deployment group includes EC2 instances with any of the specified tags.
Cannot be used in the same call as ec2TagSet.Type:
set(object({
key = string
type = string
value = string
}))Default value:
[ ]
ec2_tag_set
optionalA list of sets of tag filters. If multiple tag groups are specified,
any instance that matches to at least one tag filter of every tag group is selected.key:
The key of the tag filter.
type:
The type of the tag filter, eitherKEY_ONLY
,VALUE_ONLY
, orKEY_AND_VALUE
.
value:
The value of the tag filter.Type:
set(object(
{
ec2_tag_filter = set(object(
{
key = string
type = string
value = string
}
))
}
))Default value:
[ ]
ecs_service
optionalConfiguration block(s) of the ECS services for a deployment group.
cluster_name:
The name of the ECS cluster.
service_name:
The name of the ECS service.Type:
list(object({
cluster_name = string
service_name = string
}))Default value:
null
load_balancer_info
(map(any)
) optionalSingle configuration block of the load balancer to use in a blue/green deployment,
see https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/codedeploy_deployment_group#load_balancer_infoDefault value:
null
minimum_healthy_hosts
optionaltype:
The type can either beFLEET_PERCENT
orHOST_COUNT
.
value:
The value when the type isFLEET_PERCENT
represents the minimum number of healthy instances
as a percentage of the total number of instances in the deployment.
When the type isHOST_COUNT
, the value represents the minimum number of healthy instances as an absolute value.Type:
object({
type = string
value = number
})Default value:
null
service_role_arn
(string
) optionalThe service IAM role ARN that allows deployments.
Default value:
null
sns_topic_arn
(string
) optionalThe ARN of the SNS topic through which notifications are sent.
Default value:
null
traffic_routing_config
optionaltype:
Type of traffic routing config. One ofTimeBasedCanary
,TimeBasedLinear
,AllAtOnce
.
interval:
The number of minutes between the first and second traffic shifts of a deployment.
percentage:
The percentage of traffic to shift in the first increment of a deployment.Type:
object({
type = string
interval = number
percentage = number
})Default value:
null
trigger_events
(list(string)
) optionalThe event type or types for which notifications are triggered.
Some values that are supported:
DeploymentStart
,DeploymentSuccess
,DeploymentFailure
,DeploymentStop
,
DeploymentRollback
,InstanceStart
,InstanceSuccess
,InstanceFailure
.
See the CodeDeploy documentation for all possible values.
http://docs.aws.amazon.com/codedeploy/latest/userguide/monitoring-sns-event-notifications-create-trigger.htmlDefault value:
[
"DeploymentFailure"
]
Context Variables
The following variables are defined in the context.tf
file of this module and part of the terraform-null-label pattern.
context.tf
file of this module and part of the terraform-null-label pattern.Outputs
deployment_config_id
The deployment config ID.
deployment_config_name
The deployment group's config name.
group_id
The application group ID.
id
The application ID.
name
The application's name.
Dependencies
Requirements
terraform
, version:>= 1.0
aws
, version:>= 2.0
local
, version:>= 1.2
Providers
aws
, version:>= 2.0
Modules
Name | Version | Source | Description |
---|---|---|---|
sns_topic | 0.21.0 | cloudposse/sns-topic/aws | n/a |
this | 0.25.0 | cloudposse/label/null | n/a |
Resources
The following resources are used by this module:
aws_codedeploy_app.default
(resource)aws_codedeploy_deployment_config.default
(resource)aws_codedeploy_deployment_group.default
(resource)aws_iam_role.default
(resource)aws_iam_role_policy_attachment.default
(resource)
Data Sources
The following data sources are used by this module:
aws_iam_policy_document.assume_role
(data source)aws_partition.current
(data source)