@fishawack/lab-env 4.20.0 → 4.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/commands/create/libs/aws-cloudfront-response.js +12 -0
- package/commands/create/services/aws/index.js +1 -1
- package/commands/create/templates/elasticbeanstalk/.ebextensions/apache/auto-ssl.config +24 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/drupal/post-deploy.config +14 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/drupal/pre-deploy.config +10 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/drupal/software.config +5 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/laravel/post-deploy.config +6 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/laravel/software.config +16 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/misc/alb-http-to-https-redirection.config +40 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/misc/enable-https.config +13 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/misc/setvars.config +6 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/nginx/auto-ssl.config +24 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/php/ini.config +10 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/wordpress/environment.config +3 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/wordpress/post-deploy.config +10 -0
- package/commands/create/templates/elasticbeanstalk/.ebextensions/wordpress/software.config +5 -0
- package/commands/create/templates/elasticbeanstalk/.platform/httpd/conf.d/elasticbeanstalk/443/ssl.conf +4 -0
- package/commands/create/templates/elasticbeanstalk/.platform/httpd/conf.d/elasticbeanstalk/443/www-to-nonwww-redirection.conf +3 -0
- package/commands/create/templates/elasticbeanstalk/.platform/httpd/conf.d/elasticbeanstalk/80/http-https-redirection.conf +3 -0
- package/commands/create/templates/elasticbeanstalk/.platform/httpd/conf.d/security_headers.conf +7 -0
- package/commands/create/templates/elasticbeanstalk/.platform/httpd/conf.d/virtualhost-443.conf +5 -0
- package/commands/create/templates/elasticbeanstalk/.platform/httpd/conf.d/virtualhost-80.conf +3 -0
- package/commands/create/templates/elasticbeanstalk/.platform/nginx/conf.d/buffer_size.conf +6 -0
- package/commands/create/templates/elasticbeanstalk/.platform/nginx/conf.d/elasticbeanstalk/http-https-redirection.conf +3 -0
- package/commands/create/templates/elasticbeanstalk/.platform/nginx/conf.d/elasticbeanstalk/laravel.conf +4 -0
- package/commands/create/templates/elasticbeanstalk/.platform/nginx/conf.d/elasticbeanstalk/www-to-nonwww-redirection.conf +7 -0
- package/commands/create/templates/elasticbeanstalk/.platform/nginx/conf.d/security_headers.conf +4 -0
- package/commands/create/templates/elasticbeanstalk/.platform/nginx/conf.d/ssl.conf +21 -0
- package/commands/create/templates/elasticbeanstalk/.platform/nginx/conf.d/upload_size.conf +1 -0
- package/commands/wp.js +2 -2
- package/globals.js +4 -1
- package/laravel/9/docker-compose.yml +13 -0
- package/package.json +1 -1
- package/wordpress/1/php/CHANGELOG.md +3 -0
- package/wordpress/1/php/Dockerfile +0 -5
- package/wordpress/1/php/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
## Changelog
|
|
2
2
|
|
|
3
|
+
### 4.22.0 (2023-08-09)
|
|
4
|
+
* [Feature] Added newly setup AWS accounts to the client prompts on @fishawack/core and @fishawack/lab-env have mismatching versions.
|
|
5
|
+
* [Feature] added drupal configs
|
|
6
|
+
* [Feature] laravel now ships with elasticsearch container
|
|
7
|
+
* [Feature] added security header template for nginx builds
|
|
8
|
+
* [Feature] added new cloudfront function template for response headers
|
|
9
|
+
* [Feature] use newer ciphers in nginx conf
|
|
10
|
+
* [Feature] added nginx and laravel aws configs
|
|
11
|
+
* [Bug] added apache security_headers conf
|
|
12
|
+
|
|
13
|
+
### 4.21.0 (2023-05-22)
|
|
14
|
+
* [Feature] added elastic beanstalk config stubs
|
|
15
|
+
* [Change] wp command now prepends vendor path in wordpress@1 and no longer passes path as its found in wp-cli yml
|
|
16
|
+
* [Change] Bumped fishawack/lab-env-wordpress-1-php to 1.1.0
|
|
17
|
+
|
|
3
18
|
### 4.20.0 (2023-05-19)
|
|
4
19
|
* [Feature] added new clients
|
|
5
20
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function handler(event) {
|
|
2
|
+
// Add security headers
|
|
3
|
+
var response = event.response;
|
|
4
|
+
var headers = response.headers;
|
|
5
|
+
|
|
6
|
+
headers['strict-transport-security'] = { value: 'max-age=31536000; includeSubDomains'};
|
|
7
|
+
headers['content-security-policy'] = { value: "default-src 'self' https: data: 'unsafe-inline';"};
|
|
8
|
+
headers['x-content-type-options'] = { value: 'nosniff'};
|
|
9
|
+
headers['x-frame-options'] = {value: 'sameorigin'};
|
|
10
|
+
|
|
11
|
+
return response;
|
|
12
|
+
}
|
|
@@ -6,7 +6,7 @@ module.exports.iam = require("./iam.js");
|
|
|
6
6
|
|
|
7
7
|
module.exports.slug = (repo, client, branch) => s3Safe(`${branch}-${repo}-${client}`);
|
|
8
8
|
|
|
9
|
-
module.exports.clients = ['fishawack', 'abbvie', 'sanofigenzyme', 'gsk', 'janssen', 'astrazeneca', 'ptc', 'jazz', 'pfizer', 'heron', 'novartis', 'training', 'merck', 'acadia', 'travere', 'roche', 'utc', 'bayer', 'alcon', 'uhc', 'chiesi', '3m', 'sarepta', 'ipsen', 'novocure', 'anthem', 'kyowakirin', 'optum', 'rally', 'menarini', 'childrensminnesota'];
|
|
9
|
+
module.exports.clients = ['fishawack', 'abbvie', 'sanofigenzyme', 'gsk', 'janssen', 'astrazeneca', 'ptc', 'jazz', 'pfizer', 'heron', 'novartis', 'training', 'merck', 'acadia', 'travere', 'roche', 'utc', 'bayer', 'alcon', 'uhc', 'chiesi', '3m', 'sarepta', 'ipsen', 'novocure', 'anthem', 'kyowakirin', 'optum', 'rally', 'menarini', 'childrensminnesota', 'gore'];
|
|
10
10
|
|
|
11
11
|
module.exports.static = async (name, account, tags = [], credentials = []) => {
|
|
12
12
|
let s3 = await module.exports.s3.createS3Bucket(name, account, tags);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
files:
|
|
2
|
+
/etc/cron.d/certbot_renew:
|
|
3
|
+
content: "@weekly root certbot renew\n"
|
|
4
|
+
group: root
|
|
5
|
+
mode: "000644"
|
|
6
|
+
owner: root
|
|
7
|
+
|
|
8
|
+
container_commands:
|
|
9
|
+
10_downloadepel:
|
|
10
|
+
command: "wget -r --no-parent -A 'epel-release-*.rpm' https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/"
|
|
11
|
+
20_installepel:
|
|
12
|
+
command: "rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm --force"
|
|
13
|
+
30_enableepl:
|
|
14
|
+
command: "yum-config-manager --enable epel*"
|
|
15
|
+
40_installcertbot:
|
|
16
|
+
command: "yum install -y certbot"
|
|
17
|
+
50_getcert:
|
|
18
|
+
command: "certbot certonly --debug --non-interactive --email ${EMAIL_LINK} --agree-tos --standalone --expand --domains ${DOMAIN_LINK} --keep-until-expiring --pre-hook \"service httpd stop\""
|
|
19
|
+
60_link:
|
|
20
|
+
command: "ln -sf /etc/letsencrypt/live/$(echo ${DOMAIN_LINK} | cut -d, -f1) /etc/letsencrypt/live/ebcert"
|
|
21
|
+
70_startserver:
|
|
22
|
+
command: "service httpd start"
|
|
23
|
+
80_cleanup:
|
|
24
|
+
command: "rm -rf dl.fedoraproject.org"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
container_commands:
|
|
2
|
+
01-db-import:
|
|
3
|
+
command: "if [ -f auto-ci-db.sql ]; then vendor/bin/drush sql:drop -y; vendor/bin/drush sql:cli < auto-ci-db.sql; rm -rf auto-ci-db.sql; fi"
|
|
4
|
+
leader_only: true
|
|
5
|
+
02-db-remove:
|
|
6
|
+
command: "rm -rf auto-ci-db.sql"
|
|
7
|
+
03-run-configs:
|
|
8
|
+
command: "for d in ./web/sites/*/ ; do vendor/bin/drush -l $(basename $d) config:import -y; vendor/bin/drush -l $(basename $d) cr; done"
|
|
9
|
+
04-run-sitemaps:
|
|
10
|
+
command: "for d in ./web/sites/*/ ; do vendor/bin/drush -l $(basename $d) simple-sitemap:generate -y; vendor/bin/drush -l $(basename $d) cr; done"
|
|
11
|
+
05-maintenance-off:
|
|
12
|
+
command: "vendor/bin/drush state:set system.maintenance_mode 0 --input-format=integer || true"
|
|
13
|
+
06-clear-cache:
|
|
14
|
+
command: vendor/bin/drush cr || true
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
commands:
|
|
2
|
+
01-setvars:
|
|
3
|
+
command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local
|
|
4
|
+
02-maintenance-on:
|
|
5
|
+
command: vendor/bin/drush state:set system.maintenance_mode 1 --input-format=integer 2>/dev/null || true
|
|
6
|
+
03-clear-cache:
|
|
7
|
+
command: vendor/bin/drush cr 2>/dev/null || true
|
|
8
|
+
packages:
|
|
9
|
+
yum:
|
|
10
|
+
jq: []
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
option_settings:
|
|
2
|
+
aws:elasticbeanstalk:container:php:phpini:
|
|
3
|
+
document_root: /public
|
|
4
|
+
aws:elasticbeanstalk:environment:proxy:
|
|
5
|
+
ProxyServer: nginx
|
|
6
|
+
|
|
7
|
+
files:
|
|
8
|
+
"/etc/php.d/custom.ini":
|
|
9
|
+
mode: "000755"
|
|
10
|
+
owner: root
|
|
11
|
+
group: root
|
|
12
|
+
content: |
|
|
13
|
+
memory_limit = 500M
|
|
14
|
+
upload_max_filesize = 500M
|
|
15
|
+
post_max_size = 500M
|
|
16
|
+
max_execution_time = 600
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
###################################################################################################
|
|
2
|
+
#### Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
####
|
|
4
|
+
#### Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
|
|
5
|
+
#### except in compliance with the License. A copy of the License is located at
|
|
6
|
+
####
|
|
7
|
+
#### http://aws.amazon.com/apache2.0/
|
|
8
|
+
####
|
|
9
|
+
#### or in the "license" file accompanying this file. This file is distributed on an "AS IS"
|
|
10
|
+
#### BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
11
|
+
#### License for the specific language governing permissions and limitations under the License.
|
|
12
|
+
###################################################################################################
|
|
13
|
+
|
|
14
|
+
###################################################################################################
|
|
15
|
+
#### This configuration file modifies the default port 80 listener attached to an Application Load Balancer
|
|
16
|
+
#### to automatically redirect incoming connections on HTTP to HTTPS.
|
|
17
|
+
#### This will not work with an environment using the load balancer type Classic or Network.
|
|
18
|
+
#### A prerequisite is that the 443 listener has already been created.
|
|
19
|
+
#### Please use the below link for more information about creating an Application Load Balancer on
|
|
20
|
+
#### the Elastic Beanstalk console.
|
|
21
|
+
#### https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-alb.html#environments-cfg-alb-console
|
|
22
|
+
###################################################################################################
|
|
23
|
+
|
|
24
|
+
Resources:
|
|
25
|
+
AWSEBV2LoadBalancerListener:
|
|
26
|
+
Type: AWS::ElasticLoadBalancingV2::Listener
|
|
27
|
+
Properties:
|
|
28
|
+
LoadBalancerArn:
|
|
29
|
+
Ref: AWSEBV2LoadBalancer
|
|
30
|
+
Port: 80
|
|
31
|
+
Protocol: HTTP
|
|
32
|
+
DefaultActions:
|
|
33
|
+
- Type: redirect
|
|
34
|
+
RedirectConfig:
|
|
35
|
+
Host: "#{host}"
|
|
36
|
+
Path: "/#{path}"
|
|
37
|
+
Port: "443"
|
|
38
|
+
Protocol: "HTTPS"
|
|
39
|
+
Query: "#{query}"
|
|
40
|
+
StatusCode: "HTTP_301"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
files:
|
|
2
|
+
/etc/cron.d/certbot_renew:
|
|
3
|
+
content: "@weekly root certbot renew\n"
|
|
4
|
+
group: root
|
|
5
|
+
mode: "000644"
|
|
6
|
+
owner: root
|
|
7
|
+
|
|
8
|
+
container_commands:
|
|
9
|
+
10_downloadepel:
|
|
10
|
+
command: "wget -r --no-parent -A 'epel-release-*.rpm' https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/"
|
|
11
|
+
20_installepel:
|
|
12
|
+
command: "rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm --force"
|
|
13
|
+
30_enableepl:
|
|
14
|
+
command: "yum-config-manager --enable epel*"
|
|
15
|
+
40_installcertbot:
|
|
16
|
+
command: "yum install -y certbot"
|
|
17
|
+
50_getcert:
|
|
18
|
+
command: "certbot certonly --debug --non-interactive --email ${EMAIL_LINK} --agree-tos --standalone --expand --domains ${DOMAIN_LINK} --keep-until-expiring --pre-hook \"service nginx stop\""
|
|
19
|
+
60_link:
|
|
20
|
+
command: "ln -sf /etc/letsencrypt/live/$(echo ${DOMAIN_LINK} | cut -d, -f1) /etc/letsencrypt/live/ebcert"
|
|
21
|
+
70_startserver:
|
|
22
|
+
command: "service nginx start"
|
|
23
|
+
80_cleanup:
|
|
24
|
+
command: "rm -rf dl.fedoraproject.org"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
container_commands:
|
|
2
|
+
10-db-import:
|
|
3
|
+
command: if [ -f auto-ci-db.sql ]; then vendor/bin/wp db reset --yes; vendor/bin/wp db import auto-ci-db.sql; fi
|
|
4
|
+
leader_only: true
|
|
5
|
+
20-db-remove:
|
|
6
|
+
command: "rm -rf auto-ci-db.sql"
|
|
7
|
+
30-rewrite-flush:
|
|
8
|
+
command: "vendor/bin/wp rewrite flush --hard"
|
|
9
|
+
40-rewrite-flush:
|
|
10
|
+
command: "vendor/bin/wp cli cache clear"
|
package/commands/create/templates/elasticbeanstalk/.platform/httpd/conf.d/security_headers.conf
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Header set X-Content-Type-Options "nosniff"
|
|
2
|
+
Header set Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline';"
|
|
3
|
+
Header set X-Frame-Options 'sameorigin'
|
|
4
|
+
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
|
|
5
|
+
|
|
6
|
+
ServerSignature Off
|
|
7
|
+
ServerTokens Prod
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
server {
|
|
2
|
+
listen 443 default_server ssl;
|
|
3
|
+
access_log /var/log/nginx/access.log main;
|
|
4
|
+
|
|
5
|
+
client_header_timeout 60;
|
|
6
|
+
client_body_timeout 60;
|
|
7
|
+
keepalive_timeout 60;
|
|
8
|
+
gzip off;
|
|
9
|
+
gzip_comp_level 4;
|
|
10
|
+
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
|
11
|
+
|
|
12
|
+
# Include the Elastic Beanstalk generated locations
|
|
13
|
+
include conf.d/elasticbeanstalk/*.conf;
|
|
14
|
+
|
|
15
|
+
ssl_certificate /etc/letsencrypt/live/ebcert/fullchain.pem;
|
|
16
|
+
ssl_certificate_key /etc/letsencrypt/live/ebcert/privkey.pem;
|
|
17
|
+
ssl_session_timeout 5m;
|
|
18
|
+
ssl_protocols TLSv1.2 TLSv1.3;
|
|
19
|
+
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
|
|
20
|
+
ssl_prefer_server_ciphers off;
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
client_max_body_size 500M;
|
package/commands/wp.js
CHANGED
|
@@ -12,9 +12,9 @@ module.exports = [
|
|
|
12
12
|
});
|
|
13
13
|
},
|
|
14
14
|
argv => _.up(() => {
|
|
15
|
-
const path = process.env.VERSION_WORDPRESS !== "0" ? '--path=./wordpress' : '';
|
|
16
15
|
const container = process.env.VERSION_WORDPRESS !== "0" ? 'php' : 'wordpress';
|
|
16
|
+
const path = process.env.VERSION_WORDPRESS !== "0" ? 'vendor/bin/' : '';
|
|
17
17
|
|
|
18
|
-
_.command(container,
|
|
18
|
+
_.command(container, `${path}wp ${argv.command.join(' ')} --allow-root`);
|
|
19
19
|
})
|
|
20
20
|
];
|
package/globals.js
CHANGED
|
@@ -231,7 +231,8 @@ if(platform === "wordpress" && process.env.VERSION_WORDPRESS !== "0"){
|
|
|
231
231
|
|
|
232
232
|
if(platform === "laravel"){
|
|
233
233
|
volumes.push(
|
|
234
|
-
'redis'
|
|
234
|
+
'redis',
|
|
235
|
+
'elasticsearch'
|
|
235
236
|
);
|
|
236
237
|
}
|
|
237
238
|
|
|
@@ -265,6 +266,7 @@ module.exports = {
|
|
|
265
266
|
if(platform === "laravel" || platform === "wordpress" || platform === "drupal" || platform === "craftcms"){
|
|
266
267
|
process.env.PORT_WEB = await getPort({port: getPort.makeRange(8000, 8100)});
|
|
267
268
|
process.env.PORT_DB = await getPort({port: getPort.makeRange(3306, 3406)});
|
|
269
|
+
process.env.PORT_ES = await getPort({port: getPort.makeRange(9200, 9300)});
|
|
268
270
|
}
|
|
269
271
|
}
|
|
270
272
|
},
|
|
@@ -274,6 +276,7 @@ module.exports = {
|
|
|
274
276
|
|
|
275
277
|
if(+process.env.PORT_WEB) ports.web = {port: +process.env.PORT_WEB};
|
|
276
278
|
if(+process.env.PORT_DB) ports.db = {port: +process.env.PORT_DB};
|
|
279
|
+
if(+process.env.PORT_ES) ports.es = {port: +process.env.PORT_ES};
|
|
277
280
|
|
|
278
281
|
console.table(ports);
|
|
279
282
|
}
|
|
@@ -45,6 +45,17 @@ services:
|
|
|
45
45
|
- default
|
|
46
46
|
volumes:
|
|
47
47
|
- redis:/data
|
|
48
|
+
elasticsearch:
|
|
49
|
+
image: elasticsearch:8.8.1
|
|
50
|
+
environment:
|
|
51
|
+
- discovery.type=single-node
|
|
52
|
+
- xpack.security.enabled=false
|
|
53
|
+
networks:
|
|
54
|
+
- default
|
|
55
|
+
ports:
|
|
56
|
+
- "${PORT_ES:-9200}:9200"
|
|
57
|
+
volumes:
|
|
58
|
+
- elasticsearch:/usr/share/elasticsearch/data
|
|
48
59
|
networks:
|
|
49
60
|
default:
|
|
50
61
|
driver: "bridge"
|
|
@@ -55,3 +66,5 @@ volumes:
|
|
|
55
66
|
driver: "local"
|
|
56
67
|
redis:
|
|
57
68
|
driver: "local"
|
|
69
|
+
elasticsearch:
|
|
70
|
+
driver: "local"
|
package/package.json
CHANGED
|
@@ -18,11 +18,6 @@ COPY ./policy.xml /etc/ImageMagick-6/policy.xml
|
|
|
18
18
|
# Add php user
|
|
19
19
|
RUN useradd -m -G www-data -s /bin/bash php
|
|
20
20
|
|
|
21
|
-
# Install wordpress cli
|
|
22
|
-
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
|
|
23
|
-
chmod +x wp-cli.phar && \
|
|
24
|
-
mv wp-cli.phar /usr/local/bin/wp
|
|
25
|
-
|
|
26
21
|
# Cleanup apt-get install folders
|
|
27
22
|
RUN apt-get clean && \
|
|
28
23
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|