@drunk-pulumi/azure 1.0.24 → 1.0.26
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/Aks/Helper.d.ts +4 -6
- package/Aks/Helper.js +13 -18
- package/Aks/Identity.js +3 -3
- package/Aks/index.js +4 -7
- package/AzAd/EnvRoles/EnvRoles.Consts.d.ts +6 -0
- package/AzAd/EnvRoles/EnvRoles.Consts.js +178 -0
- package/AzAd/{EnvRoles.d.ts → EnvRoles/EnvRoles.d.ts} +1 -9
- package/AzAd/EnvRoles/EnvRoles.js +91 -0
- package/AzAd/Group.d.ts +2 -2
- package/AzAd/Group.js +3 -3
- package/AzAd/Helper.js +6 -66
- package/AzAd/Identities/AzDevOpsIdentity.js +4 -5
- package/AzAd/Identities/AzDevOpsManagedIdentity.js +1 -1
- package/AzAd/Identities/AzUserAdRevertSync.js +3 -3
- package/AzAd/Identity.js +1 -2
- package/AzAd/{GraphDefinition.js → Roles/GraphDefinition.js} +1 -1
- package/AzAd/Roles/Role.d.ts +16 -0
- package/AzAd/Roles/Role.js +31 -0
- package/AzAd/{RoleAssignment.d.ts → Roles/RoleAssignment.d.ts} +1 -1
- package/AzAd/{RoleAssignment.js → Roles/RoleAssignment.js} +2 -2
- package/AzAd/{RolesBuiltIn.js → Roles/RolesBuiltIn.js} +1 -1
- package/AzAd/Roles/index.d.ts +3 -0
- package/AzAd/Roles/index.js +22 -0
- package/AzAd/UserAssignedIdentity.js +1 -2
- package/AzAd/index.d.ts +10 -0
- package/AzAd/{Identities/index.js → index.js} +14 -5
- package/Builder/AksBuilder.js +3 -3
- package/Builder/ApimProductBuilder.js +1 -2
- package/Builder/DnsZoneBuilder.js +2 -3
- package/Builder/EnvRoleBuilder.d.ts +4 -23
- package/Builder/EnvRoleBuilder.js +8 -9
- package/Builder/PrivateDnsZoneBuilder.d.ts +1 -1
- package/Builder/PrivateDnsZoneBuilder.js +11 -6
- package/Builder/ResourceBuilder.js +3 -3
- package/Builder/ServiceBusBuilder.js +3 -3
- package/Builder/StorageBuilder.js +6 -1
- package/Builder/types/envRoleBuilder.d.ts +1 -3
- package/Builder/types/resourceBuilder.d.ts +1 -3
- package/Builder/types/storageBuilder.d.ts +1 -0
- package/Cdn/index.d.ts +1 -1
- package/Cdn/index.js +2 -2
- package/Common/AzureEnv/AutoTags.js +27 -0
- package/Common/{AzureEnv.js → AzureEnv/index.js} +3 -3
- package/Common/{LocationBuiltIn.js → Location/LocationBuiltIn.js} +1 -1
- package/Common/Location/index.js +36 -0
- package/Common/{Naming/Rulers.d.ts → Naming.d.ts} +13 -3
- package/Common/Naming.js +398 -0
- package/Common/RsInfo/Helper.js +8 -6
- package/Common/index.d.ts +1 -4
- package/Common/index.js +7 -7
- package/Core/KeyGenerators.js +4 -5
- package/Core/Random.js +2 -3
- package/KeyVault/CustomHelper.d.ts +1 -3
- package/KeyVault/CustomHelper.js +27 -3
- package/KeyVault/Helper.d.ts +5 -8
- package/KeyVault/Helper.js +35 -61
- package/Logs/AppInsight.js +1 -2
- package/Logs/Helpers.js +1 -3
- package/Logs/LogAnalytics.js +1 -2
- package/README.md +37 -29
- package/Sql/index.js +3 -3
- package/Storage/Helper.js +5 -6
- package/Storage/index.js +15 -14
- package/VM/index.js +1 -2
- package/VNet/PrivateEndpoint.d.ts +41 -3
- package/VNet/PrivateEndpoint.js +66 -57
- package/VNet/index.d.ts +1 -11
- package/VNet/index.js +5 -17
- package/envHelper.d.ts +4 -0
- package/envHelper.js +62 -0
- package/package.json +1 -1
- package/types.d.ts +22 -8
- package/AzAd/ConditionalPolicies/index.d.ts +0 -0
- package/AzAd/ConditionalPolicies/index.js +0 -2
- package/AzAd/EnvRoles.Consts.d.ts +0 -22
- package/AzAd/EnvRoles.Consts.js +0 -173
- package/AzAd/EnvRoles.js +0 -94
- package/AzAd/Identities/index.d.ts +0 -4
- package/AzAd/Role.d.ts +0 -17
- package/AzAd/Role.js +0 -30
- package/Common/AutoTags.js +0 -27
- package/Common/GlobalEnv.d.ts +0 -3
- package/Common/GlobalEnv.js +0 -29
- package/Common/Location.js +0 -36
- package/Common/Naming/Rulers.js +0 -537
- package/Common/Naming/index.d.ts +0 -10
- package/Common/Naming/index.js +0 -112
- /package/AzAd/{GraphDefinition.d.ts → Roles/GraphDefinition.d.ts} +0 -0
- /package/AzAd/{RolesBuiltIn.d.ts → Roles/RolesBuiltIn.d.ts} +0 -0
- /package/Common/{AutoTags.d.ts → AzureEnv/AutoTags.d.ts} +0 -0
- /package/Common/{AzureEnv.d.ts → AzureEnv/index.d.ts} +0 -0
- /package/Common/{LocationBuiltIn.d.ts → Location/LocationBuiltIn.d.ts} +0 -0
- /package/Common/{Location.d.ts → Location/index.d.ts} +0 -0
package/Common/index.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
export * as helpers from './Helpers';
|
|
2
2
|
export * as azureEnv from './AzureEnv';
|
|
3
3
|
export * as stackEnv from './StackEnv';
|
|
4
|
-
export * as global from './GlobalEnv';
|
|
5
|
-
export { default as naming } from './Naming';
|
|
6
4
|
export * as rsInfo from './RsInfo';
|
|
7
5
|
export * as openApi from './OpenApi';
|
|
6
|
+
export { default as naming, cleanName, getResourceName, removeLeadingAndTrailingDash, } from './Naming';
|
|
8
7
|
export * from './Helpers';
|
|
9
8
|
export * from './AzureEnv';
|
|
10
9
|
export * from './StackEnv';
|
|
11
|
-
export * from './GlobalEnv';
|
|
12
|
-
export * from './Naming';
|
package/Common/index.js
CHANGED
|
@@ -29,18 +29,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
29
29
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
30
|
};
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.
|
|
32
|
+
exports.removeLeadingAndTrailingDash = exports.getResourceName = exports.cleanName = exports.naming = exports.openApi = exports.rsInfo = exports.stackEnv = exports.azureEnv = exports.helpers = void 0;
|
|
33
33
|
exports.helpers = __importStar(require("./Helpers"));
|
|
34
34
|
exports.azureEnv = __importStar(require("./AzureEnv"));
|
|
35
35
|
exports.stackEnv = __importStar(require("./StackEnv"));
|
|
36
|
-
exports.global = __importStar(require("./GlobalEnv"));
|
|
37
|
-
var Naming_1 = require("./Naming");
|
|
38
|
-
Object.defineProperty(exports, "naming", { enumerable: true, get: function () { return __importDefault(Naming_1).default; } });
|
|
39
36
|
exports.rsInfo = __importStar(require("./RsInfo"));
|
|
40
37
|
exports.openApi = __importStar(require("./OpenApi"));
|
|
38
|
+
var Naming_1 = require("./Naming");
|
|
39
|
+
Object.defineProperty(exports, "naming", { enumerable: true, get: function () { return __importDefault(Naming_1).default; } });
|
|
40
|
+
Object.defineProperty(exports, "cleanName", { enumerable: true, get: function () { return Naming_1.cleanName; } });
|
|
41
|
+
Object.defineProperty(exports, "getResourceName", { enumerable: true, get: function () { return Naming_1.getResourceName; } });
|
|
42
|
+
Object.defineProperty(exports, "removeLeadingAndTrailingDash", { enumerable: true, get: function () { return Naming_1.removeLeadingAndTrailingDash; } });
|
|
41
43
|
__exportStar(require("./Helpers"), exports);
|
|
42
44
|
__exportStar(require("./AzureEnv"), exports);
|
|
43
45
|
__exportStar(require("./StackEnv"), exports);
|
|
44
|
-
|
|
45
|
-
__exportStar(require("./Naming"), exports);
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQ29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQXFDO0FBQ3JDLHVEQUF1QztBQUN2Qyx1REFBdUM7QUFDdkMsc0RBQXNDO0FBQ3RDLG1DQUE2QztBQUFwQyxpSEFBQSxPQUFPLE9BQVU7QUFDMUIsbURBQW1DO0FBQ25DLHFEQUFxQztBQUVyQyw0Q0FBMEI7QUFDMUIsNkNBQTJCO0FBQzNCLDZDQUEyQjtBQUMzQiw4Q0FBNEI7QUFDNUIsMkNBQXlCIn0=
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQ29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQXFDO0FBQ3JDLHVEQUF1QztBQUN2Qyx1REFBdUM7QUFDdkMsbURBQW1DO0FBQ25DLHFEQUFxQztBQUNyQyxtQ0FLa0I7QUFKaEIsaUhBQUEsT0FBTyxPQUFVO0FBQ2pCLG1HQUFBLFNBQVMsT0FBQTtBQUNULHlHQUFBLGVBQWUsT0FBQTtBQUNmLHNIQUFBLDRCQUE0QixPQUFBO0FBRzlCLDRDQUEwQjtBQUMxQiw2Q0FBMkI7QUFDM0IsNkNBQTJCIn0=
|
package/Core/KeyGenerators.js
CHANGED
|
@@ -22,7 +22,6 @@ const generateSsh = ({ name, loginPrefix, maxUserNameLength, vaultInfo, }) => {
|
|
|
22
22
|
}, { dependsOn: pass });
|
|
23
23
|
//Add secrets to vault
|
|
24
24
|
(0, CustomHelper_1.addCustomSecrets)({
|
|
25
|
-
formattedName: true,
|
|
26
25
|
vaultInfo,
|
|
27
26
|
contentType: 'Random Ssh',
|
|
28
27
|
dependsOn: rs,
|
|
@@ -34,9 +33,9 @@ const generateSsh = ({ name, loginPrefix, maxUserNameLength, vaultInfo, }) => {
|
|
|
34
33
|
return {
|
|
35
34
|
userName,
|
|
36
35
|
lists: {
|
|
37
|
-
getPublicKey: () => (0, pulumi_1.output)((0, Helper_1.getSecret)({ name: publicKeyName,
|
|
38
|
-
getPrivateKey: () => (0, pulumi_1.output)((0, Helper_1.getSecret)({ name: privateKeyName,
|
|
39
|
-
getPassword: () => (0, pulumi_1.output)((0, Helper_1.getSecret)({ name: passwordKeyName,
|
|
36
|
+
getPublicKey: () => (0, pulumi_1.output)((0, Helper_1.getSecret)({ name: publicKeyName, vaultInfo })).apply((i) => i?.value),
|
|
37
|
+
getPrivateKey: () => (0, pulumi_1.output)((0, Helper_1.getSecret)({ name: privateKeyName, vaultInfo })).apply((i) => i.value),
|
|
38
|
+
getPassword: () => (0, pulumi_1.output)((0, Helper_1.getSecret)({ name: passwordKeyName, vaultInfo })).apply((i) => i.value),
|
|
40
39
|
},
|
|
41
40
|
};
|
|
42
41
|
};
|
|
@@ -57,4 +56,4 @@ const generatePGP = ({ name, options, vaultInfo, }) => {
|
|
|
57
56
|
};
|
|
58
57
|
};
|
|
59
58
|
exports.generatePGP = generatePGP;
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2V5R2VuZXJhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db3JlL0tleUdlbmVyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0NBQW1DO0FBQ25DLG1GQUErRTtBQUMvRSwyREFBNEQ7QUFDNUQsK0NBQStDO0FBQy9DLHFDQUFzRTtBQUN0RSw2RUFHb0Q7QUFDcEQsMkNBQWdEO0FBZXpDLE1BQU0sV0FBVyxHQUFHLENBQUMsRUFDMUIsSUFBSSxFQUNKLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsU0FBUyxHQUNVLEVBQWMsRUFBRTtJQUNuQyxJQUFJLEdBQUcsZUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixNQUFNLFdBQVcsR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDO0lBQ25DLE1BQU0sZUFBZSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDM0MsTUFBTSxhQUFhLEdBQUcsR0FBRyxJQUFJLFlBQVksQ0FBQztJQUMxQyxNQUFNLGNBQWMsR0FBRyxHQUFHLElBQUksYUFBYSxDQUFDO0lBRTVDLE1BQU0sUUFBUSxHQUFHLElBQUEsdUJBQWMsRUFBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sSUFBSSxHQUFHLElBQUEsdUJBQWMsRUFBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUVyRCxNQUFNLEVBQUUsR0FBRyxJQUFJLGdDQUFjLENBQzNCLElBQUksRUFDSjtRQUNFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNyQixTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7S0FDMUIsRUFDRCxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FDcEIsQ0FBQztJQUVGLHNCQUFzQjtJQUN0QixJQUFBLCtCQUFnQixFQUFDO1FBQ2YsU0FBUztRQUNULFdBQVcsRUFBRSxZ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
|
package/Core/Random.js
CHANGED
|
@@ -27,10 +27,9 @@ exports.randomLogin = exports.randomUserName = exports.randomUuId = exports.rand
|
|
|
27
27
|
const random = __importStar(require("@pulumi/random"));
|
|
28
28
|
const Common_1 = require("../Common");
|
|
29
29
|
const CustomHelper_1 = require("../KeyVault/CustomHelper");
|
|
30
|
-
const Helper_1 = require("../KeyVault/Helper");
|
|
31
30
|
const getPasswordName = (name, type) => type === null
|
|
32
31
|
? (0, Common_1.getResourceName)(name, { suffix: 'pwd' })
|
|
33
|
-
: `${
|
|
32
|
+
: `${name}-pwd-${type}`;
|
|
34
33
|
exports.getPasswordName = getPasswordName;
|
|
35
34
|
/**
|
|
36
35
|
* Genera random password with 50 characters length.
|
|
@@ -109,4 +108,4 @@ const randomLogin = ({ name, loginPrefix, maxUserNameLength, passwordOptions = {
|
|
|
109
108
|
return { userName, password, vaultKeys: { userNameKey, passwordKey } };
|
|
110
109
|
};
|
|
111
110
|
exports.randomLogin = randomLogin;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvcmUvUmFuZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsdURBQXlDO0FBQ3pDLHNDQUE0QztBQUM1QywyREFBNkU7QUFHdEUsTUFBTSxlQUFlLEdBQUcsQ0FDN0IsSUFBWSxFQUNaLElBQW9DLEVBQ3BDLEVBQUUsQ0FDRixJQUFJLEtBQUssSUFBSTtJQUNYLENBQUMsQ0FBQyxJQUFBLHdCQUFlLEVBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUMsQ0FBQyxHQUFHLElBQUksUUFBUSxJQUFJLEVBQUUsQ0FBQztBQU5mLFFBQUEsZUFBZSxtQkFNQTtBQWE1Qjs7OztHQUlHO0FBQ0ksTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUM3QixNQUFNLEdBQUcsRUFBRSxFQUNYLElBQUksRUFDSixNQUFNLEdBQUcsUUFBUSxFQUNqQixPQUFPLEVBQ1AsU0FBUyxHQUNPLEVBQUUsRUFBRTtJQUNwQixJQUFJLE1BQU0sR0FBRyxFQUFFO1FBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUU3QixNQUFNLE9BQU8sR0FDWCxNQUFNLEtBQUssU0FBUztRQUNsQixDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDeEQsQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRO1lBQ25CLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDL0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVYLElBQUksR0FBRyxJQUFBLHVCQUFlLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRW5DLE1BQU0sVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMs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
|
|
@@ -9,8 +9,6 @@ interface Props extends Required<NamedWithVaultType> {
|
|
|
9
9
|
/**Add key vault secret from a value or from pulumi configuration secret. */
|
|
10
10
|
export declare const addVaultSecretFrom: ({ name, value, vaultInfo, dependsOn, }: Props) => VaultSecretResource;
|
|
11
11
|
interface SecretProps extends NamedBasicArgs {
|
|
12
|
-
/**Use the name directly without applying naming format*/
|
|
13
|
-
formattedName?: boolean;
|
|
14
12
|
value: Input<string>;
|
|
15
13
|
vaultInfo: KeyVaultInfo;
|
|
16
14
|
contentType?: Input<string>;
|
|
@@ -19,7 +17,7 @@ interface SecretProps extends NamedBasicArgs {
|
|
|
19
17
|
}>;
|
|
20
18
|
}
|
|
21
19
|
/** Add a secret to Key Vault. This will auto recover the deleted item and update with a new value if existed. */
|
|
22
|
-
export declare const addCustomSecret: ({ name,
|
|
20
|
+
export declare const addCustomSecret: ({ name, vaultInfo, value, contentType, dependsOn, ...others }: SecretProps) => VaultSecretResource;
|
|
23
21
|
interface MultiSecretProps extends Omit<SecretProps, 'value' | 'name'> {
|
|
24
22
|
items: Array<{
|
|
25
23
|
name: string;
|
package/KeyVault/CustomHelper.js
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.addCustomSecrets = exports.addCustomSecret = exports.addVaultSecretFrom = void 0;
|
|
4
27
|
const pulumi_1 = require("@pulumi/pulumi");
|
|
@@ -6,6 +29,7 @@ const Common_1 = require("../Common");
|
|
|
6
29
|
const VaultSecret_1 = require("@drunk-pulumi/azure-providers/VaultSecret");
|
|
7
30
|
const ConfigHelper_1 = require("../Common/ConfigHelper");
|
|
8
31
|
const Helper_1 = require("./Helper");
|
|
32
|
+
const env = __importStar(require("../envHelper"));
|
|
9
33
|
/**Add key vault secret from a value or from pulumi configuration secret. */
|
|
10
34
|
const addVaultSecretFrom = ({ name, value, vaultInfo, dependsOn, }) => {
|
|
11
35
|
if (!value)
|
|
@@ -22,8 +46,8 @@ const addVaultSecretFrom = ({ name, value, vaultInfo, dependsOn, }) => {
|
|
|
22
46
|
};
|
|
23
47
|
exports.addVaultSecretFrom = addVaultSecretFrom;
|
|
24
48
|
/** Add a secret to Key Vault. This will auto recover the deleted item and update with a new value if existed. */
|
|
25
|
-
const addCustomSecret = ({ name,
|
|
26
|
-
const n =
|
|
49
|
+
const addCustomSecret = ({ name, vaultInfo, value, contentType, dependsOn, ...others }) => {
|
|
50
|
+
const n = env.DPA_VAULT_DISABLE_FORMAT_NAME ? name : (0, Helper_1.getVaultItemName)(name);
|
|
27
51
|
//This KeyVault Secret is not auto recovery the deleted one.
|
|
28
52
|
return new VaultSecret_1.VaultSecretResource((0, Common_1.replaceAll)(name, '.', '-'), {
|
|
29
53
|
name: n,
|
|
@@ -37,4 +61,4 @@ exports.addCustomSecret = addCustomSecret;
|
|
|
37
61
|
/** Add multi secrets to Key Vault. This will auto recover the deleted item and update with a new value if existed. */
|
|
38
62
|
const addCustomSecrets = ({ items, ...others }) => items.map((i) => (0, exports.addCustomSecret)({ ...i, ...others }));
|
|
39
63
|
exports.addCustomSecrets = addCustomSecrets;
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0tleVZhdWx0L0N1c3RvbUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5RDtBQUN6RCxzQ0FBdUM7QUFDdkMsMkVBQWdGO0FBRWhGLHlEQUFtRDtBQUNuRCxxQ0FBNEM7QUFDNUMsa0RBQW9DO0FBUXBDLDRFQUE0RTtBQUNyRSxNQUFNLGtCQUFrQixHQUFHLENBQUMsRUFDakMsSUFBSSxFQUNKLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNILEVBQUUsRUFBRTtJQUNWLElBQUksQ0FBQyxLQUFLO1FBQUUsS0FBSyxHQUFHLElBQUEsd0JBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsS0FBSztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksbUJBQW1CLENBQUMsQ0FBQztJQUV0RSxPQUFPLElBQUEsdUJBQWUsRUFBQztRQUNyQixJQUFJO1FBQ0osS0FBSztRQUNMLFNBQVM7UUFDVCxXQUFXLEVBQUUsa0JBQWtCO1FBQy9CLFNBQVM7S0FDVixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFoQlcsUUFBQSxrQkFBa0Isc0JBZ0I3QjtBQVdGLGlIQUFpSDtBQUMxRyxNQUFNLGVBQWUsR0FBRyxDQUFDLEVBQzlCLElBQUksRUFDSixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxNQUFNLEVBQ0csRUFBRSxFQUFFO0lBQ2hCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFBLHlCQUFnQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVFLDREQUE0RDtJQUM1RCxPQUFPLElBQUksaUNBQW1CLENBQzVCLElBQUEsbUJBQVUsRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUMxQjtRQUNFLElBQUksRUFBRSxDQUFDO1FBQ1AsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBQSxlQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDdkQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ3pCLFdBQVcsRUFBRSxXQUFXLElBQUksSUFBSTtRQUNoQyxHQUFHLE1BQU07S0FDVixFQUNELEVBQUUsU0FBUyxFQUFFLENBQ2QsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXJCVyxRQUFBLGVBQWUsbUJBcUIxQjtBQU1GLHNIQUFzSDtBQUMvRyxNQUFNLGdCQUFnQixHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEVBQW9CLEVBQUUsRUFBRSxDQUN6RSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHVCQUFlLEVBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUQ1QyxRQUFBLGdCQUFnQixvQkFDNEIifQ==
|
package/KeyVault/Helper.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { KeyVaultInfo, NamedWithVaultType, WithVaultInfo } from '../types';
|
|
|
4
4
|
export declare const getVaultItemName: (name: string, currentStack?: string) => string;
|
|
5
5
|
type GetVaultItemProps = Required<NamedWithVaultType> & {
|
|
6
6
|
version?: string;
|
|
7
|
-
nameFormatted?: boolean;
|
|
8
7
|
};
|
|
9
8
|
interface KeyVaultPropertiesResults {
|
|
10
9
|
keyName: Output<string>;
|
|
@@ -14,13 +13,11 @@ interface KeyVaultPropertiesResults {
|
|
|
14
13
|
keyVersion: Output<string>;
|
|
15
14
|
}
|
|
16
15
|
export declare const addEncryptKey: (name: string, vaultInfo: KeyVaultInfo, keySize?: 2048 | 3072 | 4096) => KeyVaultPropertiesResults;
|
|
17
|
-
/** Get Key */
|
|
18
|
-
/** Get or create encryption Key */
|
|
19
16
|
/** Get Secret */
|
|
20
|
-
export declare const getSecret: ({ name, version, vaultInfo,
|
|
21
|
-
export declare const
|
|
22
|
-
|
|
17
|
+
export declare const getSecret: ({ name, version, vaultInfo, }: GetVaultItemProps) => Promise<import("@azure/keyvault-secrets").KeyVaultSecret | undefined>;
|
|
18
|
+
export declare const getSecretOutput: (props: GetVaultItemProps) => Output<import("@pulumi/pulumi").UnwrappedObject<import("@azure/keyvault-secrets").KeyVaultSecret> | undefined>;
|
|
19
|
+
interface GetSecretsType<T extends Record<string, string>> extends Required<WithVaultInfo> {
|
|
23
20
|
names: T;
|
|
24
|
-
}
|
|
21
|
+
}
|
|
22
|
+
export declare const getSecrets: <T extends Record<string, string>>({ names, ...others }: GetSecretsType<T>) => Record<keyof T, Output<string>>;
|
|
25
23
|
export {};
|
|
26
|
-
/** Convert VaultId to VaultInfo */
|
package/KeyVault/Helper.js
CHANGED
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getSecrets = exports.getSecret = exports.addEncryptKey = exports.getVaultItemName = void 0;
|
|
29
|
+
exports.getSecrets = exports.getSecretOutput = exports.getSecret = exports.addEncryptKey = exports.getVaultItemName = void 0;
|
|
7
30
|
const pulumi_1 = require("@pulumi/pulumi");
|
|
8
31
|
const KeyVaultBase_1 = __importDefault(require("@drunk-pulumi/azure-providers/AzBase/KeyVaultBase"));
|
|
9
32
|
const azure_providers_1 = require("@drunk-pulumi/azure-providers");
|
|
10
33
|
const Common_1 = require("../Common");
|
|
34
|
+
const env = __importStar(require("../envHelper"));
|
|
11
35
|
/** Get Vault Secret Name. Remove the stack name and replace all _ with - then lower cases. */
|
|
12
36
|
const getVaultItemName = (name, currentStack = Common_1.stack) => {
|
|
13
37
|
name = name
|
|
@@ -24,83 +48,33 @@ const addEncryptKey = (name, vaultInfo, keySize = 4096) => {
|
|
|
24
48
|
vaultName: vaultInfo.name,
|
|
25
49
|
key: { keySize },
|
|
26
50
|
}, { retainOnDelete: true });
|
|
51
|
+
const urlWithoutVersion = (0, pulumi_1.output)([key.version, key.id]).apply(([v, id]) => id.replace(`/${v}`, ''));
|
|
27
52
|
return {
|
|
28
53
|
keyName: key.name,
|
|
29
54
|
keyVaultUri: key.vaultUrl,
|
|
30
55
|
keyVersion: key.version,
|
|
31
56
|
url: key.id,
|
|
32
|
-
urlWithoutVersion
|
|
57
|
+
urlWithoutVersion,
|
|
33
58
|
};
|
|
34
59
|
};
|
|
35
60
|
exports.addEncryptKey = addEncryptKey;
|
|
36
|
-
/** Get Key */
|
|
37
|
-
// export const getKey = async ({
|
|
38
|
-
// name,
|
|
39
|
-
// version,
|
|
40
|
-
// vaultInfo,
|
|
41
|
-
// nameFormatted,
|
|
42
|
-
// }: GetVaultItemProps) => {
|
|
43
|
-
// const n = nameFormatted ? name : getSecretName(name);
|
|
44
|
-
// const client = getKeyVaultBase(vaultInfo.name);
|
|
45
|
-
// return client.getKey(n, version);
|
|
46
|
-
// };
|
|
47
|
-
// interface EncryptionPropertiesArgs {
|
|
48
|
-
// keySource: 'Microsoft.KeyVault';
|
|
49
|
-
// keyVaultProperties: Input<KeyVaultPropertiesResults>;
|
|
50
|
-
// }
|
|
51
|
-
/** Get or create encryption Key */
|
|
52
|
-
// const getEncryptionKey = async ({
|
|
53
|
-
// name,
|
|
54
|
-
// vaultInfo,
|
|
55
|
-
// }: Required<NamedWithVaultType>): Promise<KeyVaultPropertiesResults> => {
|
|
56
|
-
// const n = `${name}-encrypt-key`;
|
|
57
|
-
// const key = await getKeyVaultBase(vaultInfo.name).getOrCreateKey(n);
|
|
58
|
-
// return {
|
|
59
|
-
// keyName: key!.properties.name,
|
|
60
|
-
// keyVaultUri: key!.properties.vaultUrl,
|
|
61
|
-
// keyVersion: key!.properties.version,
|
|
62
|
-
// url: `${key!.properties.vaultUrl}/keys/${key!.properties.name}/${key!.properties.version}`,
|
|
63
|
-
// };
|
|
64
|
-
// };
|
|
65
|
-
// export const getEncryptionKeyOutput = ({
|
|
66
|
-
// name,
|
|
67
|
-
// vaultInfo,
|
|
68
|
-
// }: NamedWithVaultType): Output<KeyVaultPropertiesResults> | undefined => {
|
|
69
|
-
// if (!vaultInfo) return undefined;
|
|
70
|
-
// return output(getEncryptionKey({ name, vaultInfo }));
|
|
71
|
-
// };
|
|
72
61
|
/** Get Secret */
|
|
73
|
-
const getSecret = async ({ name, version, vaultInfo,
|
|
74
|
-
const n =
|
|
62
|
+
const getSecret = async ({ name, version, vaultInfo, }) => {
|
|
63
|
+
const n = env.DPA_VAULT_DISABLE_FORMAT_NAME ? name : (0, exports.getVaultItemName)(name);
|
|
75
64
|
const client = (0, KeyVaultBase_1.default)(vaultInfo.name);
|
|
76
65
|
return client.getSecret(n, version);
|
|
77
66
|
};
|
|
78
67
|
exports.getSecret = getSecret;
|
|
79
|
-
const
|
|
68
|
+
const getSecretOutput = (props) => (0, pulumi_1.output)((0, exports.getSecret)(props));
|
|
69
|
+
exports.getSecretOutput = getSecretOutput;
|
|
70
|
+
const getSecrets = ({ names, ...others }) => {
|
|
80
71
|
const rs = {};
|
|
81
72
|
Object.keys(names).forEach((k) => {
|
|
82
73
|
const name = names[k];
|
|
83
|
-
const item = (0, pulumi_1.output)((0, exports.getSecret)({ name,
|
|
84
|
-
rs[k] = item
|
|
74
|
+
const item = (0, pulumi_1.output)((0, exports.getSecret)({ name, ...others }));
|
|
75
|
+
rs[k] = item.apply((i) => i?.value ?? '');
|
|
85
76
|
});
|
|
86
77
|
return rs;
|
|
87
78
|
};
|
|
88
79
|
exports.getSecrets = getSecrets;
|
|
89
|
-
|
|
90
|
-
// name: string;
|
|
91
|
-
// /** The version may be empty if it is not found in the url */
|
|
92
|
-
// version: string;
|
|
93
|
-
// keyIdentityUrl: string;
|
|
94
|
-
// vaultUrl: string;
|
|
95
|
-
// }
|
|
96
|
-
/** Convert VaultId to VaultInfo */
|
|
97
|
-
// export const parseKeyUrl = (keyUrl: string): KeyResult => {
|
|
98
|
-
// const splits = keyUrl.split('/');
|
|
99
|
-
// return {
|
|
100
|
-
// keyIdentityUrl: keyUrl,
|
|
101
|
-
// name: splits[4],
|
|
102
|
-
// version: splits.length > 4 ? splits[5] : '',
|
|
103
|
-
// vaultUrl: `https://${splits[2]}`,
|
|
104
|
-
// };
|
|
105
|
-
// };
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0tleVZhdWx0L0hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FBZ0Q7QUFFaEQscUdBQWdGO0FBQ2hGLG1FQUFpRTtBQUNqRSxzQ0FBZ0U7QUFFaEUsOEZBQThGO0FBQ3ZGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsSUFBWSxFQUNaLGVBQXVCLGNBQUssRUFDNUIsRUFBRTtJQUNGLElBQUksR0FBRyxJQUFJO1NBQ1IsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxtREFBbUQ7U0FDOUYsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyx3Q0FBd0M7U0FDakUsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyw2Q0FBNkM7U0FDakUsV0FBVyxFQUFFLENBQUMsQ0FBQyxrQ0FBa0M7SUFFcEQsT0FBTyxJQUFBLHFDQUE0QixFQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQVhXLFFBQUEsZ0JBQWdCLG9CQVczQjtBQXlCSyxNQUFNLGFBQWEsR0FBRyxDQUMzQixJQUFZLEVBQ1osU0FBdUIsRUFDdkIsVUFBOEIsSUFBSSxFQUNQLEVBQUU7SUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxrQ0FBZ0IsQ0FDOUIsR0FBRyxJQUFJLGFBQWEsRUFDcEI7UUFDRSxJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQWE7UUFDMUIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ3pCLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRTtLQUNqQixFQUNELEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUN6QixDQUFDO0lBRUYsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNqQixXQUFXLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDekIs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
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0tleVZhdWx0L0hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFnRDtBQUVoRCxxR0FBZ0Y7QUFDaEYsbUVBQWlFO0FBQ2pFLHNDQUFnRTtBQUNoRSxrREFBb0M7QUFFcEMsOEZBQThGO0FBQ3ZGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsZUFBdUIsY0FBSyxFQUFFLEVBQUU7SUFDN0UsSUFBSSxHQUFHLElBQUk7U0FDUixPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLG1EQUFtRDtTQUM5RixPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLHdDQUF3QztTQUNqRSxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLDZDQUE2QztTQUNqRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLGtDQUFrQztJQUVwRCxPQUFPLElBQUEscUNBQTRCLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBUlcsUUFBQSxnQkFBZ0Isb0JBUTNCO0FBY0ssTUFBTSxhQUFhLEdBQUcsQ0FDM0IsSUFBWSxFQUNaLFNBQXVCLEVBQ3ZCLFVBQThCLElBQUksRUFDUCxFQUFFO0lBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksa0NBQWdCLENBQzlCLEdBQUcsSUFBSSxhQUFhLEVBQ3BCO1FBQ0UsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFhO1FBQzFCLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUN6QixHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUU7S0FDakIsRUFDRCxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FDekIsQ0FBQztJQUVGLE1BQU0saUJBQWlCLEdBQW1CLElBQUEsZUFBTSxFQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQzNFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FDckMsQ0FBQztJQUVGLE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDakIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3pCLFVBQVUsRUFBRSxHQUFHLENBQUMsT0FBTztRQUN2QixHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDWCxpQkFBaUI7S0FDbEIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQTFCVyxRQUFBLGFBQWEsaUJBMEJ4QjtBQUVGLGlCQUFpQjtBQUNWLE1BQU0sU0FBUyxHQUFHLEtBQUssRUFBRSxFQUM5QixJQUFJLEVBQ0osT0FBTyxFQUNQLFNBQVMsR0FDUyxFQUFFLEVBQUU7SUFDdEIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUEsd0JBQWdCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQkFBZSxFQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQVJXLFFBQUEsU0FBUyxhQVFwQjtBQUVLLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQzFELElBQUEsZUFBTSxFQUFDLElBQUEsaUJBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRGQsUUFBQSxlQUFlLG1CQUNEO0FBT3BCLE1BQU0sVUFBVSxHQUFHLENBQW1DLEVBQzNELEtBQUssRUFDTCxHQUFHLE1BQU0sRUFDUyxFQUFtQyxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxHQUFtQyxFQUFFLENBQUM7SUFFOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUMvQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBQSxlQUFNLEVBQUMsSUFBQSxpQkFBUyxFQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFxQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQWJXLFFBQUEsVUFBVSxjQWFyQiJ9
|
package/Logs/AppInsight.js
CHANGED
|
@@ -56,7 +56,6 @@ exports.default = ({ group, name, dailyCapGb = 0.023, immediatePurgeDataOn30Days
|
|
|
56
56
|
if (vaultInfo) {
|
|
57
57
|
(0, CustomHelper_1.addCustomSecret)({
|
|
58
58
|
name,
|
|
59
|
-
formattedName: true,
|
|
60
59
|
value: appInsight.instrumentationKey,
|
|
61
60
|
vaultInfo,
|
|
62
61
|
contentType: 'AppInsight',
|
|
@@ -73,4 +72,4 @@ const getAppInsightKey = async ({ resourceInfo, vaultInfo, }) => {
|
|
|
73
72
|
return key?.value ?? '';
|
|
74
73
|
};
|
|
75
74
|
exports.getAppInsightKey = getAppInsightKey;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwSW5zaWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Mb2dzL0FwcEluc2lnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBK0M7QUFNL0MsK0NBQStDO0FBQy9DLHNDQUFtQztBQUNuQywyREFBMkQ7QUFVM0Qsa0JBQWUsQ0FBQyxFQUNkLEtBQUssRUFDTCxJQUFJLEVBQ0osVUFBVSxHQUFHLEtBQUssRUFDbEIsMEJBQTBCLEdBQUcsSUFBSSxFQUNqQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQ2pFLG1CQUFtQixFQUNuQixTQUFTLEdBQ0gsRUFBRSxFQUFFO0lBQ1YsSUFBSSxHQUFHLGVBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV0QyxNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtRQUNyRCxZQUFZLEVBQUUsSUFBSTtRQUNsQixHQUFHLEtBQUs7UUFFUixJQUFJLEVBQUUsS0FBSztRQUNYLGdCQUFnQixFQUFFLElBQUk7UUFDdEIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsUUFBUSxFQUFFLFdBQVc7UUFFckIsdUNBQXVDO1FBQ3ZDLGVBQWUsRUFBRSxFQUFFO1FBRW5CLDBCQUEwQjtRQUMxQixhQUFhO1FBRWIsZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixtQkFBbUI7S0FDcEIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLDhCQUE4QixDQUNoRCxHQUFHLElBQUksd0JBQXdCLEVBQy9CO1FBQ0Usc0JBQXNCLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxnREFBZ0Q7UUFDbkYsYUFBYSxFQUFFO1lBQ2IsR0FBRyxFQUFFLFVBQVU7WUFDZiw4QkFBOEIsRUFBRSxJQUFJO1NBQ3JDO1FBQ0QsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtRQUMxQyxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUk7S0FDOUIsQ0FDRixDQUFDO0lBRUYsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUEsOEJBQWUsRUFBQztZQUNkLElBQUk7WUFDSixLQUFLLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtZQUNwQyxTQUFTO1lBQ1QsV0FBVyxFQUFFLFlBQVk7WUFDekIsU0FBUyxFQUFFLFVBQVU7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUVLLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEVBQ3JDLFlBQVksRUFDWixTQUFTLEdBSVYsRUFBbUIsRUFBRTtJQUNwQixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUEsa0JBQVMsRUFBQztRQUMxQixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7UUFDdkIsU0FBUztLQUNWLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBWlcsUUFBQSxnQkFBZ0Isb0JBWTNCIn0=
|
package/Logs/Helpers.js
CHANGED
|
@@ -79,7 +79,6 @@ const getLogWpSecrets = ({ workspaceName, vaultInfo, }) => {
|
|
|
79
79
|
const primarySharedKey = `${workspaceName}-primary`;
|
|
80
80
|
const secondarySharedKey = `${workspaceName}-secondary`;
|
|
81
81
|
return (0, Helper_1.getSecrets)({
|
|
82
|
-
nameFormatted: true,
|
|
83
82
|
vaultInfo,
|
|
84
83
|
names: { workspaceId, primarySharedKey, secondarySharedKey },
|
|
85
84
|
});
|
|
@@ -93,7 +92,6 @@ const getLogWpInfo = ({ name, group, vaultInfo, }) => {
|
|
|
93
92
|
return { name: n, group, id, ...secrets };
|
|
94
93
|
};
|
|
95
94
|
const getAppInsightSecrets = ({ insightName, vaultInfo, }) => (0, Helper_1.getSecrets)({
|
|
96
|
-
nameFormatted: true,
|
|
97
95
|
vaultInfo,
|
|
98
96
|
names: { instrumentationKey: insightName },
|
|
99
97
|
});
|
|
@@ -126,4 +124,4 @@ const getLogInfo = (groupName, vaultInfo = undefined) => {
|
|
|
126
124
|
return { logWp, logStorage, appInsight };
|
|
127
125
|
};
|
|
128
126
|
exports.getLogInfo = getLogInfo;
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Mb2dzL0hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBK0M7QUFDL0MsMkNBQW9EO0FBQ3BELHNDQUttQjtBQUNuQiwrQ0FBZ0Q7QUFDaEQsOENBQW1EO0FBYTVDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUMvQixJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxpQkFBaUIsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUNsQyxjQUFjLEVBQ2QsU0FBUyxHQUNPLEVBQUUsRUFBRTtJQUNwQiw0Q0FBNEM7SUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FDWCxtQkFBbUIsSUFBSSw0Q0FBNEMsQ0FDcEUsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxrQ0FBa0M7SUFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUMvQixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDO0lBQ3pCLE9BQU8sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUMxQyxDQUFDLEVBQ0Q7UUFDRSxJQUFJLEVBQUUsQ0FBQztRQUNQLFdBQVcsRUFBRSxnQkFBZ0I7UUFDN0IsMkJBQTJCLEVBQUUsa0JBQWtCO1FBRS9DLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFD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
|
package/Logs/LogAnalytics.js
CHANGED
|
@@ -59,7 +59,6 @@ exports.default = ({ name, group, sku = insights.WorkspaceSkuNameEnum.Free, dail
|
|
|
59
59
|
});
|
|
60
60
|
(0, CustomHelper_1.addCustomSecrets)({
|
|
61
61
|
contentType: 'Log Analytics',
|
|
62
|
-
formattedName: true,
|
|
63
62
|
vaultInfo,
|
|
64
63
|
items: [
|
|
65
64
|
{ name: workspaceIdKeyName, value: id },
|
|
@@ -77,4 +76,4 @@ exports.default = ({ name, group, sku = insights.WorkspaceSkuNameEnum.Free, dail
|
|
|
77
76
|
}
|
|
78
77
|
return log;
|
|
79
78
|
};
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nQW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0xvZ3MvTG9nQW5hbHl0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtRkFBcUU7QUFFckUsc0NBQW1DO0FBQ25DLDJEQUE0RDtBQU81RCxrQkFBZSxDQUFDLEVBQ2QsSUFBSSxFQUNKLEtBQUssRUFDTCxHQUFHLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFDeEMsWUFBWSxHQUFHLEtBQUssRUFDcEIsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEVBQ2IsU0FBUyxHQUNILEVBQUUsRUFBRTtJQUNWLElBQUksR0FBRyxlQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQztJQUN4QyxNQUFNLGNBQWMsR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDO0lBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxJQUFJLFlBQVksQ0FBQztJQUU3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQ2hDLElBQUksRUFDSjtRQUNFLGFBQWEsRUFBRSxJQUFJO1FBQ25CLEdBQUcsS0FBSztRQUVSLCtCQUErQixFQUFFLFNBQVM7UUFDMUMsMkJBQTJCLEVBQUUsU0FBUztRQUN0QyxRQUFRLEVBQUU7WUFDUiwyQ0FBMkM7WUFDM0MseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQixzRUFBc0U7WUFDdEUsMEJBQTBCLEVBQUUsSUFBSTtTQUNqQztRQUNELGdCQUFnQixFQUNkLEdBQUcsS0FBSyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSTtZQUN4QyxDQUFDLENBQUMsU0FBUztZQUNYLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLGdDQUFnQztRQUV4RCxlQUFlLEVBQUUsR0FBRyxLQUFLLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLHFCQUFxQjtRQUMzRixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0tBQ25CLEVBQ0QsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQzdCLENBQUM7SUFFRixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU87WUFFaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxhQUFhLEVBQUUsSUFBSTtnQkFDbkIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjthQUMzQyxDQUFDLENBQUM7WUFFSCxJQUFBLCtCQUFnQixFQUFDO2dCQUNmLFdBQVcsRUFBRSxlQUFlO2dCQUM1QixTQUFTO2dCQUNULEtBQUssRUFBRTtvQkFDTCxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO29CQUN2Qzt3QkFDRSxJQUFJLEVBQUUsY0FBYzt3QkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBaUI7cUJBQzlCO29CQUNEO3dCQUNFLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQW1CO3FCQUNoQztpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
package/README.md
CHANGED
|
@@ -1,48 +1,56 @@
|
|
|
1
|
-
#
|
|
1
|
+
# [Drunk Pulumi Azure](https://baoduy.github.io/drunk-pulumi-azure/)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Welcome to the Drunk Pulumi Azure project! This project provides a set of tools and utilities to help you manage your Azure resources using Pulumi.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Overview
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
2. Create a pulumi account and link to the environment.
|
|
9
|
-
3. Create a "\_Config" folder to store your custom configuration.
|
|
7
|
+
This project includes various modules and components to simplify the management of Azure resources. It leverages Pulumi to provide infrastructure as code, making it easier to define, deploy, and manage your cloud infrastructure.
|
|
10
8
|
|
|
11
|
-
##
|
|
9
|
+
## Usage
|
|
12
10
|
|
|
13
|
-
You
|
|
14
|
-
There are two ways to config your organization code.
|
|
11
|
+
You can use the modules and components provided in this project to manage your Azure resources. Here are some examples of what you can do:
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
- Create and manage Azure Virtual Machines
|
|
14
|
+
- Set up and configure Azure Key Vaults
|
|
15
|
+
- Manage Azure Storage Accounts
|
|
16
|
+
- Configure Azure Application Insights
|
|
17
|
+
- Set up Azure Active Directory identities and roles
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
For detailed documentation and examples, please visit the [Drunk Pulumi Azure Documentation](https://baoduy.github.io/drunk-pulumi-azure/).
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
## Modules
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
This project includes the following modules:
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
- **Common**: Common utilities and helpers for managing Azure resources.
|
|
26
|
+
- **VM**: Tools for managing Azure Virtual Machines.
|
|
27
|
+
- **KeyVault**: Utilities for managing Azure Key Vaults.
|
|
28
|
+
- **Storage**: Tools for managing Azure Storage Accounts.
|
|
29
|
+
- **Logs**: Utilities for managing Azure Application Insights and Log Analytics.
|
|
30
|
+
- **AzAd**: Tools for managing Azure Active Directory identities and roles.
|
|
31
|
+
- **Builder**: Builders for creating and managing various Azure resources.
|
|
26
32
|
|
|
27
|
-
## Upgrading Issues
|
|
28
33
|
|
|
29
|
-
|
|
34
|
+
## Environment Configuration
|
|
30
35
|
|
|
31
|
-
|
|
36
|
+
The project uses environment variables to configure various settings. Here are some of the key environment variables:
|
|
32
37
|
|
|
33
|
-
-
|
|
34
|
-
|
|
38
|
+
- `PULUMI_NODEJS_DRY_RUN`: Indicates if the Pulumi run is a dry run.
|
|
39
|
+
- `PULUMI_NODEJS_ORGANIZATION`: The Pulumi organization name.
|
|
40
|
+
- `PULUMI_NODEJS_PROJECT`: The Pulumi project name.
|
|
41
|
+
- `PULUMI_NODEJS_STACK`: The Pulumi stack name.
|
|
35
42
|
|
|
36
|
-
|
|
37
|
-
$ pulumi config set azure-native:clientSecret <clientSecret> --secret
|
|
38
|
-
$ pulumi config set azure-native:tenantId <tenantID>
|
|
39
|
-
$ pulumi config set azure-native:subscriptionId <subscriptionId>
|
|
43
|
+
## Contributing
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
We welcome contributions to this project! If you have any ideas, suggestions, or bug reports, please open an issue or submit a pull request.
|
|
42
46
|
|
|
43
|
-
|
|
47
|
+
## License
|
|
44
48
|
|
|
45
|
-
|
|
49
|
+
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
## Acknowledgements
|
|
52
|
+
|
|
53
|
+
This project is maintained by the Drunk Pulumi Azure team. We would like to thank all the contributors and users who have helped make this project better.
|
|
54
|
+
|
|
55
|
+
For more information, please visit the [Drunk Pulumi Azure Documentation](https://baoduy.github.io/drunk-pulumi-azure/).
|
|
56
|
+
```
|