Skip to content

Commit 2942f59

Browse files
committed
task definition generate tf added
1 parent 9ed2524 commit 2942f59

File tree

4 files changed

+1950
-0
lines changed

4 files changed

+1950
-0
lines changed

aws/task-definition.json

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
{
2+
"containerDefinitions": [
3+
{
4+
"name": "laravel-app",
5+
"image": "401744924043.dkr.ecr.us-east-1.amazonaws.com/laravel-blog-app:latest",
6+
"cpu": 0,
7+
"portMappings": [
8+
{
9+
"containerPort": 80,
10+
"hostPort": 80,
11+
"protocol": "tcp"
12+
}
13+
],
14+
"essential": true,
15+
"environment": [
16+
{
17+
"name": "REDIS_HOST",
18+
"value": "master.laravel-blog-redis.jxxq2a.use1.cache.amazonaws.com"
19+
},
20+
{
21+
"name": "FILESYSTEM_DISK",
22+
"value": "s3"
23+
},
24+
{
25+
"name": "APP_ENV",
26+
"value": "production"
27+
},
28+
{
29+
"name": "DB_PORT",
30+
"value": "3306"
31+
},
32+
{
33+
"name": "AWS_DEFAULT_REGION",
34+
"value": "us-east-1"
35+
},
36+
{
37+
"name": "AWS_BUCKET",
38+
"value": "laravel-blog-app-storage-cc5fovq5"
39+
},
40+
{
41+
"name": "ELASTICSEARCH_USERNAME",
42+
"value": "admin"
43+
},
44+
{
45+
"name": "APP_KEY",
46+
"value": "base64:GDGVQ4JRzZLhrDILXUsvX/EGcy4gip8jdnP0fhrt/Js="
47+
},
48+
{
49+
"name": "DB_HOST",
50+
"value": "laravel-blog-db.cerysymw6zhx.us-east-1.rds.amazonaws.com"
51+
},
52+
{
53+
"name": "AWS_USE_PATH_STYLE_ENDPOINT",
54+
"value": "false"
55+
},
56+
{
57+
"name": "ELASTICSEARCH_PASSWORD",
58+
"value": "YourSecureOpenSearchPassword123!"
59+
},
60+
{
61+
"name": "ELASTICSEARCH_HOST",
62+
"value": "https://vpc-laravel-blog-opensearch-x7uhqkiyjq5ybtmhn2xtnlwusa.us-east-1.es.amazonaws.com"
63+
},
64+
{
65+
"name": "SESSION_DRIVER",
66+
"value": "redis"
67+
},
68+
{
69+
"name": "DB_USERNAME",
70+
"value": "laraveluser"
71+
},
72+
{
73+
"name": "REDIS_PORT",
74+
"value": "6379"
75+
},
76+
{
77+
"name": "QUEUE_CONNECTION",
78+
"value": "redis"
79+
},
80+
{
81+
"name": "DB_CONNECTION",
82+
"value": "mysql"
83+
},
84+
{
85+
"name": "LOG_CHANNEL",
86+
"value": "stderr"
87+
},
88+
{
89+
"name": "REDIS_PASSWORD",
90+
"value": ""
91+
},
92+
{
93+
"name": "CACHE_DRIVER",
94+
"value": "redis"
95+
},
96+
{
97+
"name": "APP_DEBUG",
98+
"value": "true"
99+
},
100+
{
101+
"name": "DB_DATABASE",
102+
"value": "laravel_blog"
103+
},
104+
{
105+
"name": "DB_PASSWORD",
106+
"value": "MySecurePassword12345"
107+
},
108+
{
109+
"name": "REDIS_SCHEME",
110+
"value": "tcp"
111+
}
112+
],
113+
"mountPoints": [],
114+
"volumesFrom": [],
115+
"logConfiguration": {
116+
"logDriver": "awslogs",
117+
"options": {
118+
"awslogs-group": "/ecs/laravel-blog",
119+
"awslogs-region": "us-east-1",
120+
"awslogs-stream-prefix": "ecs"
121+
}
122+
},
123+
"systemControls": []
124+
}
125+
],
126+
"family": "laravel-blog-app",
127+
"taskRoleArn": "arn:aws:iam::401744924043:role/laravel-blog-ecs-task-role",
128+
"executionRoleArn": "arn:aws:iam::401744924043:role/laravel-blog-ecs-task-execution-role",
129+
"networkMode": "awsvpc",
130+
"volumes": [],
131+
"requiresCompatibilities": [
132+
"FARGATE"
133+
],
134+
"cpu": "512",
135+
"memory": "1024"
136+
}

