Skip to content

Commit 02a12cd

Browse files
author
rohit-ng
committed
fead: add module ecs-kong
1 parent 6726ec5 commit 02a12cd

File tree

5 files changed

+518
-25
lines changed

5 files changed

+518
-25
lines changed

README.md

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# Main
22

3-
asdfadsfas
4-
53
## Requirements
64

75
| Name | Version |
@@ -12,19 +10,31 @@ asdfadsfas
1210

1311
| Name | Version |
1412
|------|---------|
15-
| <a name="provider_aws"></a> [aws](#provider\_aws) | n/a |
13+
| <a name="provider_aws"></a> [aws](#provider\_aws) | 5.58.0 |
1614

1715
## Modules
1816

1917
| Name | Source | Version |
2018
|------|--------|---------|
21-
| <a name="module_kong-rds"></a> [kong-rds](#module\_kong-rds) | terraform-aws-modules/rds/aws | ~> 6.7.0 |
22-
| <a name="module_postgres-security-group"></a> [postgres-security-group](#module\_postgres-security-group) | terraform-aws-modules/security-group/aws | ~> 5.1.2 |
19+
| <a name="module_alb_security_group"></a> [alb\_security\_group](#module\_alb\_security\_group) | terraform-aws-modules/security-group/aws | ~> 5.1.2 |
20+
| <a name="module_ecs_kong"></a> [ecs\_kong](#module\_ecs\_kong) | ../terraform-aws-ecs-deployment | n/a |
21+
| <a name="module_ecs_node_security_group"></a> [ecs\_node\_security\_group](#module\_ecs\_node\_security\_group) | terraform-aws-modules/security-group/aws | ~> 5.1.2 |
22+
| <a name="module_ecs_task_security_group"></a> [ecs\_task\_security\_group](#module\_ecs\_task\_security\_group) | terraform-aws-modules/security-group/aws | ~> 5.1.2 |
23+
| <a name="module_kong_rds"></a> [kong\_rds](#module\_kong\_rds) | terraform-aws-modules/rds/aws | ~> 6.7.0 |
24+
| <a name="module_postgres_security_group"></a> [postgres\_security\_group](#module\_postgres\_security\_group) | terraform-aws-modules/security-group/aws | ~> 5.1.2 |
25+
| <a name="module_route53_record_kong_public_dns"></a> [route53\_record\_kong\_public\_dns](#module\_route53\_record\_kong\_public\_dns) | ./modules/route-53-record | n/a |
2326

2427
## Resources
2528

2629
| Name | Type |
2730
|------|------|
31+
| [aws_iam_role.ecs_exec_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
32+
| [aws_iam_role.ecs_node_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
33+
| [aws_iam_role.ecs_task_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
34+
| [aws_iam_role_policy_attachment.ecs_exec_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |
35+
| [aws_iam_policy_document.ecs_node_doc](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
36+
| [aws_iam_policy_document.ecs_task_doc](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
37+
| [aws_ssm_parameter.ecs_node_ami](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source |
2838
| [aws_vpc.vpc](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/vpc) | data source |
2939

3040
## Inputs
@@ -33,26 +43,49 @@ asdfadsfas
3343
|------|-------------|------|---------|:--------:|
3444
| <a name="input_backup_retention_period"></a> [backup\_retention\_period](#input\_backup\_retention\_period) | The number of days to retain backups | `number` | `1` | no |
3545
| <a name="input_backup_window"></a> [backup\_window](#input\_backup\_window) | The daily time range (in UTC) during which automated backups are created if they are enabled | `string` | `null` | no |
46+
| <a name="input_base_domain"></a> [base\_domain](#input\_base\_domain) | Base domain | `string` | n/a | yes |
3647
| <a name="input_cluster_name"></a> [cluster\_name](#input\_cluster\_name) | Name of the cluster | `string` | n/a | yes |
48+
| <a name="input_container_image"></a> [container\_image](#input\_container\_image) | Container image for kong | `string` | `"kong:3.7.1-ubuntu"` | no |
49+
| <a name="input_cpu_for_kong_task"></a> [cpu\_for\_kong\_task](#input\_cpu\_for\_kong\_task) | CPU required for kong task definiton | `number` | `256` | no |
3750
| <a name="input_create_db_subnet_group"></a> [create\_db\_subnet\_group](#input\_create\_db\_subnet\_group) | Whether to create a DB subnet group | `bool` | `true` | no |
3851
| <a name="input_db_allocated_storage"></a> [db\_allocated\_storage](#input\_db\_allocated\_storage) | The amount of allocated storage in GBs | `number` | `20` | no |
3952
| <a name="input_db_max_allocated_storage"></a> [db\_max\_allocated\_storage](#input\_db\_max\_allocated\_storage) | The maximum amount of allocated storage in GBs | `number` | `100` | no |
4053
| <a name="input_db_name"></a> [db\_name](#input\_db\_name) | Database name | `string` | `"kong"` | no |
4154
| <a name="input_db_password"></a> [db\_password](#input\_db\_password) | Username for database | `string` | `"defaultpassword"` | no |
4255
| <a name="input_db_username"></a> [db\_username](#input\_db\_username) | Username for database | `string` | `"kong"` | no |
4356
| <a name="input_deletion_protection"></a> [deletion\_protection](#input\_deletion\_protection) | Whether to enable deletion protection | `bool` | `false` | no |
57+
| <a name="input_desired_capacity"></a> [desired\_capacity](#input\_desired\_capacity) | Desired capacity of auto scaling group | `number` | `2` | no |
58+
| <a name="input_desired_count_for_kong_service"></a> [desired\_count\_for\_kong\_service](#input\_desired\_count\_for\_kong\_service) | Desired count for kong service | `number` | `1` | no |
59+
| <a name="input_ecs_node_security_group_id"></a> [ecs\_node\_security\_group\_id](#input\_ecs\_node\_security\_group\_id) | ECS node security group id | `string` | `null` | no |
60+
| <a name="input_ecs_task_security_group_id"></a> [ecs\_task\_security\_group\_id](#input\_ecs\_task\_security\_group\_id) | ECS task security group id | `string` | `null` | no |
61+
| <a name="input_endpoints"></a> [endpoints](#input\_endpoints) | List of endpoints that will expose the load balancer | `list(any)` | n/a | yes |
62+
| <a name="input_force_new_deployment"></a> [force\_new\_deployment](#input\_force\_new\_deployment) | Whether to force new deployment | `bool` | `true` | no |
63+
| <a name="input_instance_type_for_kong"></a> [instance\_type\_for\_kong](#input\_instance\_type\_for\_kong) | Instance type for kong | `string` | `"t2.micro"` | no |
64+
| <a name="input_key_name_for_kong"></a> [key\_name\_for\_kong](#input\_key\_name\_for\_kong) | Key name for to SSH into kong instance | `string` | `null` | no |
65+
| <a name="input_kong_admin_sub_domain_name"></a> [kong\_admin\_sub\_domain\_name](#input\_kong\_admin\_sub\_domain\_name) | Sub domain name for kong admin gui | `string` | `"admin"` | no |
66+
| <a name="input_kong_public_sub_domain_names"></a> [kong\_public\_sub\_domain\_names](#input\_kong\_public\_sub\_domain\_names) | List of kong public sub domain names | `list(any)` | n/a | yes |
67+
| <a name="input_log_configuration_for_kong"></a> [log\_configuration\_for\_kong](#input\_log\_configuration\_for\_kong) | Log configuration for kong | `any` | <pre>{<br> "logDriver": "awslogs",<br> "options": {<br> "awslogs-group": "/ecs/kong",<br> "awslogs-region": "ap-south-1",<br> "awslogs-stream-prefix": "app"<br> }<br>}</pre> | no |
4468
| <a name="input_maintenance_window"></a> [maintenance\_window](#input\_maintenance\_window) | The window to perform maintenance in.Syntax:ddd:hh24:mi-ddd:hh24:mi | `string` | `null` | no |
4569
| <a name="input_manage_master_user_password"></a> [manage\_master\_user\_password](#input\_manage\_master\_user\_password) | Whether to manage master user password | `bool` | `false` | no |
70+
| <a name="input_managed_scaling_status"></a> [managed\_scaling\_status](#input\_managed\_scaling\_status) | Mangaed scaling | `string` | `"ENABLED"` | no |
71+
| <a name="input_max_size"></a> [max\_size](#input\_max\_size) | Min size of auto scaling group | `number` | `2` | no |
72+
| <a name="input_maximum_scaling_step_size"></a> [maximum\_scaling\_step\_size](#input\_maximum\_scaling\_step\_size) | Maximum scaling step size | `number` | `2` | no |
73+
| <a name="input_memory_for_kong_task"></a> [memory\_for\_kong\_task](#input\_memory\_for\_kong\_task) | Memory required for kong task definiton | `number` | `256` | no |
74+
| <a name="input_min_size"></a> [min\_size](#input\_min\_size) | Min size of auto scaling group | `number` | `1` | no |
75+
| <a name="input_minimum_scaling_step_size"></a> [minimum\_scaling\_step\_size](#input\_minimum\_scaling\_step\_size) | Minimum scaling step size | `number` | `1` | no |
4676
| <a name="input_multi_az"></a> [multi\_az](#input\_multi\_az) | Specifies if the RDS instance is multi-AZ | `bool` | `false` | no |
4777
| <a name="input_performance_insights_enabled"></a> [performance\_insights\_enabled](#input\_performance\_insights\_enabled) | Whether to enable performance insights | `bool` | `true` | no |
4878
| <a name="input_performance_insights_retention_period"></a> [performance\_insights\_retention\_period](#input\_performance\_insights\_retention\_period) | The retention period for performance insights | `number` | `7` | no |
49-
| <a name="input_postgres_db_name"></a> [postgres\_db\_name](#input\_postgres\_db\_name) | Postgres database name | `string` | `"kong"` | no |
50-
| <a name="input_postgres_sg_tags"></a> [postgres\_sg\_tags](#input\_postgres\_sg\_tags) | List of tags | `map(string)` | `{}` | no |
5179
| <a name="input_private_subnet_ids"></a> [private\_subnet\_ids](#input\_private\_subnet\_ids) | List of private subnet id | `list(string)` | n/a | yes |
80+
| <a name="input_protect_from_scale_in"></a> [protect\_from\_scale\_in](#input\_protect\_from\_scale\_in) | Whether to protect from scale in | `bool` | `true` | no |
81+
| <a name="input_public_subnet_ids"></a> [public\_subnet\_ids](#input\_public\_subnet\_ids) | List of public subnet id | `list(string)` | n/a | yes |
5282
| <a name="input_rds_db_tags"></a> [rds\_db\_tags](#input\_rds\_db\_tags) | List of tags | `map(string)` | `{}` | no |
5383
| <a name="input_rds_instance_class"></a> [rds\_instance\_class](#input\_rds\_instance\_class) | The instance class to use | `string` | `"db.t3.micro"` | no |
5484
| <a name="input_region"></a> [region](#input\_region) | AWS region | `string` | n/a | yes |
55-
| <a name="input_skip_final_snapshot"></a> [skip\_final\_snapshot](#input\_skip\_final\_snapshot) | Whether to skip the final snapshot | `bool` | `true` | no |
85+
| <a name="input_ssl_policy"></a> [ssl\_policy](#input\_ssl\_policy) | (Optional) Name of the SSL Policy for the listener. | `string` | `"ELBSecurityPolicy-2016-08"` | no |
86+
| <a name="input_target_capacity"></a> [target\_capacity](#input\_target\_capacity) | Target Capacity for managed scaling | `number` | `100` | no |
87+
| <a name="input_use_default_ecs_node_security_group"></a> [use\_default\_ecs\_node\_security\_group](#input\_use\_default\_ecs\_node\_security\_group) | Whether to use default ECS node security group | `bool` | `true` | no |
88+
| <a name="input_use_default_ecs_task_security_group"></a> [use\_default\_ecs\_task\_security\_group](#input\_use\_default\_ecs\_task\_security\_group) | Whether to use default ECS task security group | `bool` | `true` | no |
5689
| <a name="input_vpc_id"></a> [vpc\_id](#input\_vpc\_id) | The ID of the VPC | `string` | n/a | yes |
5790

5891
## Outputs

iam.tf

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
2+
data "aws_iam_policy_document" "ecs_node_doc" {
3+
statement {
4+
actions = ["sts:AssumeRole"]
5+
effect = "Allow"
6+
7+
principals {
8+
type = "Service"
9+
identifiers = ["ec2.amazonaws.com"]
10+
}
11+
}
12+
}
13+
14+
resource "aws_iam_role" "ecs_node_role" {
15+
name_prefix = "ecs-node-role"
16+
assume_role_policy = data.aws_iam_policy_document.ecs_node_doc.json
17+
}
18+
19+
data "aws_iam_policy_document" "ecs_task_doc" {
20+
statement {
21+
actions = ["sts:AssumeRole"]
22+
effect = "Allow"
23+
24+
principals {
25+
type = "Service"
26+
identifiers = ["ecs-tasks.amazonaws.com"]
27+
}
28+
}
29+
}
30+
31+
resource "aws_iam_role" "ecs_task_role" {
32+
name_prefix = "ecs-task-role"
33+
assume_role_policy = data.aws_iam_policy_document.ecs_task_doc.json
34+
}
35+
36+
resource "aws_iam_role" "ecs_exec_role" {
37+
name_prefix = "demo-ecs-exec-role"
38+
assume_role_policy = data.aws_iam_policy_document.ecs_task_doc.json
39+
}
40+
41+
resource "aws_iam_role_policy_attachment" "ecs_exec_role" {
42+
role = aws_iam_role.ecs_exec_role.name
43+
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
44+
}

0 commit comments

Comments
 (0)