1
+ import { UserData } from 'aws-cdk-lib/aws-ec2' ;
1
2
import type { RenderingCDKStackProps } from './renderingStack' ;
2
3
3
4
interface UserDataProps extends Pick < RenderingCDKStackProps , 'stage' > {
@@ -15,25 +16,23 @@ export const getUserData = ({
15
16
guStack,
16
17
stage,
17
18
artifactsBucket,
18
- } : UserDataProps ) : string => {
19
- const userData = [
19
+ } : UserDataProps ) : UserData => {
20
+ const userData = UserData . forLinux ( ) ;
21
+ // create groups, download artifact, unzip and set permissions
22
+ userData . addCommands (
20
23
`#!/bin/bash -ev` ,
21
-
22
24
`groupadd frontend` ,
23
25
`useradd -r -m -s /usr/bin/nologin -g frontend dotcom-rendering` ,
24
26
`cd /home/dotcom-rendering` ,
25
-
26
27
`aws --region eu-west-1 s3 cp s3://${ artifactsBucket } /frontend/${ stage } /${ guApp } /${ guApp } .tar.gz ./` ,
27
28
`tar -zxf ${ guApp } .tar.gz ${ guApp } ` ,
28
-
29
29
`chown -R dotcom-rendering:frontend ${ guApp } ` ,
30
-
31
30
`cd ${ guApp } ` ,
32
-
33
31
`mkdir /var/log/dotcom-rendering` ,
34
32
`chown -R dotcom-rendering:frontend /var/log/dotcom-rendering` ,
35
-
36
- // write out systemd file
33
+ ) ;
34
+ // write out systemd service file
35
+ userData . addCommands (
37
36
`cat > /etc/systemd/system/${ guApp } .service << EOF` ,
38
37
`[Unit]` ,
39
38
`Description=${ guApp } ` ,
@@ -55,10 +54,11 @@ export const getUserData = ({
55
54
`[Install]` ,
56
55
`WantedBy=multi-user.target` ,
57
56
`EOF` ,
58
-
57
+ ) ;
58
+ // enable and start the service
59
+ userData . addCommands (
59
60
`systemctl enable ${ guApp } ` , // enable the service
60
61
`systemctl start ${ guApp } ` , // start the service
61
- ] . join ( '\n' ) ;
62
-
62
+ ) ;
63
63
return userData ;
64
64
} ;
0 commit comments