@@ -13,7 +13,12 @@ import type { GuAsgCapacity } from '@guardian/cdk/lib/types';
13
13
import type { App } from 'aws-cdk-lib' ;
14
14
import { Duration } from 'aws-cdk-lib' ;
15
15
import { CfnDashboard } from 'aws-cdk-lib/aws-cloudwatch' ;
16
- import { InstanceClass , InstanceSize , InstanceType } from 'aws-cdk-lib/aws-ec2' ;
16
+ import {
17
+ InstanceClass ,
18
+ InstanceSize ,
19
+ InstanceType ,
20
+ UserData ,
21
+ } from 'aws-cdk-lib/aws-ec2' ;
17
22
import { Protocol } from 'aws-cdk-lib/aws-elasticloadbalancingv2' ;
18
23
import { LogGroup , RetentionDays } from 'aws-cdk-lib/aws-logs' ;
19
24
import { CfnRecordSet } from 'aws-cdk-lib/aws-route53' ;
@@ -45,38 +50,42 @@ export class ManageFrontend extends GuStack {
45
50
default : `/${ this . stage } /${ this . stack } /${ app } /serverRavenDSN` ,
46
51
} ) ;
47
52
48
- // intentionally removed tabs from the following string for bash's sake!
49
- const userData = `#!/bin/bash -ev
50
- # get runnable tar from S3
51
- aws --region ${ this . region } s3 cp s3://membership-dist/${ this . stack } /${ this . stage } /${ app } /manage-frontend.zip /tmp
52
- mkdir /etc/gu
53
- unzip /tmp/manage-frontend.zip -d /etc/gu/dist/
54
- # add user
55
- groupadd manage-frontend
56
- useradd -r -s /usr/bin/nologin -g manage-frontend manage-frontend
57
- touch /var/log/manage-frontend.log
58
- chown -R manage-frontend:manage-frontend /etc/gu
59
- chown manage-frontend:manage-frontend /var/log/manage-frontend.log
60
- # write out systemd file
61
- cat >/etc/systemd/system/manage-frontend.service <<EOL
62
- [Service]
63
- ExecStart=/usr/bin/node /etc/gu/dist/server.js
64
- Restart=always
65
- StandardOutput=syslog
66
- StandardError=syslog
67
- SyslogIdentifier=manage-frontend
68
- User=manage-frontend
69
- Group=manage-frontend
70
- Environment=STAGE=${ this . stage }
71
- Environment=CLIENT_DSN=${ clientRavenDSN . valueAsString }
72
- Environment=SERVER_DSN=${ serverRavenDSN . valueAsString }
73
- [Install]
74
- WantedBy=multi-user.target
75
- EOL
76
- # RUN
77
- systemctl enable manage-frontend
78
- systemctl start manage-frontend
79
- /opt/cloudwatch-logs/configure-logs application ${ this . stack } ${ this . stage } ${ app } /var/log/manage-frontend.log` ;
53
+ const userData = UserData . forLinux ( ) ;
54
+ userData . addCommands (
55
+ [
56
+ `#!/bin/bash -ev` ,
57
+ `# get runnable tar from S3` ,
58
+ `aws --region ${ this . region } s3 cp s3://membership-dist/${ this . stack } /${ this . stage } /${ app } /manage-frontend.zip /tmp` ,
59
+ `mkdir /etc/gu` ,
60
+ `unzip /tmp/manage-frontend.zip -d /etc/gu/dist/` ,
61
+ `# add user` ,
62
+ `groupadd manage-frontend` ,
63
+ `useradd -r -s /usr/bin/nologin -g manage-frontend manage-frontend` ,
64
+ `touch /var/log/manage-frontend.log` ,
65
+ `chown -R manage-frontend:manage-frontend /etc/gu` ,
66
+ `chown manage-frontend:manage-frontend /var/log/manage-frontend.log` ,
67
+ `# write out systemd file` ,
68
+ `cat >/etc/systemd/system/manage-frontend.service <<EOL` ,
69
+ `[Service]` ,
70
+ `ExecStart=/usr/bin/node /etc/gu/dist/server.js` ,
71
+ `Restart=always` ,
72
+ `StandardOutput=syslog` ,
73
+ `StandardError=syslog` ,
74
+ `SyslogIdentifier=manage-frontend` ,
75
+ `User=manage-frontend` ,
76
+ `Group=manage-frontend` ,
77
+ `Environment=STAGE=${ this . stage } ` ,
78
+ `Environment=CLIENT_DSN=${ clientRavenDSN . valueAsString } ` ,
79
+ `Environment=SERVER_DSN=${ serverRavenDSN . valueAsString } ` ,
80
+ `[Install]` ,
81
+ `WantedBy=multi-user.target` ,
82
+ `EOL` ,
83
+ `# RUN` ,
84
+ `systemctl enable manage-frontend` ,
85
+ `systemctl start manage-frontend` ,
86
+ `/opt/cloudwatch-logs/configure-logs application ${ this . stack } ${ this . stage } ${ app } /var/log/manage-frontend.log` ,
87
+ ] . join ( '\n' ) ,
88
+ ) ;
80
89
81
90
const logGroup = new LogGroup ( this , 'ManageFrontendLogGroup' , {
82
91
logGroupName : `support-manage-frontend-${ this . stage } ` ,
0 commit comments