@docupace/pipeline 1.0.13 → 1.0.16
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/package.json +1 -1
- package/src/auth0/cli.js +3 -3
- package/src/auth0/configure.js +58 -13
- package/src/next/apache.js +8 -4
- package/src/next/cli.js +3 -7
- package/src/next/connect.js +17 -8
- package/src/next/vault.js +34 -30
- package/terraform/validate.sh +1 -1
package/package.json
CHANGED
package/src/auth0/cli.js
CHANGED
|
@@ -18,10 +18,10 @@ dotenv.config({ path: ['.env.pipeline.local', 'config/.env.pipeline.local'] });
|
|
|
18
18
|
const program = new Command();
|
|
19
19
|
|
|
20
20
|
program
|
|
21
|
-
.command('configureFromSite <fromSite> <toSite> <
|
|
21
|
+
.command('configureFromSite <fromSite> <toSite> <fromEnv> <toEnv> <deployUI> <deployGraphQLServer> <useNewDomain>')
|
|
22
22
|
.description('Configure the Auth0 tenants in env for the given site')
|
|
23
|
-
.action(async (fromSite, toSite,
|
|
24
|
-
await configureFromSite(fromSite, toSite,
|
|
23
|
+
.action(async (fromSite, toSite, fromEnv,toEnv, deployUI, deployGraphQLServer, useNewDomain) => {
|
|
24
|
+
await configureFromSite(fromSite, toSite, fromEnv, toEnv, deployUI, deployGraphQLServer, useNewDomain);
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
program
|
package/src/auth0/configure.js
CHANGED
|
@@ -167,6 +167,11 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
|
|
|
167
167
|
|
|
168
168
|
graphqlAllowedCallbacksUrls = [`${siteUrl}/api/graphql/callback`];
|
|
169
169
|
graphqlAllowedLogoutUrls = [`${siteUrl}/api/graphql/`];
|
|
170
|
+
|
|
171
|
+
connectAllowedCallbacksUrls = [`${siteUrl}/connect/samlCallback?client_name=auth0`];
|
|
172
|
+
connectlAllowedLogoutUrls = [ `${siteUrl}/connect`];
|
|
173
|
+
|
|
174
|
+
|
|
170
175
|
} else {
|
|
171
176
|
uiAllowedCallbacksUrls = [
|
|
172
177
|
`${siteUrl}/api/auth/callback`,
|
|
@@ -185,6 +190,16 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
|
|
|
185
190
|
`http://localhost:4000/api/graphql/`,
|
|
186
191
|
`${siteUrl}/api/graphql/`,
|
|
187
192
|
];
|
|
193
|
+
|
|
194
|
+
connectAllowedCallbacksUrls = [
|
|
195
|
+
`${siteUrl}/connect/samlCallback?client_name=auth0`,
|
|
196
|
+
`http://localhost:9000/connect/samlCallback?client_name=auth0`,
|
|
197
|
+
];
|
|
198
|
+
connectlAllowedLogoutUrls = [
|
|
199
|
+
`${siteUrl}/connect`
|
|
200
|
+
];
|
|
201
|
+
|
|
202
|
+
|
|
188
203
|
}
|
|
189
204
|
|
|
190
205
|
const configureUI = deployUI === 'true';
|
|
@@ -196,6 +211,16 @@ async function templateAuth0(siteUrl, coreApiContext, env, filePaths, deployUI,
|
|
|
196
211
|
callbacks: uiAllowedCallbacksUrls,
|
|
197
212
|
allowed_logout_urls: uiAllowedLogoutUrls,
|
|
198
213
|
});
|
|
214
|
+
|
|
215
|
+
//TODO: move to separate function for connect
|
|
216
|
+
console.log('connect_allowed_callbacks_urls ->', connectAllowedCallbacksUrls);
|
|
217
|
+
console.log('connect_allowed_logout_urls ->', connectAllowedLogoutUrls);
|
|
218
|
+
|
|
219
|
+
await updateJsonFile(filePaths.connectJson, {
|
|
220
|
+
callbacks: connectAllowedCallbacksUrls,
|
|
221
|
+
allowed_logout_urls: connectAllowedLogoutUrls,
|
|
222
|
+
});
|
|
223
|
+
|
|
199
224
|
console.log('Updated URLs for main UI...');
|
|
200
225
|
} else {
|
|
201
226
|
await fs.promises.unlink(filePaths.uiJson);
|
|
@@ -276,6 +301,9 @@ export async function getAuth0AuthToken(auth0Domain, clientId, clientSecret) {
|
|
|
276
301
|
|
|
277
302
|
async function configureUI(siteHost, coreURL, docupaceHost, site, env, useNewDomain, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, vaultSiteSecretsPath, imageTag, repoPath) {
|
|
278
303
|
console.log(`Configuring UI for site: ${site} Host: ${siteHost} in env: ${env}`);
|
|
304
|
+
siteHost = siteHost.replace('https://', '');
|
|
305
|
+
coreURL = coreURL.replace('https://', '');
|
|
306
|
+
|
|
279
307
|
|
|
280
308
|
try {
|
|
281
309
|
const auth0Response = await axios.get(`https://${auth0Domain}/api/v2/clients`, {
|
|
@@ -403,6 +431,8 @@ externalConnectService:
|
|
|
403
431
|
}
|
|
404
432
|
|
|
405
433
|
async function configureGraphQLServer(siteHost, coreURL, docupaceHost, site, env, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, vaultSiteSecretsPath, imageTag, standardConfigRemoteBranch, repoPath, commonSecrets) {
|
|
434
|
+
siteHost = siteHost.replace('https://', '');
|
|
435
|
+
coreURL = coreURL.replace('https://', '');
|
|
406
436
|
console.log(`Configuring GraphQL Server for site: ${site} Host: ${siteHost} in env: ${env}`);
|
|
407
437
|
|
|
408
438
|
try {
|
|
@@ -455,6 +485,7 @@ graphqlServer:
|
|
|
455
485
|
env:
|
|
456
486
|
AUTH0_CLIENT_SECRET: vault:secret/data/${site}/graphql-server/config#AUTH0_CLIENT_SECRET
|
|
457
487
|
STANDARD_CONFIG_REMOTE_PATH: vault:secret/data/common/config#STANDARD_CONFIG_REMOTE_PATH
|
|
488
|
+
SITE_CONFIG_REMOTE_PATH: vault:secret/data/${site}/common/config#SITE_CONFIG_REMOTE_PATH
|
|
458
489
|
AUTH0_CC_CLIENT_ID: vault:secret/data/${site}/graphql-server/config#AUTH0_CC_CLIENT_ID
|
|
459
490
|
AUTH0_CC_CLIENT_SECRET: vault:secret/data/${site}/graphql-server/config#AUTH0_CC_CLIENT_SECRET
|
|
460
491
|
image:
|
|
@@ -506,8 +537,9 @@ ingress:
|
|
|
506
537
|
}
|
|
507
538
|
}
|
|
508
539
|
|
|
509
|
-
|
|
510
|
-
|
|
540
|
+
|
|
541
|
+
export async function configureFromSite(fromSite, toSite, fromEnv,toEnv, deployUI, deployGraphQLServer, useNewDomain) {
|
|
542
|
+
console.log(`Configuring Auth0 tenants and ArgoCD apps for site: ${toSite} in env: ${toEnv} from site: ${fromSite}`);
|
|
511
543
|
// Common Secrets
|
|
512
544
|
const commonSecretsPath = getVaultSecretsConfigs(toSite).commonSecretsPath;
|
|
513
545
|
console.log(`commonSecretsPath => ${commonSecretsPath}`)
|
|
@@ -518,7 +550,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
|
|
|
518
550
|
console.log(`siteCommonSecretsPath => ${siteCommonSecretsPath}`)
|
|
519
551
|
const siteCommonSecrets = await getVaultSecrets(siteCommonSecretsPath);
|
|
520
552
|
|
|
521
|
-
const auth0Domain = `docupace-${
|
|
553
|
+
const auth0Domain = `docupace-${toEnv}-${toSite}.us.auth0.com`
|
|
522
554
|
const auth0ClientId = siteCommonSecrets.AUTH0_CLIENT_ID;
|
|
523
555
|
const auth0ClientSecret = siteCommonSecrets.AUTH0_CLIENT_SECRET;
|
|
524
556
|
const auth0Token = await getAuth0AuthToken(auth0Domain, auth0ClientId, auth0ClientSecret);
|
|
@@ -529,17 +561,29 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
|
|
|
529
561
|
|
|
530
562
|
// GraphQL-Server app
|
|
531
563
|
const graphqlSecretsPath = getVaultSecretsConfigs(toSite).graphqlServerSecretsPath;
|
|
532
|
-
console.log(`graphqlSecretsPath => ${graphqlSecretsPath}`)
|
|
564
|
+
console.log(`graphqlSecretsPath => ${graphqlSecretsPath}`);
|
|
533
565
|
|
|
566
|
+
let repoPathFromEnv ="";
|
|
567
|
+
let repoPathToEnv = "";
|
|
534
568
|
// Clone repositories
|
|
535
|
-
|
|
569
|
+
if ( fromEnv == toEnv ) {
|
|
570
|
+
repoPathFromEnv = await cloneEnvRepository(fromEnv);
|
|
571
|
+
repoPathToEnv = repoPathFromEnv;
|
|
572
|
+
}else {
|
|
573
|
+
repoPathFromEnv = await cloneEnvRepository(fromEnv);
|
|
574
|
+
repoPathToEnv = await cloneEnvRepository(toEnv);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
//TODO: clone fromEnv and toEnv. replace above with this
|
|
579
|
+
|
|
536
580
|
const auth0RepoPath = await cloneRepository('auth0-site-setup');
|
|
537
581
|
|
|
538
582
|
// Read deploy configs
|
|
539
|
-
const { deployConfig: deployUIConfig } = await readDeployConfig('ui',
|
|
583
|
+
const { deployConfig: deployUIConfig } = await readDeployConfig('ui', fromEnv, fromSite, 'values');
|
|
540
584
|
const uiImageTag = deployUIConfig.image.tag;
|
|
541
585
|
|
|
542
|
-
const { deployConfig: deployGraphQLServerConfig} = await readDeployConfig('graphql-server',
|
|
586
|
+
const { deployConfig: deployGraphQLServerConfig} = await readDeployConfig('graphql-server', fromEnv, fromSite, 'values');
|
|
543
587
|
const graphqlImageTag = deployGraphQLServerConfig.image.tag;
|
|
544
588
|
const graphqlStandardConfigRemoteBranch = deployGraphQLServerConfig.graphqlServer.standardConfigRemoteBranch;
|
|
545
589
|
|
|
@@ -550,6 +594,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
|
|
|
550
594
|
loginHtml: './auth0-site-setup/template/pages/login.html',
|
|
551
595
|
graphqlJson: './auth0-site-setup/template/clients/docupace-graphql.json',
|
|
552
596
|
uiJson: './auth0-site-setup/template/clients/docupace-ui-main.json',
|
|
597
|
+
connectJson: './auth0-site-setup/template/clients/docupace-connect.json',
|
|
553
598
|
databaseJson: './auth0-site-setup/template/database-connections/docupace/database.json',
|
|
554
599
|
twilioJson: './auth0-site-setup/template/guardian/providers/sms-twilio.json',
|
|
555
600
|
};
|
|
@@ -557,7 +602,7 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
|
|
|
557
602
|
console.log(`Copying Latest UI Image Tag: ${deployUIConfig.image.tag} from site: ${fromSite} to site: ${toSite}`);
|
|
558
603
|
console.log(`Copying Latest GraphQL Server Image Tag: ${deployGraphQLServerConfig.image.tag} from site: ${fromSite} to site: ${toSite}`);
|
|
559
604
|
|
|
560
|
-
const envConfig = environmentConfig[
|
|
605
|
+
const envConfig = environmentConfig[toEnv];
|
|
561
606
|
|
|
562
607
|
let CORE_URL,
|
|
563
608
|
SITE_HOST,
|
|
@@ -579,15 +624,15 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
|
|
|
579
624
|
CONNECT_URL = `${oldUrl}_ui`;
|
|
580
625
|
}
|
|
581
626
|
|
|
582
|
-
await templateAuth0(SITE_HOST, CORE_API_CONTEXT,
|
|
627
|
+
await templateAuth0(SITE_HOST, CORE_API_CONTEXT, toEnv, filePaths, deployUI, deployGraphQLServer, commonSecrets);
|
|
583
628
|
await importAuth0Templates('./auth0-site-setup/template', auth0Domain, auth0ClientId, auth0ClientSecret);
|
|
584
629
|
|
|
585
630
|
if (deployUI === 'true') {
|
|
586
|
-
await configureUI(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite,
|
|
631
|
+
await configureUI(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, toEnv, useNewDomain, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, uiSecretsPath, uiImageTag, repoPathToEnv);
|
|
587
632
|
}
|
|
588
633
|
|
|
589
|
-
await configureGraphQLServer(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite,
|
|
590
|
-
await pushDeployConfig(
|
|
634
|
+
await configureGraphQLServer(SITE_HOST, CORE_URL, DOCUPACE_HOST, toSite, toEnv, auth0Domain, auth0ClientId, auth0ClientSecret, auth0Token, graphqlSecretsPath, graphqlImageTag, graphqlStandardConfigRemoteBranch, repoPathToEnv, commonSecrets);
|
|
635
|
+
await pushDeployConfig(repoPathToEnv, `Config update for ${toSite} from ${fromSite} with UI: ${uiImageTag} and GraphQL: ${graphqlImageTag}`);
|
|
591
636
|
|
|
592
637
|
await initializeAuth0Configuration({
|
|
593
638
|
initConfiguration: "true",
|
|
@@ -602,4 +647,4 @@ export async function configureFromSite(fromSite, toSite, env, deployUI, deployG
|
|
|
602
647
|
auth0AuthToken: auth0Token,
|
|
603
648
|
coreApiIdentifier: commonSecrets.CORE_API_IDENTIFIER
|
|
604
649
|
})
|
|
605
|
-
}
|
|
650
|
+
}
|
package/src/next/apache.js
CHANGED
|
@@ -23,14 +23,18 @@ export async function addApacheSite() {
|
|
|
23
23
|
await fs.writeFile('private.key', Buffer.from(haproxyPrivateKey, 'base64'));
|
|
24
24
|
await fs.chmod('private.key', 0o600);
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
console.log("Running command");
|
|
28
|
-
const sshCmd = (script) =>
|
|
28
|
+
const sshCmd = (server,script) =>
|
|
29
29
|
$`ssh -i private.key -o StrictHostKeyChecking=no root@${server} ${script}`;
|
|
30
30
|
|
|
31
|
+
let server = `${process.env.ENVIRONMENT}-apalb01a.corp.docupace.com`;
|
|
31
32
|
// The script is run twice in the Bash version
|
|
32
|
-
await sshCmd(`/root/repo/iis-preprod/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`);
|
|
33
|
-
|
|
33
|
+
await sshCmd(server, `/root/repo/iis-preprod/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`);
|
|
34
|
+
|
|
35
|
+
server = `${process.env.ENVIRONMENT}-apalb01b.corp.docupace.com`;
|
|
36
|
+
|
|
37
|
+
await sshCmd(server,`/root/repo/iis-preprod/scripts/addsite/add_core_site.sh ${process.env.ENVIRONMENT} ${process.env.SITE}`);
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
|
package/src/next/cli.js
CHANGED
|
@@ -17,7 +17,6 @@ dotenv.config({ path: ['.env.pipeline.local', 'config/.env.pipeline.local'] });
|
|
|
17
17
|
|
|
18
18
|
const program = new Command();
|
|
19
19
|
|
|
20
|
-
// GIT SHA computation
|
|
21
20
|
import { $ } from 'zx';
|
|
22
21
|
import {deployConnect, deployCore} from './jenkins.js';
|
|
23
22
|
import { runPipeline } from './pipline.js';
|
|
@@ -52,7 +51,6 @@ program
|
|
|
52
51
|
await connectClone();
|
|
53
52
|
});
|
|
54
53
|
|
|
55
|
-
|
|
56
54
|
program
|
|
57
55
|
.command('haproxySync')
|
|
58
56
|
.description('Sync haproxy config')
|
|
@@ -60,15 +58,14 @@ program
|
|
|
60
58
|
await haproxySync();
|
|
61
59
|
});
|
|
62
60
|
|
|
63
|
-
|
|
64
|
-
|
|
65
61
|
program
|
|
66
62
|
.command('vaultAddSiteData')
|
|
67
63
|
.description('Add m2m auth0 data to vault')
|
|
68
64
|
.requiredOption('-s, --site-name <siteName>', 'Site name')
|
|
65
|
+
.requiredOption('-p, --site-config-remote-path <siteConfigRemotePath>', 'Site Config Remote Path')
|
|
69
66
|
.action(async (options) => {
|
|
70
|
-
const { siteName,
|
|
71
|
-
await vaultAddSiteData(siteName);
|
|
67
|
+
const { siteName, siteConfigRemotePath } = options;
|
|
68
|
+
await vaultAddSiteData(siteName, siteConfigRemotePath);
|
|
72
69
|
});
|
|
73
70
|
|
|
74
71
|
program
|
|
@@ -130,7 +127,6 @@ program
|
|
|
130
127
|
});
|
|
131
128
|
});
|
|
132
129
|
|
|
133
|
-
|
|
134
130
|
program
|
|
135
131
|
.command('copy')
|
|
136
132
|
.description('Copy a Docker image between registries')
|
package/src/next/connect.js
CHANGED
|
@@ -25,6 +25,14 @@ process.env.CONNECT_DIR = process.env.CONNECT_DIR || 'connect';
|
|
|
25
25
|
const vaultToken = process.env.VAULT_TOKEN;
|
|
26
26
|
const vaultAddr = process.env.VAULT_ADDR;
|
|
27
27
|
|
|
28
|
+
const connectUIEnvMap= {
|
|
29
|
+
'dev': 'dev',
|
|
30
|
+
'qa': 'preprod',
|
|
31
|
+
'stg': 'stg',
|
|
32
|
+
'uat': 'uat',
|
|
33
|
+
'prd': 'prod-las'
|
|
34
|
+
};
|
|
35
|
+
|
|
28
36
|
function log(msg) {
|
|
29
37
|
console.log(`[*] ${msg}`);
|
|
30
38
|
}
|
|
@@ -57,8 +65,8 @@ function log(msg) {
|
|
|
57
65
|
|
|
58
66
|
|
|
59
67
|
export async function connectClone() {
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
const connectFromEnv = connectUIEnvMap[process.env.BUILD_ENVIRONMENT];
|
|
69
|
+
const connectToEnv = connectUIEnvMap[process.env.BUILD_ENVIRONMENT];
|
|
62
70
|
if (!vaultToken || !vaultAddr) {
|
|
63
71
|
console.error("Error: VAULT_TOKEN and VAULT_ADDR must be set.");
|
|
64
72
|
throw new Error("VAULT_TOKEN and VAULT_ADDR must be set.");
|
|
@@ -87,7 +95,7 @@ export async function connectClone() {
|
|
|
87
95
|
|
|
88
96
|
process.env.AUTH0_REGION_DOMAIN="us.auth0.com";
|
|
89
97
|
|
|
90
|
-
log(`BUILD_ENVIRONMENT: ${
|
|
98
|
+
log(`BUILD_ENVIRONMENT: ${connectToEnv}`);
|
|
91
99
|
log(`BUILD_SITE: ${process.env.BUILD_SITE}`);
|
|
92
100
|
log(`AUTH0_SUBDOMAIN: ${process.env.AUTH0_SUBDOMAIN}`);
|
|
93
101
|
log(`AUTH0_REGION_DOMAIN: ${process.env.AUTH0_REGION_DOMAIN}`);
|
|
@@ -101,11 +109,12 @@ export async function connectClone() {
|
|
|
101
109
|
|
|
102
110
|
|
|
103
111
|
await gitCheckout('connect-deploy', process.env.CONNECT_DIR);
|
|
104
|
-
|
|
112
|
+
|
|
113
|
+
await gitCheckout(`${connectToEnv}-site-settings`, `${process.env.CONNECT_DIR}/${connectToEnv}-site-settings`);
|
|
105
114
|
|
|
106
115
|
// 5) Create site clone (emulating the dock.sh call)
|
|
107
|
-
const cloneFrom = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${
|
|
108
|
-
const cloneTo = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${
|
|
116
|
+
const cloneFrom = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${connectFromEnv}/${process.env.FROM_BUILD_SITE}`);
|
|
117
|
+
const cloneTo = path.join(projectRoot,process.env.CONNECT_DIR,`envs`,`${connectToEnv}/${process.env.BUILD_SITE}`);
|
|
109
118
|
|
|
110
119
|
const connectHome = path.join(projectRoot,process.env.CONNECT_DIR);
|
|
111
120
|
if (!(await fs.pathExists(cloneFrom))) {
|
|
@@ -123,7 +132,7 @@ export async function connectClone() {
|
|
|
123
132
|
await (async () => {
|
|
124
133
|
try {
|
|
125
134
|
// Execute the shell command
|
|
126
|
-
const result = await $`cd ${cloneFrom} && bash dock.sh clone ${
|
|
135
|
+
const result = await $`cd ${cloneFrom} && bash dock.sh clone ${connectToEnv} ${process.env.BUILD_SITE} ${process.env.IMAGE_VERSION}`;
|
|
127
136
|
console.log('Command succeeded:');
|
|
128
137
|
console.log('stdout:', result.stdout); // Standard output
|
|
129
138
|
console.log('stderr:', result.stderr); // Standard error
|
|
@@ -179,7 +188,7 @@ export async function connectClone() {
|
|
|
179
188
|
|
|
180
189
|
if (numChanges > 0) {
|
|
181
190
|
const jiraTicket = process.env.JIRA_TICKET || 'NO_JIRA';
|
|
182
|
-
const message = `${jiraTicket} usdoc-s-builui job download_auth0_metadata for ${
|
|
191
|
+
const message = `${jiraTicket} usdoc-s-builui job download_auth0_metadata for ${connectToEnv}/${process.env.BUILD_SITE}`;
|
|
183
192
|
log('About to commit changes to git');
|
|
184
193
|
await $`cd ${cloneTo} && git commit -m ${message}`;
|
|
185
194
|
await $`cd ${cloneTo} && git push -u origin master`;
|
package/src/next/vault.js
CHANGED
|
@@ -1,39 +1,43 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
|
|
3
|
-
export async function vaultAddSiteData(SITE) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
export async function vaultAddSiteData(SITE, SITE_CONFIG_REMOTE_PATH) {
|
|
4
|
+
const AUTH0_CLIENT_ID = process.env.AUTH0_CLIENT_ID;
|
|
5
|
+
const AUTH0_CLIENT_SECRET = process.env.AUTH0_CLIENT_SECRET;
|
|
6
|
+
const VAULT_ADDR = process.env.VAULT_ADDR; // Vault host URL from environment variables
|
|
7
|
+
const VAULT_TOKEN = process.env.VAULT_TOKEN; // Vault token from environment variables
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
if (!VAULT_ADDR || !VAULT_TOKEN) {
|
|
10
|
+
throw new Error('Missing VAULT_ADDR or VAULT_TOKEN environment variable.');
|
|
11
|
+
}
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
const vaultApiUrl = `${VAULT_ADDR}/v1/secret/data/${SITE}/common/config`;
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
const response = await axios.post(
|
|
17
|
-
vaultApiUrl,
|
|
18
|
-
{
|
|
19
|
-
data: {
|
|
20
|
-
AUTH0_CLIENT_ID: AUTH0_CLIENT_ID,
|
|
21
|
-
AUTH0_CLIENT_SECRET: AUTH0_CLIENT_SECRET,
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
headers: {
|
|
26
|
-
'X-Vault-Token': VAULT_TOKEN,
|
|
27
|
-
'Content-Type': 'application/json',
|
|
28
|
-
},
|
|
29
|
-
}
|
|
30
|
-
);
|
|
15
|
+
try {
|
|
31
16
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
console.error('Error adding data to Vault:', error.response?.data || error.message);
|
|
35
|
-
throw error;
|
|
17
|
+
if (process.env.VAULT_SKIP_VERIFY === 'true') {
|
|
18
|
+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
|
36
19
|
}
|
|
37
|
-
}
|
|
38
20
|
|
|
21
|
+
const response = await axios.post(
|
|
22
|
+
vaultApiUrl,
|
|
23
|
+
{
|
|
24
|
+
data: {
|
|
25
|
+
AUTH0_CLIENT_ID: AUTH0_CLIENT_ID,
|
|
26
|
+
AUTH0_CLIENT_SECRET: AUTH0_CLIENT_SECRET,
|
|
27
|
+
SITE_CONFIG_REMOTE_PATH: SITE_CONFIG_REMOTE_PATH,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
headers: {
|
|
32
|
+
'X-Vault-Token': VAULT_TOKEN,
|
|
33
|
+
'Content-Type': 'application/json',
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
);
|
|
39
37
|
|
|
38
|
+
console.log('Data added to Vault successfully:', response.data);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.error('Error adding data to Vault:', error.response?.data || error.message);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
package/terraform/validate.sh
CHANGED