You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Terraform module for deploying Atlantis to an AWS ECS cluster.
9
+

10
+
11
+
A Terraform module for deploying [Atlantis](https://runatlantis.io) to an AWS ECS cluster.
10
12
11
13
12
14
---
@@ -20,6 +22,8 @@ This project is part of our comprehensive ["SweetOps"](https://cpco.io/sweetops)
20
22
[<imgalign="right"title="Share on Twitter"src="https://docs.cloudposse.com/images/ionicons/social-twitter-outline-2.0.1-16x16-999999.svg" />][share_twitter]
21
23
22
24
25
+
[][terraform_modules]
26
+
23
27
24
28
25
29
It's 100% Open Source and licensed under the [APACHE2](LICENSE).
@@ -30,16 +34,109 @@ It's 100% Open Source and licensed under the [APACHE2](LICENSE).
30
34
31
35
32
36
37
+
We literally have [*hundreds of terraform modules*][terraform_modules] that are Open Source and well-maintained. Check them out!
38
+
39
+
40
+
41
+
42
+
43
+
## Screenshots
44
+
45
+
46
+

47
+
*Example of a Pull Request comment from running `terraform plan` using `atlantis`*
48
+
49
+
50
+
## Introduction
51
+
52
+
53
+
Atlantis enables GitOps workflows so that teams can collaborate on operations using Pull Requests.
54
+
55
+
Under the hood, it's a small self-hosted daemon (`#golang`) that listens for Pull Request webhook events from GitHub.
56
+
57
+
With Atlantis, engineers can run `terraform plan` and `terraform apply` using "chat ops" type comments on the Pull Request.
33
58
59
+
### Features
34
60
61
+
This module provisions the following resources:
35
62
63
+
- ECS Atlantis web application, which includes:
64
+
- ECR Docker registry
65
+
- ALB target group, listener rule and alarms
66
+
- ECS container definition (using a default backend)
67
+
- ECS task definition and IAM role
68
+
- ECS service and IAM role
69
+
- ECS task autoscaling
70
+
- ECS SNS based alarms
71
+
- ECS Codepipeline to build our Atlantis image on GitHub release
72
+
- ECS Codedeploy to deploy our ECS Atlantis web app
73
+
- SSH key pair for Atlantis to pull private Github repositories, which are written to SSM for reading with [chamber](https://github.com/segmentio/chamber)
74
+
- Route53 alias for Atlantis
75
+
- GitHub webhook to trigger Atlantis for a given repository
36
76
77
+
What this module does not provision:
78
+
79
+
- ECS Cluster (BYOC)
80
+
- ALB
81
+
- ACM certificate
82
+
- VPC
83
+
- Subnets
84
+
85
+
## Caveats
37
86
87
+
- This project assumes that the repo being deployed defines a `Dockerfile` which runs `atlantis`. It might not work with the official version of atlantis. We use [`geodesic`](https://github.com/cloudposse/geodesic) as our docker base image.
88
+
- This project defines parameters which are not available in the *official version* of `atlantis`. Our [fork](https://github.com/cloudposse/atlantis) implements the ability to restrict `plan` and `apply` to GitHub teams.
89
+
90
+
91
+
### GitHub Repo Scopes
92
+
93
+
We suggest creating a personal access token for a GitHub bot user with the following scopes:
| Name | Description | Type | Default | Required |
161
+
|------|-------------|:----:|:-----:|:-----:|
162
+
| alb_arn_suffix | The ARN suffix of the ALB | string | - | yes |
163
+
| alb_dns_name | DNS name of ALB | string | - | yes |
164
+
| alb_ingress_paths | Path pattern to match (a maximum of 1 can be defined), at least one of hosts or paths must be set | list |`<list>`| no |
165
+
| alb_listener_arns | A list of ALB listener ARNs | list | - | yes |
166
+
| alb_name | The Name of the ALB | string | - | yes |
167
+
| alb_target_group_alarms_alarm_actions | A list of ARNs (i.e. SNS Topic ARN) to execute when ALB Target Group alarms transition into an ALARM state from any other state. | list |`<list>`| no |
168
+
| alb_target_group_alarms_insufficient_data_actions | A list of ARNs (i.e. SNS Topic ARN) to execute when ALB Target Group alarms transition into an INSUFFICIENT_DATA state from any other state. | list |`<list>`| no |
169
+
| alb_target_group_alarms_ok_actions | A list of ARNs (i.e. SNS Topic ARN) to execute when ALB Target Group alarms transition into an OK state from any other state. | list |`<list>`| no |
170
+
| alb_zone_id | The ID of the zone in which ALB is provisioned | string | - | yes |
171
+
| atlantis_allow_repo_config | Allow Atlantis to use atlantis.yaml | string |`true`| no |
172
+
| atlantis_gh_team_whitelist | Atlantis GitHub team whitelist | string | `` | no |
| atlantis_port | Atlantis container port | string |`4141`| no |
177
+
| atlantis_repo_config | Path to atlantis config file | string |`atlantis.yaml`| no |
178
+
| atlantis_repo_whitelist | Whitelist of repositories Atlantis will accept webhooks from | list |`<list>`| no |
179
+
| atlantis_wake_word | Wake world for Atlantis | string |`atlantis`| no |
180
+
| atlantis_webhook_format | Template for the Atlantis webhook URL which is populated with the hostname | string |`https://%s/events`| no |
181
+
| attributes | Additional attributes (e.g. `1`) | list |`<list>`| no |
182
+
| autoscaling_max_capacity | Atlantis maximum tasks to run | string |`1`| no |
183
+
| autoscaling_min_capacity | Atlantis minimum tasks to run | string |`1`| no |
184
+
| branch | Atlantis branch of the GitHub repository, _e.g._`master`| string |`master`| no |
185
+
| build_timeout | How long in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait until timing out any related build that does not get marked as completed. | string |`5`| no |
186
+
| chamber_format | Format to store parameters in SSM, for consumption with chamber | string |`/%s/%s`| no |
187
+
| chamber_service | SSM parameter service name for use with chamber. This is used in chamber_format where /$chamber_service/$parameter would be the default. | string |`atlantis`| no |
188
+
| container_cpu | Atlantis CPUs per task | string |`256`| no |
189
+
| container_memory | Atlantis memory per task | string |`512`| no |
| atlantis_ssh_public_key | Atlantis SSH Public Key |
225
+
| badge_url | the url of the build badge when badge_enabled is enabled |
61
226
62
227
63
228
@@ -73,8 +238,8 @@ Are you using this project or any of our other projects? Consider [leaving a tes
73
238
74
239
Check out these related projects.
75
240
76
-
-[terraform-aws-ecs-webapp](https://github.com/cloudposse/terraform-aws-ecs-web-app) - Terraform module that implements a web app on ECS and supports autoscaling, CI/CD, monitoring, ALB integration, and much more
77
-
-[terraform-aws-ecs-web-app](https://github.com/cloudposse/terraform-aws-alb) - Terraform module to provision a standard ALB for HTTP/HTTP traffic
241
+
-[terraform-aws-ecs-web-app](https://github.com/cloudposse/terraform-aws-ecs-web-app) - Terraform module that implements a web app on ECS and supporting AWS resources
242
+
-[terraform-aws-alb](https://github.com/cloudposse/terraform-aws-alb) - Terraform module to provision a standard ALB for HTTP/HTTP traffic
78
243
-[terraform-aws-alb-ingress](https://github.com/cloudposse/terraform-aws-alb-ingress) - Terraform module to provision an HTTP style ingress rule based on hostname and path for an ALB
79
244
-[terraform-aws-codebuild](https://github.com/cloudposse/terraform-aws-codebuild) - Terraform Module to easily leverage AWS CodeBuild for Continuous Integration
80
245
-[terraform-aws-ecr](https://github.com/cloudposse/terraform-aws-ecr) - Terraform Module to manage Docker Container Registries on AWS ECR
@@ -85,6 +250,14 @@ Check out these related projects.
85
250
86
251
87
252
253
+
254
+
## References
255
+
256
+
For additional context, refer to some of these links.
257
+
258
+
-[atlantis](https://runatlantis.io) - Official home of the Atlantis project
259
+
260
+
88
261
## Help
89
262
90
263
**Got a question?**
@@ -111,6 +284,10 @@ We provide [*commercial support*][commercial_support] for all of our [Open Sourc
111
284
112
285
113
286
287
+
## Terraform Module Development
288
+
289
+
Are you interested in custom Terraform module development? Submit your inquiry using [our form][module_development] today and we'll get back to you ASAP.
0 commit comments