terraform/.terraform.lock.hcl

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

terraform/outputs.tf

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,143 @@ output "project_name" {
145145
output "aws_region" {
146146
description = "AWS region where resources are deployed"
147147
value = var.aws_region
148+
}
149+
150+
# Generate task definition JSON for GitHub Actions
151+
resource "local_file" "task_definition" {
152+
content = jsonencode({
153+
family = aws_ecs_task_definition.app.family
154+
networkMode = "awsvpc"
155+
requiresCompatibilities = ["FARGATE"]
156+
cpu = tostring(aws_ecs_task_definition.app.cpu)
157+
memory = tostring(aws_ecs_task_definition.app.memory)
158+
executionRoleArn = aws_ecs_task_definition.app.execution_role_arn
159+
taskRoleArn = aws_ecs_task_definition.app.task_role_arn
160+
containerDefinitions = [
161+
{
162+
name = "laravel-app"
163+
image = "${aws_ecr_repository.app.repository_url}:latest"
164+
165+
portMappings = [
166+
{
167+
containerPort = 80
168+
hostPort = 80
169+
protocol = "tcp"
170+
}
171+
]
172+
173+
environment = [
174+
{
175+
name = "APP_ENV"
176+
value = var.app_env
177+
},
178+
{
179+
name = "APP_DEBUG"
180+
value = var.app_debug
181+
},
182+
{
183+
name = "APP_KEY"
184+
value = var.app_key
185+
},
186+
{
187+
name = "DB_CONNECTION"
188+
value = "mysql"
189+
},
190+
{
191+
name = "DB_HOST"
192+
value = split(":", aws_db_instance.main.endpoint)[0]
193+
},
194+
{
195+
name = "DB_PORT"
196+
value = "3306"
197+
},
198+
{
199+
name = "DB_DATABASE"
200+
value = var.db_name
201+
},
202+
{
203+
name = "DB_USERNAME"
204+
value = var.db_username
205+
},
206+
{
207+
name = "DB_PASSWORD"
208+
value = var.db_password
209+
},
210+
{
211+
name = "REDIS_HOST"
212+
value = aws_elasticache_replication_group.main.primary_endpoint_address
213+
},
214+
{
215+
name = "REDIS_PORT"
216+
value = "6379"
217+
},
218+
{
219+
name = "REDIS_PASSWORD"
220+
value = ""
221+
},
222+
{
223+
name = "REDIS_SCHEME"
224+
value = "tcp"
225+
},
226+
{
227+
name = "ELASTICSEARCH_HOST"
228+
value = "https://${aws_opensearch_domain.main.endpoint}"
229+
},
230+
{
231+
name = "QUEUE_CONNECTION"
232+
value = "redis"
233+
},
234+
{
235+
name = "FILESYSTEM_DISK"
236+
value = "s3"
237+
},
238+
{
239+
name = "AWS_BUCKET"
240+
value = aws_s3_bucket.app_storage.bucket
241+
},
242+
{
243+
name = "AWS_DEFAULT_REGION"
244+
value = var.aws_region
245+
},
246+
{
247+
name = "AWS_USE_PATH_STYLE_ENDPOINT"
248+
value = "false"
249+
},
250+
{
251+
name = "CACHE_DRIVER"
252+
value = "redis"
253+
},
254+
{
255+
name = "SESSION_DRIVER"
256+
value = "redis"
257+
},
258+
{
259+
name = "LOG_CHANNEL"
260+
value = "stderr"
261+
},
262+
{
263+
name = "ELASTICSEARCH_USERNAME"
264+
value = var.opensearch_master_user
265+
},
266+
{
267+
name = "ELASTICSEARCH_PASSWORD"
268+
value = var.opensearch_master_password
269+
}
270+
]
271+
272+
logConfiguration = {
273+
logDriver = "awslogs"
274+
options = {
275+
"awslogs-group" = aws_cloudwatch_log_group.app.name
276+
"awslogs-region" = var.aws_region
277+
"awslogs-stream-prefix" = "ecs"
278+
}
279+
}
280+
281+
essential = true
282+
}
283+
]
284+
})
285+
286+
filename = "../aws/task-definition.json"
148287
}

0 commit comments

Comments
 (0)