@drunk-pulumi/azure-components 0.0.6
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/PulumiPlugin.yaml +1 -0
- package/README.md +1 -0
- package/ResourceBuilder.d.ts +54 -0
- package/ResourceBuilder.js +71 -0
- package/aks/AzKubernetes.d.ts +55 -0
- package/aks/AzKubernetes.js +288 -0
- package/aks/ContainerRegistry.d.ts +19 -0
- package/aks/ContainerRegistry.js +119 -0
- package/aks/helpers.d.ts +6 -0
- package/aks/helpers.js +52 -0
- package/aks/index.d.ts +3 -0
- package/aks/index.js +43 -0
- package/app/AppCert.d.ts +15 -0
- package/app/AppCert.js +74 -0
- package/app/AppConfig.d.ts +18 -0
- package/app/AppConfig.js +124 -0
- package/app/AppService.d.ts +69 -0
- package/app/AppService.js +122 -0
- package/app/IoTHub.d.ts +15 -0
- package/app/IoTHub.js +80 -0
- package/app/LogicApp.d.ts +19 -0
- package/app/LogicApp.js +77 -0
- package/app/SignalR.d.ts +45 -0
- package/app/SignalR.js +125 -0
- package/app/index.d.ts +6 -0
- package/app/index.js +23 -0
- package/azAd/AppRegistration.d.ts +52 -0
- package/azAd/AppRegistration.js +165 -0
- package/azAd/AzRole.d.ts +14 -0
- package/azAd/AzRole.js +72 -0
- package/azAd/CustomRoles.d.ts +10 -0
- package/azAd/CustomRoles.js +73 -0
- package/azAd/GroupRole.d.ts +29 -0
- package/azAd/GroupRole.js +107 -0
- package/azAd/RoleAssignment.d.ts +15 -0
- package/azAd/RoleAssignment.js +63 -0
- package/azAd/UserAssignedIdentity.d.ts +17 -0
- package/azAd/UserAssignedIdentity.js +76 -0
- package/azAd/helpers/graphBuiltIn.d.ts +14 -0
- package/azAd/helpers/graphBuiltIn.js +5134 -0
- package/azAd/helpers/index.d.ts +3 -0
- package/azAd/helpers/index.js +39 -0
- package/azAd/helpers/rolesBuiltIn.d.ts +90 -0
- package/azAd/helpers/rolesBuiltIn.js +18601 -0
- package/azAd/helpers/rsRoleDefinition.d.ts +62 -0
- package/azAd/helpers/rsRoleDefinition.js +120 -0
- package/azAd/index.d.ts +7 -0
- package/azAd/index.js +24 -0
- package/base/BaseComponent.d.ts +53 -0
- package/base/BaseComponent.js +98 -0
- package/base/BaseResourceComponent.d.ts +108 -0
- package/base/BaseResourceComponent.js +180 -0
- package/base/helpers.d.ts +12 -0
- package/base/helpers.js +29 -0
- package/base/index.d.ts +3 -0
- package/base/index.js +43 -0
- package/common/PGPGenerator.d.ts +26 -0
- package/common/PGPGenerator.js +72 -0
- package/common/RandomPassword.d.ts +21 -0
- package/common/RandomPassword.js +84 -0
- package/common/RandomString.d.ts +20 -0
- package/common/RandomString.js +74 -0
- package/common/ResourceLocker.d.ts +9 -0
- package/common/ResourceLocker.js +52 -0
- package/common/RsGroup.d.ts +20 -0
- package/common/RsGroup.js +85 -0
- package/common/SshGenerator.d.ts +17 -0
- package/common/SshGenerator.js +66 -0
- package/common/index.d.ts +5 -0
- package/common/index.js +22 -0
- package/database/AzSql.d.ts +71 -0
- package/database/AzSql.js +283 -0
- package/database/MySql.d.ts +35 -0
- package/database/MySql.js +181 -0
- package/database/Postgres.d.ts +32 -0
- package/database/Postgres.js +171 -0
- package/database/Redis.d.ts +26 -0
- package/database/Redis.js +125 -0
- package/database/helpers.d.ts +7 -0
- package/database/helpers.js +52 -0
- package/database/index.d.ts +5 -0
- package/database/index.js +45 -0
- package/helpers/Location/LocationBuiltIn.d.ts +6 -0
- package/helpers/Location/LocationBuiltIn.js +493 -0
- package/helpers/Location/index.d.ts +3 -0
- package/helpers/Location/index.js +25 -0
- package/helpers/autoTags.d.ts +1 -0
- package/helpers/autoTags.js +27 -0
- package/helpers/azureEnv.d.ts +21 -0
- package/helpers/azureEnv.js +102 -0
- package/helpers/configHelper.d.ts +5 -0
- package/helpers/configHelper.js +54 -0
- package/helpers/index.d.ts +4 -0
- package/helpers/index.js +41 -0
- package/helpers/rsHelpers.d.ts +18 -0
- package/helpers/rsHelpers.js +92 -0
- package/helpers/stackEnv.d.ts +4 -0
- package/helpers/stackEnv.js +54 -0
- package/index.d.ts +14 -0
- package/index.js +53 -0
- package/logs/Logs.d.ts +48 -0
- package/logs/Logs.js +154 -0
- package/logs/helpers.d.ts +1 -0
- package/logs/helpers.js +38 -0
- package/logs/index.d.ts +1 -0
- package/logs/index.js +18 -0
- package/package.json +34 -0
- package/services/Automation.d.ts +16 -0
- package/services/Automation.js +85 -0
- package/services/AzSearch.d.ts +20 -0
- package/services/AzSearch.js +113 -0
- package/services/ServiceBus.d.ts +42 -0
- package/services/ServiceBus.js +256 -0
- package/services/index.d.ts +3 -0
- package/services/index.js +20 -0
- package/storage/StorageAccount.d.ts +53 -0
- package/storage/StorageAccount.js +261 -0
- package/storage/helpers.d.ts +24 -0
- package/storage/helpers.js +89 -0
- package/storage/index.d.ts +2 -0
- package/storage/index.js +42 -0
- package/types.d.ts +125 -0
- package/types.js +3 -0
- package/vault/EncryptionKey.d.ts +21 -0
- package/vault/EncryptionKey.js +73 -0
- package/vault/KeyVault.d.ts +31 -0
- package/vault/KeyVault.js +110 -0
- package/vault/VaultSecret.d.ts +23 -0
- package/vault/VaultSecret.js +72 -0
- package/vault/VaultSecrets.d.ts +25 -0
- package/vault/VaultSecrets.js +31 -0
- package/vault/helpers.d.ts +1 -0
- package/vault/helpers.js +13 -0
- package/vault/index.d.ts +5 -0
- package/vault/index.js +45 -0
- package/vm/DiskEncryptionSet.d.ts +16 -0
- package/vm/DiskEncryptionSet.js +74 -0
- package/vm/VirtualMachine.d.ts +45 -0
- package/vm/VirtualMachine.js +192 -0
- package/vm/helpers.d.ts +16 -0
- package/vm/helpers.js +15 -0
- package/vm/index.d.ts +3 -0
- package/vm/index.js +43 -0
- package/vnet/AzCdn.d.ts +44 -0
- package/vnet/AzCdn.js +276 -0
- package/vnet/Basion.d.ts +19 -0
- package/vnet/Basion.js +78 -0
- package/vnet/DnsZone.d.ts +36 -0
- package/vnet/DnsZone.js +113 -0
- package/vnet/Firewall.d.ts +53 -0
- package/vnet/Firewall.js +136 -0
- package/vnet/FirewallPolicies/FirewallPolicyBuilder.d.ts +18 -0
- package/vnet/FirewallPolicies/FirewallPolicyBuilder.js +91 -0
- package/vnet/FirewallPolicies/commonPolicies.d.ts +10 -0
- package/vnet/FirewallPolicies/commonPolicies.js +55 -0
- package/vnet/FirewallPolicies/index.d.ts +0 -0
- package/vnet/FirewallPolicies/index.js +2 -0
- package/vnet/IpAddresses.d.ts +36 -0
- package/vnet/IpAddresses.js +74 -0
- package/vnet/NetworkPeering.d.ts +21 -0
- package/vnet/NetworkPeering.js +85 -0
- package/vnet/PrivateDnsZone.d.ts +38 -0
- package/vnet/PrivateDnsZone.js +111 -0
- package/vnet/PrivateEndpoint.d.ts +43 -0
- package/vnet/PrivateEndpoint.js +181 -0
- package/vnet/RouteTable.d.ts +22 -0
- package/vnet/RouteTable.js +75 -0
- package/vnet/VirtualNetwork.d.ts +99 -0
- package/vnet/VirtualNetwork.js +311 -0
- package/vnet/VpnGateway.d.ts +18 -0
- package/vnet/VpnGateway.js +90 -0
- package/vnet/helpers.d.ts +16 -0
- package/vnet/helpers.js +47 -0
- package/vnet/index.d.ts +13 -0
- package/vnet/index.js +53 -0
- package/vnet/securityRules/SecurityRuleBuilder.d.ts +12 -0
- package/vnet/securityRules/SecurityRuleBuilder.js +55 -0
- package/vnet/securityRules/commonRules.d.ts +9 -0
- package/vnet/securityRules/commonRules.js +94 -0
- package/vnet/securityRules/index.d.ts +2 -0
- package/vnet/securityRules/index.js +19 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats the component resource type to ensure it follows the drunk-pulumi naming convention
|
|
3
|
+
* @param type - The resource type string
|
|
4
|
+
* @returns Formatted resource type string with drunk-pulumi prefix if not already present
|
|
5
|
+
*/
|
|
6
|
+
export declare function getComponentResourceType(type: string): string;
|
|
7
|
+
export declare function arrayToMap<T extends {
|
|
8
|
+
[key: string | number]: any;
|
|
9
|
+
}>(array: T[], key: keyof T, transformer?: (value: T) => any): {
|
|
10
|
+
[key: string | number]: T;
|
|
11
|
+
};
|
|
12
|
+
export declare function recordMap<Tin extends any, Tout>(records: Record<string, Tin>, transform: (value: Tin) => Tout): Record<string, Tout>;
|
package/base/helpers.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getComponentResourceType = getComponentResourceType;
|
|
4
|
+
exports.arrayToMap = arrayToMap;
|
|
5
|
+
exports.recordMap = recordMap;
|
|
6
|
+
/**
|
|
7
|
+
* Formats the component resource type to ensure it follows the drunk-pulumi naming convention
|
|
8
|
+
* @param type - The resource type string
|
|
9
|
+
* @returns Formatted resource type string with drunk-pulumi prefix if not already present
|
|
10
|
+
*/
|
|
11
|
+
function getComponentResourceType(type) {
|
|
12
|
+
return type.includes('drunk-pulumi') ? type : `drunk:pulumi:${type}`;
|
|
13
|
+
}
|
|
14
|
+
function arrayToMap(array, key, transformer) {
|
|
15
|
+
return array.reduce((acc, curr) => {
|
|
16
|
+
const keyValue = curr[key];
|
|
17
|
+
if (keyValue) {
|
|
18
|
+
acc[keyValue] = transformer ? transformer(curr) : curr;
|
|
19
|
+
}
|
|
20
|
+
return acc;
|
|
21
|
+
}, {});
|
|
22
|
+
}
|
|
23
|
+
function recordMap(records, transform) {
|
|
24
|
+
return Object.entries(records).reduce((acc, [name, item]) => ({
|
|
25
|
+
...acc,
|
|
26
|
+
[name]: transform(item),
|
|
27
|
+
}), {});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSw0REFFQztBQUVELGdDQVlDO0FBRUQsOEJBV0M7QUFsQ0Q7Ozs7R0FJRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLElBQVk7SUFDbkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztBQUN2RSxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUN4QixLQUFVLEVBQ1YsR0FBWSxFQUNaLFdBQStCO0lBRS9CLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUEwQixDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQWdCLFNBQVMsQ0FDdkIsT0FBNEIsRUFDNUIsU0FBK0I7SUFFL0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDbkMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEIsR0FBRyxHQUFHO1FBQ04sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO0tBQ3hCLENBQUMsRUFDRixFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUMifQ==
|
package/base/index.d.ts
ADDED
package/base/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.baseHelpers = void 0;
|
|
40
|
+
__exportStar(require("./BaseComponent"), exports);
|
|
41
|
+
__exportStar(require("./BaseResourceComponent"), exports);
|
|
42
|
+
exports.baseHelpers = __importStar(require("./helpers"));
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFzZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBZ0M7QUFDaEMsMERBQXdDO0FBQ3hDLHlEQUF5QyJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
2
|
+
import { BaseArgs, BaseResourceComponent } from '../base/BaseResourceComponent';
|
|
3
|
+
type UserInfo = {
|
|
4
|
+
name: string;
|
|
5
|
+
email: string;
|
|
6
|
+
};
|
|
7
|
+
export interface PGPGeneratorArgs extends BaseArgs {
|
|
8
|
+
user: pulumi.Input<UserInfo>;
|
|
9
|
+
passphrase?: pulumi.Input<string>;
|
|
10
|
+
type?: 'ecc' | 'rsa';
|
|
11
|
+
validDays?: pulumi.Input<number>;
|
|
12
|
+
}
|
|
13
|
+
export declare class PGPGenerator extends BaseResourceComponent<PGPGeneratorArgs> {
|
|
14
|
+
readonly publicKey: pulumi.Output<string>;
|
|
15
|
+
readonly privateKey: pulumi.Output<string>;
|
|
16
|
+
readonly passphrase?: pulumi.Output<string>;
|
|
17
|
+
readonly revocationCertificate: pulumi.Output<string>;
|
|
18
|
+
constructor(name: string, args: PGPGeneratorArgs, opts?: pulumi.ComponentResourceOptions);
|
|
19
|
+
getOutputs(): {
|
|
20
|
+
publicKey: pulumi.Output<string>;
|
|
21
|
+
privateKey: pulumi.Output<string>;
|
|
22
|
+
passphrase: pulumi.Output<string> | undefined;
|
|
23
|
+
revocationCertificate: pulumi.Output<string>;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PGPGenerator = void 0;
|
|
37
|
+
const azure_providers_1 = require("@drunk-pulumi/azure-providers");
|
|
38
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
39
|
+
const BaseResourceComponent_1 = require("../base/BaseResourceComponent");
|
|
40
|
+
class PGPGenerator extends BaseResourceComponent_1.BaseResourceComponent {
|
|
41
|
+
publicKey;
|
|
42
|
+
privateKey;
|
|
43
|
+
passphrase;
|
|
44
|
+
revocationCertificate;
|
|
45
|
+
constructor(name, args, opts) {
|
|
46
|
+
super('PGPGenerator', name, args, opts);
|
|
47
|
+
const pgp = new azure_providers_1.PGPResource(name, args, { ...opts, parent: this });
|
|
48
|
+
this.publicKey = pgp.publicKey;
|
|
49
|
+
this.privateKey = pgp.privateKey;
|
|
50
|
+
this.revocationCertificate = pgp.revocationCertificate;
|
|
51
|
+
if (args.passphrase)
|
|
52
|
+
this.passphrase = pulumi.secret(args.passphrase);
|
|
53
|
+
this.addSecrets({
|
|
54
|
+
publicKey: pgp.publicKey,
|
|
55
|
+
privateKey: pgp.privateKey,
|
|
56
|
+
revocationCertificate: pgp.revocationCertificate,
|
|
57
|
+
});
|
|
58
|
+
if (args.passphrase)
|
|
59
|
+
this.addSecrets({ passphrase: args.passphrase });
|
|
60
|
+
this.registerOutputs();
|
|
61
|
+
}
|
|
62
|
+
getOutputs() {
|
|
63
|
+
return {
|
|
64
|
+
publicKey: this.publicKey,
|
|
65
|
+
privateKey: this.privateKey,
|
|
66
|
+
passphrase: this.passphrase,
|
|
67
|
+
revocationCertificate: this.revocationCertificate,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.PGPGenerator = PGPGenerator;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUEdQR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9QR1BHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUVBQTREO0FBQzVELHVEQUF5QztBQUN6Qyx5RUFBZ0Y7QUFXaEYsTUFBYSxZQUFhLFNBQVEsNkNBQXVDO0lBQ3ZELFNBQVMsQ0FBd0I7SUFDakMsVUFBVSxDQUF3QjtJQUNsQyxVQUFVLENBQXlCO0lBQ25DLHFCQUFxQixDQUF3QjtJQUU3RCxZQUFZLElBQVksRUFBRSxJQUFzQixFQUFFLElBQXNDO1FBQ3RGLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2QsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1lBQ3hCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTtZQUMxQixxQkFBcUIsRUFBRSxHQUFHLENBQUMscUJBQXFCO1NBQ2pELENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixxQkFBcUIsRUFBRSxJQUFJLENBQUMscUJBQXFCO1NBQ2xELENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsQ0Qsb0NBa0NDIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
2
|
+
import * as types from '../types';
|
|
3
|
+
import { BaseComponent } from '../base/BaseComponent';
|
|
4
|
+
export interface RandomPasswordArgs extends types.WithVaultInfo {
|
|
5
|
+
policy?: pulumi.Input<'monthly' | 'yearly' | boolean>;
|
|
6
|
+
length?: pulumi.Input<number>;
|
|
7
|
+
options?: {
|
|
8
|
+
lower?: pulumi.Input<boolean>;
|
|
9
|
+
upper?: pulumi.Input<boolean>;
|
|
10
|
+
numeric?: pulumi.Input<boolean>;
|
|
11
|
+
special?: pulumi.Input<boolean>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare class RandomPassword extends BaseComponent<RandomPasswordArgs> {
|
|
15
|
+
readonly value: pulumi.Output<string>;
|
|
16
|
+
constructor(name: string, args?: RandomPasswordArgs, opts?: pulumi.ComponentResourceOptions);
|
|
17
|
+
getOutputs(): {
|
|
18
|
+
value: pulumi.Output<string>;
|
|
19
|
+
};
|
|
20
|
+
private generateKeepKey;
|
|
21
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.RandomPassword = void 0;
|
|
37
|
+
const random = __importStar(require("@pulumi/random"));
|
|
38
|
+
const helpers_1 = require("../base/helpers");
|
|
39
|
+
const VaultSecret_1 = require("../vault/VaultSecret");
|
|
40
|
+
const BaseComponent_1 = require("../base/BaseComponent");
|
|
41
|
+
class RandomPassword extends BaseComponent_1.BaseComponent {
|
|
42
|
+
value;
|
|
43
|
+
constructor(name, args = { length: 50, policy: 'yearly' }, opts) {
|
|
44
|
+
super((0, helpers_1.getComponentResourceType)('RandomPassword'), name, args, opts);
|
|
45
|
+
const { vaultInfo } = args;
|
|
46
|
+
const keepKey = this.generateKeepKey();
|
|
47
|
+
const options = args.options || {
|
|
48
|
+
lower: true,
|
|
49
|
+
upper: true,
|
|
50
|
+
numeric: true,
|
|
51
|
+
special: true,
|
|
52
|
+
};
|
|
53
|
+
const randomPass = new random.RandomPassword(name, {
|
|
54
|
+
keepers: { keepKey },
|
|
55
|
+
length: args.length || 50,
|
|
56
|
+
minLower: 2,
|
|
57
|
+
minUpper: 2,
|
|
58
|
+
minNumeric: 2,
|
|
59
|
+
minSpecial: options.special ? 2 : 0,
|
|
60
|
+
...options,
|
|
61
|
+
//Exclude some special characters that are not accepted by XML and SQLServer.
|
|
62
|
+
overrideSpecial: options.special == false ? '' : '#%&*+-/:<>?^_|~',
|
|
63
|
+
}, { ...opts, parent: this });
|
|
64
|
+
if (vaultInfo) {
|
|
65
|
+
new VaultSecret_1.VaultSecret(name, { vaultInfo, value: randomPass.result, contentType: 'RandomPassword' }, { dependsOn: randomPass, parent: this });
|
|
66
|
+
}
|
|
67
|
+
this.value = randomPass.result;
|
|
68
|
+
this.registerOutputs(this.getOutputs());
|
|
69
|
+
}
|
|
70
|
+
getOutputs() {
|
|
71
|
+
return {
|
|
72
|
+
value: this.value,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
generateKeepKey() {
|
|
76
|
+
return this.args.policy === 'monthly'
|
|
77
|
+
? `${new Date().getMonth()}.${new Date().getFullYear()}`
|
|
78
|
+
: this.args.policy === 'yearly'
|
|
79
|
+
? `${new Date().getFullYear()}`
|
|
80
|
+
: this.name;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.RandomPassword = RandomPassword;
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZG9tUGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL1JhbmRvbVBhc3N3b3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVEQUF5QztBQUN6Qyw2Q0FBMkQ7QUFFM0Qsc0RBQW1EO0FBQ25ELHlEQUFzRDtBQWF0RCxNQUFhLGNBQWUsU0FBUSw2QkFBaUM7SUFDbkQsS0FBSyxDQUF3QjtJQUU3QyxZQUNFLElBQVksRUFDWixPQUEyQixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUMzRCxJQUFzQztRQUV0QyxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSTtZQUM5QixLQUFLLEVBQUUsSUFBSTtZQUNYLEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQzFDLElBQUksRUFDSjtZQUNFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRTtZQUNwQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3pCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsR0FBRyxPQUFPO1lBQ1YsNkVBQTZFO1lBQzdFLGVBQWUsRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7U0FDbkUsRUFDRCxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDMUIsQ0FBQztRQUVGLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLHlCQUFXLENBQ2IsSUFBSSxFQUNKLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxFQUN0RSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUN4QyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUNPLGVBQWU7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQ25DLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN4RCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUTtnQkFDL0IsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBMURELHdDQTBEQyJ9
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
2
|
+
import { BaseComponent } from '../base/BaseComponent';
|
|
3
|
+
import * as types from '../types';
|
|
4
|
+
export interface RandomStringArgs extends types.WithVaultInfo {
|
|
5
|
+
type: 'string' | 'uuId';
|
|
6
|
+
length?: pulumi.Input<number>;
|
|
7
|
+
options?: {
|
|
8
|
+
lower?: pulumi.Input<boolean>;
|
|
9
|
+
upper?: pulumi.Input<boolean>;
|
|
10
|
+
numeric?: pulumi.Input<boolean>;
|
|
11
|
+
special?: pulumi.Input<boolean>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare class RandomString extends BaseComponent<RandomStringArgs> {
|
|
15
|
+
readonly value: pulumi.Output<string>;
|
|
16
|
+
constructor(name: string, args?: RandomStringArgs, opts?: pulumi.ComponentResourceOptions);
|
|
17
|
+
getOutputs(): {
|
|
18
|
+
value: pulumi.Output<string>;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.RandomString = void 0;
|
|
37
|
+
const random = __importStar(require("@pulumi/random"));
|
|
38
|
+
const BaseComponent_1 = require("../base/BaseComponent");
|
|
39
|
+
const helpers_1 = require("../base/helpers");
|
|
40
|
+
const VaultSecret_1 = require("../vault/VaultSecret");
|
|
41
|
+
class RandomString extends BaseComponent_1.BaseComponent {
|
|
42
|
+
value;
|
|
43
|
+
constructor(name, args = { length: 25, type: 'string' }, opts) {
|
|
44
|
+
super((0, helpers_1.getComponentResourceType)('RandomString'), name, args, opts);
|
|
45
|
+
const options = args.options || {
|
|
46
|
+
lower: true,
|
|
47
|
+
upper: true,
|
|
48
|
+
numeric: true,
|
|
49
|
+
special: false,
|
|
50
|
+
};
|
|
51
|
+
const randomString = args.type == 'string'
|
|
52
|
+
? new random.RandomString(name, {
|
|
53
|
+
length: args.length || 25,
|
|
54
|
+
minLower: 2,
|
|
55
|
+
minUpper: 2,
|
|
56
|
+
minNumeric: 2,
|
|
57
|
+
minSpecial: options.special ? 2 : 0,
|
|
58
|
+
...options,
|
|
59
|
+
}, { ...opts, parent: this })
|
|
60
|
+
: new random.RandomUuid(name, {}, opts);
|
|
61
|
+
if (args.vaultInfo) {
|
|
62
|
+
new VaultSecret_1.VaultSecret(name, { vaultInfo: args.vaultInfo, value: randomString.result, contentType: 'RandomString' }, { dependsOn: randomString, parent: this });
|
|
63
|
+
}
|
|
64
|
+
this.value = randomString.result;
|
|
65
|
+
this.registerOutputs(this.getOutputs());
|
|
66
|
+
}
|
|
67
|
+
getOutputs() {
|
|
68
|
+
return {
|
|
69
|
+
value: this.value,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.RandomString = RandomString;
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZG9tU3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9SYW5kb21TdHJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsdURBQXlDO0FBQ3pDLHlEQUFzRDtBQUN0RCw2Q0FBMkQ7QUFFM0Qsc0RBQW1EO0FBYW5ELE1BQWEsWUFBYSxTQUFRLDZCQUErQjtJQUMvQyxLQUFLLENBQXdCO0lBRTdDLFlBQ0UsSUFBWSxFQUNaLE9BQXlCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQ3ZELElBQXNDO1FBRXRDLEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSTtZQUM5QixLQUFLLEVBQUUsSUFBSTtZQUNYLEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFFRixNQUFNLFlBQVksR0FDaEIsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRO1lBQ25CLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQ3JCLElBQUksRUFDSjtnQkFDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO2dCQUN6QixRQUFRLEVBQUUsQ0FBQztnQkFDWCxRQUFRLEVBQUUsQ0FBQztnQkFDWCxVQUFVLEVBQUUsQ0FBQztnQkFDYixVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxHQUFHLE9BQU87YUFDWCxFQUNELEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQjtZQUNILENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLHlCQUFXLENBQ2IsSUFBSSxFQUNKLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUN0RixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbERELG9DQWtEQyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as authorization from '@pulumi/azure-native/authorization';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
export interface ResourceLockerArgs {
|
|
4
|
+
resource: pulumi.CustomResource;
|
|
5
|
+
level?: authorization.LockLevel;
|
|
6
|
+
}
|
|
7
|
+
export declare class ResourceLocker extends pulumi.ComponentResource<ResourceLockerArgs> {
|
|
8
|
+
constructor(name: string, args: ResourceLockerArgs, opts?: pulumi.ComponentResourceOptions);
|
|
9
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ResourceLocker = void 0;
|
|
37
|
+
const authorization = __importStar(require("@pulumi/azure-native/authorization"));
|
|
38
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
39
|
+
class ResourceLocker extends pulumi.ComponentResource {
|
|
40
|
+
constructor(name, args, opts) {
|
|
41
|
+
if (!args.level)
|
|
42
|
+
args.level = authorization.LockLevel.CanNotDelete;
|
|
43
|
+
super('drunk-pulumi:index:ResourceLocker', name, args, opts);
|
|
44
|
+
new authorization.ManagementLockByScope(name, {
|
|
45
|
+
level: args.level,
|
|
46
|
+
scope: args.resource.id,
|
|
47
|
+
notes: `Lock ${name} from ${args.level}`,
|
|
48
|
+
}, { ...opts, parent: this });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.ResourceLocker = ResourceLocker;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VMb2NrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL1Jlc291cmNlTG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtGQUFvRTtBQUNwRSx1REFBeUM7QUFPekMsTUFBYSxjQUFlLFNBQVEsTUFBTSxDQUFDLGlCQUFxQztJQUM5RSxZQUFZLElBQVksRUFBRSxJQUF3QixFQUFFLElBQXNDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDbkUsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFN0QsSUFBSSxhQUFhLENBQUMscUJBQXFCLENBQ3JDLElBQUksRUFDSjtZQUNFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZCLEtBQUssRUFBRSxRQUFRLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFO1NBQ3pDLEVBQ0QsRUFBRSxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzFCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFmRCx3Q0FlQyJ9
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as resources from '@pulumi/azure-native/resources';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
import { RsRoleDefinitionType } from '../azAd';
|
|
4
|
+
import { BaseArgs, BaseResourceComponent } from '../base/BaseResourceComponent';
|
|
5
|
+
export interface RsGroupArgs extends BaseArgs, Omit<resources.ResourceGroupArgs, 'managedBy' | 'location'> {
|
|
6
|
+
/** if the role definition is not provided the readonly role will be added to this group by default */
|
|
7
|
+
roleAssignments?: RsRoleDefinitionType[];
|
|
8
|
+
lock?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class RsGroup extends BaseResourceComponent<RsGroupArgs> {
|
|
11
|
+
readonly id: pulumi.Output<string>;
|
|
12
|
+
readonly location: pulumi.Output<string>;
|
|
13
|
+
readonly resourceGroupName: pulumi.Output<string>;
|
|
14
|
+
constructor(name: string, args?: RsGroupArgs, opts?: pulumi.ComponentResourceOptions);
|
|
15
|
+
getOutputs(): {
|
|
16
|
+
location: pulumi.Output<string>;
|
|
17
|
+
resourceGroupName: pulumi.Output<string>;
|
|
18
|
+
};
|
|
19
|
+
private createRoleAssignment;
|
|
20
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.RsGroup = void 0;
|
|
37
|
+
const resources = __importStar(require("@pulumi/azure-native/resources"));
|
|
38
|
+
const azAd_1 = require("../azAd");
|
|
39
|
+
const BaseResourceComponent_1 = require("../base/BaseResourceComponent");
|
|
40
|
+
class RsGroup extends BaseResourceComponent_1.BaseResourceComponent {
|
|
41
|
+
id;
|
|
42
|
+
location;
|
|
43
|
+
resourceGroupName;
|
|
44
|
+
constructor(name, args = {}, opts) {
|
|
45
|
+
super('RsGroup', name, args, opts);
|
|
46
|
+
const group = new resources.ResourceGroup(name, args, {
|
|
47
|
+
...opts,
|
|
48
|
+
parent: this,
|
|
49
|
+
});
|
|
50
|
+
this.location = group.location;
|
|
51
|
+
this.resourceGroupName = group.name;
|
|
52
|
+
this.id = group.id;
|
|
53
|
+
this.createRoleAssignment();
|
|
54
|
+
if (args.lock)
|
|
55
|
+
this.lockFromDeleting(group);
|
|
56
|
+
this.registerOutputs();
|
|
57
|
+
}
|
|
58
|
+
getOutputs() {
|
|
59
|
+
return {
|
|
60
|
+
location: this.location,
|
|
61
|
+
resourceGroupName: this.resourceGroupName,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
createRoleAssignment() {
|
|
65
|
+
const { groupRoles, roleAssignments } = this.args;
|
|
66
|
+
if (!roleAssignments || !groupRoles)
|
|
67
|
+
return;
|
|
68
|
+
const createRoles = (type, groupId, roles) => {
|
|
69
|
+
roles.forEach((role) => new azAd_1.RoleAssignment(`${this.name}-${type}-${role.toLowerCase().replace(/\s+/g, '-')}`, {
|
|
70
|
+
principalId: groupId,
|
|
71
|
+
principalType: 'Group',
|
|
72
|
+
roleName: role,
|
|
73
|
+
scope: this.id,
|
|
74
|
+
}, { parent: this }));
|
|
75
|
+
};
|
|
76
|
+
const roles = roleAssignments ?? [azAd_1.rsRoleDefinitions.rsGroup.getReadOnly()];
|
|
77
|
+
roles.forEach((role) => {
|
|
78
|
+
createRoles('readOnly', groupRoles.readOnly.objectId, role.readOnly);
|
|
79
|
+
createRoles('admin', groupRoles.admin.objectId, role.admin);
|
|
80
|
+
createRoles('contributor', groupRoles.contributor.objectId, role.contributor);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.RsGroup = RsGroup;
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnNHcm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vUnNHcm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBNEQ7QUFFNUQsa0NBQWtGO0FBQ2xGLHlFQUFnRjtBQVNoRixNQUFhLE9BQVEsU0FBUSw2Q0FBa0M7SUFDN0MsRUFBRSxDQUF3QjtJQUMxQixRQUFRLENBQXdCO0lBQ2hDLGlCQUFpQixDQUF3QjtJQUV6RCxZQUFZLElBQVksRUFBRSxPQUFvQixFQUFFLEVBQUUsSUFBc0M7UUFDdEYsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRW5DLE1BQU0sS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3BELEdBQUcsSUFBSTtZQUNQLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBRTVDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBMEIsRUFBRSxPQUE4QixFQUFFLEtBQWUsRUFBRSxFQUFFO1lBQ2xHLEtBQUssQ0FBQyxPQUFPLENBQ1gsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLElBQUkscUJBQWMsQ0FDaEIsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUNqRTtnQkFDRSxXQUFXLEVBQUUsT0FBTztnQkFDcEIsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTthQUNmLEVBQ0QsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ2pCLENBQ0osQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLGVBQWUsSUFBSSxDQUFDLHdCQUFpQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixXQUFXLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRSxXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxXQUFXLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFERCwwQkEwREMifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
2
|
+
import { BaseArgs, BaseResourceComponent } from '../base';
|
|
3
|
+
export interface SshGeneratorArgs extends BaseArgs {
|
|
4
|
+
/** if vaultInfo is provided this password will be added into Key vault together with public key and private key */
|
|
5
|
+
password: pulumi.Input<string>;
|
|
6
|
+
}
|
|
7
|
+
export declare class SshGenerator extends BaseResourceComponent<SshGeneratorArgs> {
|
|
8
|
+
readonly publicKey: pulumi.Output<string>;
|
|
9
|
+
readonly privateKey: pulumi.Output<string>;
|
|
10
|
+
readonly password?: pulumi.Output<string>;
|
|
11
|
+
constructor(name: string, args: SshGeneratorArgs, opts?: pulumi.ComponentResourceOptions);
|
|
12
|
+
getOutputs(): {
|
|
13
|
+
publicKey: pulumi.Output<string>;
|
|
14
|
+
privateKey: pulumi.Output<string>;
|
|
15
|
+
password: pulumi.Output<string> | undefined;
|
|
16
|
+
};
|
|
17
|
+
}
|