@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
package/aks/helpers.js
ADDED
|
@@ -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.getAksConfig = exports.aksRequiredOutboundPorts = void 0;
|
|
37
|
+
const ccs = __importStar(require("@pulumi/azure-native/containerservice"));
|
|
38
|
+
exports.aksRequiredOutboundPorts = ['1194', '9000', '123', '53', '80', '443'];
|
|
39
|
+
const getAksConfig = async ({ resourceName, resourceGroupName, disableLocalAccounts, }) => {
|
|
40
|
+
const aks = disableLocalAccounts
|
|
41
|
+
? await ccs.listManagedClusterUserCredentials({
|
|
42
|
+
resourceName,
|
|
43
|
+
resourceGroupName,
|
|
44
|
+
})
|
|
45
|
+
: await ccs.listManagedClusterAdminCredentials({
|
|
46
|
+
resourceName,
|
|
47
|
+
resourceGroupName,
|
|
48
|
+
});
|
|
49
|
+
return Buffer.from(aks.kubeconfigs[0].value, 'base64').toString('utf8');
|
|
50
|
+
};
|
|
51
|
+
exports.getAksConfig = getAksConfig;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ha3MvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyRUFBNkQ7QUFFaEQsUUFBQSx3QkFBd0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFNUUsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLEVBQ2pDLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEdBS3JCLEVBQW1CLEVBQUU7SUFDcEIsTUFBTSxHQUFHLEdBQUcsb0JBQW9CO1FBQzlCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQztZQUMxQyxZQUFZO1lBQ1osaUJBQWlCO1NBQ2xCLENBQUM7UUFDSixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsa0NBQWtDLENBQUM7WUFDM0MsWUFBWTtZQUNaLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7SUFFUCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQztBQXBCVyxRQUFBLFlBQVksZ0JBb0J2QiJ9
|
package/aks/index.d.ts
ADDED
package/aks/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.aksHelpers = void 0;
|
|
40
|
+
__exportStar(require("./AzKubernetes"), exports);
|
|
41
|
+
__exportStar(require("./ContainerRegistry"), exports);
|
|
42
|
+
exports.aksHelpers = __importStar(require("./helpers"));
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWtzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUErQjtBQUMvQixzREFBb0M7QUFDcEMsd0RBQXdDIn0=
|
package/app/AppCert.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as cert from '@pulumi/azure-native/certificateregistration';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
4
|
+
export interface AppCertArgs extends CommonBaseArgs, Pick<cert.AppServiceCertificateOrderArgs, 'productType' | 'keySize'> {
|
|
5
|
+
domain: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class AppCert extends BaseResourceComponent<AppCertArgs> {
|
|
8
|
+
readonly id: pulumi.Output<string>;
|
|
9
|
+
readonly resourceName: pulumi.Output<string>;
|
|
10
|
+
constructor(name: string, args: AppCertArgs, opts?: pulumi.ComponentResourceOptions);
|
|
11
|
+
getOutputs(): {
|
|
12
|
+
id: pulumi.Output<string>;
|
|
13
|
+
resourceName: pulumi.Output<string>;
|
|
14
|
+
};
|
|
15
|
+
}
|
package/app/AppCert.js
ADDED
|
@@ -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.AppCert = void 0;
|
|
37
|
+
const cert = __importStar(require("@pulumi/azure-native/certificateregistration"));
|
|
38
|
+
const base_1 = require("../base");
|
|
39
|
+
class AppCert extends base_1.BaseResourceComponent {
|
|
40
|
+
id;
|
|
41
|
+
resourceName;
|
|
42
|
+
constructor(name, args, opts) {
|
|
43
|
+
super('AppCert', name, args, opts);
|
|
44
|
+
const appCert = new cert.AppServiceCertificateOrder(name, {
|
|
45
|
+
...args.rsGroup,
|
|
46
|
+
location: 'global',
|
|
47
|
+
productType: args.productType,
|
|
48
|
+
autoRenew: true,
|
|
49
|
+
distinguishedName: `CN=*.${args.domain}`,
|
|
50
|
+
keySize: args.keySize ?? 2048,
|
|
51
|
+
validityInYears: 1,
|
|
52
|
+
}, { ...opts, parent: this });
|
|
53
|
+
if (args.vaultInfo) {
|
|
54
|
+
new cert.AppServiceCertificateOrderCertificate(this.name, {
|
|
55
|
+
...args.rsGroup,
|
|
56
|
+
certificateOrderName: appCert.name,
|
|
57
|
+
location: 'global',
|
|
58
|
+
keyVaultSecretName: name,
|
|
59
|
+
keyVaultId: args.vaultInfo.id,
|
|
60
|
+
}, { dependsOn: appCert, parent: this });
|
|
61
|
+
}
|
|
62
|
+
this.id = appCert.id;
|
|
63
|
+
this.resourceName = appCert.name;
|
|
64
|
+
this.registerOutputs();
|
|
65
|
+
}
|
|
66
|
+
getOutputs() {
|
|
67
|
+
return {
|
|
68
|
+
id: this.id,
|
|
69
|
+
resourceName: this.resourceName,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.AppCert = AppCert;
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwQ2VydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvQXBwQ2VydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtRkFBcUU7QUFFckUsa0NBQWdFO0FBUWhFLE1BQWEsT0FBUSxTQUFRLDRCQUFrQztJQUM3QyxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBaUIsRUFBRSxJQUFzQztRQUNqRixLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQ2pELElBQUksRUFDSjtZQUNFLEdBQUcsSUFBSSxDQUFDLE9BQU87WUFDZixRQUFRLEVBQUUsUUFBUTtZQUNsQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUIsRUFBRSxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDeEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSTtZQUM3QixlQUFlLEVBQUUsQ0FBQztTQUNuQixFQUNELEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMscUNBQXFDLENBQzVDLElBQUksQ0FBQyxJQUFJLEVBQ1Q7Z0JBQ0UsR0FBRyxJQUFJLENBQUMsT0FBTztnQkFDZixvQkFBb0IsRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDbEMsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGtCQUFrQixFQUFFLElBQUk7Z0JBQ3hCLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7YUFDOUIsRUFDRCxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNyQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFakMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBL0NELDBCQStDQyJ9
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as appConfig from '@pulumi/azure-native/appconfiguration';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
4
|
+
import * as types from '../types';
|
|
5
|
+
export interface AppConfigArgs extends CommonBaseArgs, types.WithEncryptionEnabler, types.WithUserAssignedIdentity, Pick<appConfig.ConfigurationStoreArgs, 'dataPlaneProxy' | 'disableLocalAuth' | 'enablePurgeProtection' | 'softDeleteRetentionInDays'> {
|
|
6
|
+
network?: Pick<types.NetworkArgs, 'publicNetworkAccess' | 'privateLink'>;
|
|
7
|
+
}
|
|
8
|
+
export declare class AppConfig extends BaseResourceComponent<AppConfigArgs> {
|
|
9
|
+
readonly id: pulumi.Output<string>;
|
|
10
|
+
readonly resourceName: pulumi.Output<string>;
|
|
11
|
+
constructor(name: string, args: AppConfigArgs, opts?: pulumi.ComponentResourceOptions);
|
|
12
|
+
getOutputs(): {
|
|
13
|
+
id: pulumi.Output<string>;
|
|
14
|
+
resourceName: pulumi.Output<string>;
|
|
15
|
+
};
|
|
16
|
+
private createPrivateLink;
|
|
17
|
+
private createSecrets;
|
|
18
|
+
}
|
package/app/AppConfig.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
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.AppConfig = void 0;
|
|
37
|
+
const appConfig = __importStar(require("@pulumi/azure-native/appconfiguration"));
|
|
38
|
+
const base_1 = require("../base");
|
|
39
|
+
const vault = __importStar(require("../vault"));
|
|
40
|
+
const PrivateEndpoint_1 = require("../vnet/PrivateEndpoint");
|
|
41
|
+
class AppConfig extends base_1.BaseResourceComponent {
|
|
42
|
+
id;
|
|
43
|
+
resourceName;
|
|
44
|
+
constructor(name, args, opts) {
|
|
45
|
+
super('AppConfig', name, args, opts);
|
|
46
|
+
const { rsGroup, groupRoles, defaultUAssignedId, enableEncryption, vaultInfo, network, ...props } = args;
|
|
47
|
+
const encryptionKey = args.enableEncryption ? this.getEncryptionKey() : undefined;
|
|
48
|
+
const azConfig = new appConfig.ConfigurationStore(name, {
|
|
49
|
+
...args.rsGroup,
|
|
50
|
+
...props,
|
|
51
|
+
sku: { name: 'Standard' },
|
|
52
|
+
publicNetworkAccess: !network?.publicNetworkAccess
|
|
53
|
+
? appConfig.PublicNetworkAccess.Enabled
|
|
54
|
+
: network.privateLink
|
|
55
|
+
? appConfig.PublicNetworkAccess.Disabled
|
|
56
|
+
: appConfig.PublicNetworkAccess.Enabled,
|
|
57
|
+
identity: {
|
|
58
|
+
type: defaultUAssignedId
|
|
59
|
+
? appConfig.IdentityType.SystemAssigned_UserAssigned
|
|
60
|
+
: appConfig.IdentityType.SystemAssigned,
|
|
61
|
+
userAssignedIdentities: defaultUAssignedId ? [defaultUAssignedId.id] : undefined,
|
|
62
|
+
},
|
|
63
|
+
encryption: encryptionKey && defaultUAssignedId
|
|
64
|
+
? {
|
|
65
|
+
keyVaultProperties: {
|
|
66
|
+
identityClientId: defaultUAssignedId.clientId,
|
|
67
|
+
keyIdentifier: encryptionKey.urlWithoutVersion,
|
|
68
|
+
},
|
|
69
|
+
}
|
|
70
|
+
: undefined,
|
|
71
|
+
}, {
|
|
72
|
+
...opts,
|
|
73
|
+
parent: this,
|
|
74
|
+
});
|
|
75
|
+
this.createPrivateLink(azConfig);
|
|
76
|
+
this.createSecrets(azConfig);
|
|
77
|
+
this.id = azConfig.id;
|
|
78
|
+
this.resourceName = azConfig.name;
|
|
79
|
+
this.registerOutputs();
|
|
80
|
+
}
|
|
81
|
+
getOutputs() {
|
|
82
|
+
return {
|
|
83
|
+
id: this.id,
|
|
84
|
+
resourceName: this.resourceName,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
createPrivateLink(azConfig) {
|
|
88
|
+
const { rsGroup, network } = this.args;
|
|
89
|
+
if (!network?.privateLink)
|
|
90
|
+
return;
|
|
91
|
+
return new PrivateEndpoint_1.PrivateEndpoint(this.name, { ...network.privateLink, resourceInfo: azConfig, rsGroup, type: 'azConfig' }, { dependsOn: azConfig, parent: this });
|
|
92
|
+
}
|
|
93
|
+
createSecrets(azConfig) {
|
|
94
|
+
const { rsGroup, vaultInfo, disableLocalAuth } = this.args;
|
|
95
|
+
if (!vaultInfo || disableLocalAuth)
|
|
96
|
+
return;
|
|
97
|
+
azConfig.id.apply(async (id) => {
|
|
98
|
+
if (!id)
|
|
99
|
+
return;
|
|
100
|
+
//Load the keys from Azure
|
|
101
|
+
const keys = await appConfig.listConfigurationStoreKeysOutput({
|
|
102
|
+
configStoreName: azConfig.name,
|
|
103
|
+
...rsGroup,
|
|
104
|
+
});
|
|
105
|
+
if (keys.value) {
|
|
106
|
+
return new vault.VaultSecrets(this.name, {
|
|
107
|
+
vaultInfo,
|
|
108
|
+
secrets: {
|
|
109
|
+
[`${this.name}-primary-conn`]: {
|
|
110
|
+
value: keys.apply((v) => v.value[0].value),
|
|
111
|
+
contentType: 'AppConfig primary connectionString',
|
|
112
|
+
},
|
|
113
|
+
[`${this.name}-secondary-conn`]: {
|
|
114
|
+
value: keys.apply((v) => v.value[1].value),
|
|
115
|
+
contentType: 'AppConfig secondary connectionString',
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
}, { dependsOn: azConfig, parent: this });
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.AppConfig = AppConfig;
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9BcHBDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUZBQW1FO0FBRW5FLGtDQUFnRTtBQUVoRSxnREFBa0M7QUFDbEMsNkRBQTBEO0FBYTFELE1BQWEsU0FBVSxTQUFRLDRCQUFvQztJQUNqRCxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBbUIsRUFBRSxJQUFzQztRQUNuRixLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFckMsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUN6RyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUMsa0JBQWtCLENBQy9DLElBQUksRUFDSjtZQUNFLEdBQUcsSUFBSSxDQUFDLE9BQU87WUFDZixHQUFHLEtBQUs7WUFDUixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBRXpCLG1CQUFtQixFQUFFLENBQUMsT0FBTyxFQUFFLG1CQUFtQjtnQkFDaEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO2dCQUN2QyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVc7b0JBQ3JCLENBQUMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsUUFBUTtvQkFDeEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxt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
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as web from '@pulumi/azure-native/web';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
4
|
+
/**
|
|
5
|
+
* Represents different kinds of Azure App Service configurations
|
|
6
|
+
*/
|
|
7
|
+
export declare enum AppKind {
|
|
8
|
+
/**
|
|
9
|
+
* Windows Web App
|
|
10
|
+
*/
|
|
11
|
+
App = "app",
|
|
12
|
+
/**
|
|
13
|
+
* Linux Web App
|
|
14
|
+
*/
|
|
15
|
+
AppLinux = "app,linux",
|
|
16
|
+
/**
|
|
17
|
+
* Linux Container Web App
|
|
18
|
+
*/
|
|
19
|
+
AppLinuxContainer = "app,linux,container",
|
|
20
|
+
/**
|
|
21
|
+
* Windows Container Web App (Hyper-V)
|
|
22
|
+
*/
|
|
23
|
+
HyperV = "hyperV",
|
|
24
|
+
/**
|
|
25
|
+
* Windows Container Web App
|
|
26
|
+
*/
|
|
27
|
+
AppContainerWindows = "app,container,windows",
|
|
28
|
+
/**
|
|
29
|
+
* Linux Web App on Azure Arc
|
|
30
|
+
*/
|
|
31
|
+
AppLinuxKubernetes = "app,linux,kubernetes",
|
|
32
|
+
/**
|
|
33
|
+
* Linux Container Web App on Azure Arc
|
|
34
|
+
*/
|
|
35
|
+
AppLinuxContainerKubernetes = "app,linux,container,kubernetes",
|
|
36
|
+
/**
|
|
37
|
+
* Function Code App
|
|
38
|
+
*/
|
|
39
|
+
FunctionApp = "functionapp",
|
|
40
|
+
/**
|
|
41
|
+
* Linux Consumption Function App
|
|
42
|
+
*/
|
|
43
|
+
FunctionAppLinux = "functionapp,linux",
|
|
44
|
+
/**
|
|
45
|
+
* Function Container App on Azure Arc
|
|
46
|
+
*/
|
|
47
|
+
FunctionAppLinuxContainerKubernetes = "functionapp,linux,container,kubernetes",
|
|
48
|
+
/**
|
|
49
|
+
* Function Code App on Azure Arc
|
|
50
|
+
*/
|
|
51
|
+
FunctionAppLinuxKubernetes = "functionapp,linux,kubernetes"
|
|
52
|
+
}
|
|
53
|
+
export interface AppServiceArgs extends CommonBaseArgs, Omit<web.AppServicePlanArgs, 'resourceGroupName' | 'location' | 'name' | 'kind'> {
|
|
54
|
+
kind?: AppKind;
|
|
55
|
+
webApps: Array<Omit<web.WebAppArgs, 'resourceGroupName' | 'location' | 'serverFarmId' | 'kind' | 'name'> & {
|
|
56
|
+
name: string;
|
|
57
|
+
kind?: AppKind;
|
|
58
|
+
}>;
|
|
59
|
+
}
|
|
60
|
+
export declare class AppService extends BaseResourceComponent<AppServiceArgs> {
|
|
61
|
+
readonly id: pulumi.Output<string>;
|
|
62
|
+
readonly resourceName: pulumi.Output<string>;
|
|
63
|
+
constructor(name: string, args: AppServiceArgs, opts?: pulumi.ComponentResourceOptions);
|
|
64
|
+
getOutputs(): {
|
|
65
|
+
id: pulumi.Output<string>;
|
|
66
|
+
resourceName: pulumi.Output<string>;
|
|
67
|
+
};
|
|
68
|
+
private createWebApps;
|
|
69
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
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.AppService = exports.AppKind = void 0;
|
|
37
|
+
const web = __importStar(require("@pulumi/azure-native/web"));
|
|
38
|
+
const base_1 = require("../base");
|
|
39
|
+
/**
|
|
40
|
+
* Represents different kinds of Azure App Service configurations
|
|
41
|
+
*/
|
|
42
|
+
var AppKind;
|
|
43
|
+
(function (AppKind) {
|
|
44
|
+
/**
|
|
45
|
+
* Windows Web App
|
|
46
|
+
*/
|
|
47
|
+
AppKind["App"] = "app";
|
|
48
|
+
/**
|
|
49
|
+
* Linux Web App
|
|
50
|
+
*/
|
|
51
|
+
AppKind["AppLinux"] = "app,linux";
|
|
52
|
+
/**
|
|
53
|
+
* Linux Container Web App
|
|
54
|
+
*/
|
|
55
|
+
AppKind["AppLinuxContainer"] = "app,linux,container";
|
|
56
|
+
/**
|
|
57
|
+
* Windows Container Web App (Hyper-V)
|
|
58
|
+
*/
|
|
59
|
+
AppKind["HyperV"] = "hyperV";
|
|
60
|
+
/**
|
|
61
|
+
* Windows Container Web App
|
|
62
|
+
*/
|
|
63
|
+
AppKind["AppContainerWindows"] = "app,container,windows";
|
|
64
|
+
/**
|
|
65
|
+
* Linux Web App on Azure Arc
|
|
66
|
+
*/
|
|
67
|
+
AppKind["AppLinuxKubernetes"] = "app,linux,kubernetes";
|
|
68
|
+
/**
|
|
69
|
+
* Linux Container Web App on Azure Arc
|
|
70
|
+
*/
|
|
71
|
+
AppKind["AppLinuxContainerKubernetes"] = "app,linux,container,kubernetes";
|
|
72
|
+
/**
|
|
73
|
+
* Function Code App
|
|
74
|
+
*/
|
|
75
|
+
AppKind["FunctionApp"] = "functionapp";
|
|
76
|
+
/**
|
|
77
|
+
* Linux Consumption Function App
|
|
78
|
+
*/
|
|
79
|
+
AppKind["FunctionAppLinux"] = "functionapp,linux";
|
|
80
|
+
/**
|
|
81
|
+
* Function Container App on Azure Arc
|
|
82
|
+
*/
|
|
83
|
+
AppKind["FunctionAppLinuxContainerKubernetes"] = "functionapp,linux,container,kubernetes";
|
|
84
|
+
/**
|
|
85
|
+
* Function Code App on Azure Arc
|
|
86
|
+
*/
|
|
87
|
+
AppKind["FunctionAppLinuxKubernetes"] = "functionapp,linux,kubernetes";
|
|
88
|
+
})(AppKind || (exports.AppKind = AppKind = {}));
|
|
89
|
+
class AppService extends base_1.BaseResourceComponent {
|
|
90
|
+
id;
|
|
91
|
+
resourceName;
|
|
92
|
+
constructor(name, args, opts) {
|
|
93
|
+
super('AppService', name, args, opts);
|
|
94
|
+
const { rsGroup, groupRoles, vaultInfo, ...props } = args;
|
|
95
|
+
const appPlan = new web.AppServicePlan(name, {
|
|
96
|
+
...props,
|
|
97
|
+
...args.rsGroup,
|
|
98
|
+
}, { dependsOn: opts?.dependsOn, parent: this });
|
|
99
|
+
this.createWebApps(appPlan);
|
|
100
|
+
this.id = appPlan.id;
|
|
101
|
+
this.resourceName = appPlan.name;
|
|
102
|
+
this.registerOutputs();
|
|
103
|
+
}
|
|
104
|
+
getOutputs() {
|
|
105
|
+
return {
|
|
106
|
+
id: this.id,
|
|
107
|
+
resourceName: this.resourceName,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
createWebApps(appPlan) {
|
|
111
|
+
const { webApps } = this.args;
|
|
112
|
+
if (!webApps || webApps.length === 0)
|
|
113
|
+
return undefined;
|
|
114
|
+
return webApps.map((webApp) => new web.WebApp(`${this.name}-${webApp.name}`, {
|
|
115
|
+
...webApp,
|
|
116
|
+
...this.args.rsGroup,
|
|
117
|
+
serverFarmId: appPlan.id,
|
|
118
|
+
}, { dependsOn: appPlan, parent: this }));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.AppService = AppService;
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvQXBwU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBZ0Q7QUFFaEQsa0NBQWdFO0FBRWhFOztHQUVHO0FBQ0gsSUFBWSxPQXVEWDtBQXZERCxXQUFZLE9BQU87SUFDakI7O09BRUc7SUFDSCxzQkFBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCxpQ0FBc0IsQ0FBQTtJQUV0Qjs7T0FFRztJQUNILG9EQUF5QyxDQUFBO0lBRXpDOztPQUVHO0lBQ0gsNEJBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCx3REFBNkMsQ0FBQTtJQUU3Qzs7T0FFRztJQUNILHNEQUEyQyxDQUFBO0lBRTNDOztPQUVHO0lBQ0gseUVBQThELENBQUE7SUFFOUQ7O09BRUc7SUFDSCxzQ0FBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILGlEQUFzQyxDQUFBO0lBRXRDOztPQUVHO0lBQ0gseUZBQThFLENBQUE7SUFFOUU7O09BRUc7SUFDSCxzRUFBMkQsQ0FBQTtBQUM3RCxDQUFDLEVBdkRXLE9BQU8sdUJBQVAsT0FBTyxRQXVEbEI7QUFjRCxNQUFhLFVBQVcsU0FBUSw0QkFBcUM7SUFDbkQsRUFBRSxDQUF3QjtJQUMxQixZQUFZLENBQXdCO0lBRXBELFlBQVksSUFBWSxFQUFFLElBQW9CLEVBQUUsSUFBc0M7UUFDcEYsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXRDLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUUxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQ3BDLElBQUksRUFDSjtZQUNFLEdBQUcsS0FBSztZQUNSLEdBQUcsSUFBSSxDQUFDLE9BQU87U0FDaEIsRUFDRCxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDN0MsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUVqQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQTJCO1FBQy9DLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFdkQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNoQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUNaLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQzdCO1lBQ0UsR0FBRyxNQUFNO1lBQ1QsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDcEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1NBQ3pCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDckMsQ0FDSixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbERELGdDQWtEQyJ9
|
package/app/IoTHub.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as devices from '@pulumi/azure-native/iothub';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
4
|
+
import * as types from '../types';
|
|
5
|
+
export interface IoTHubArgs extends CommonBaseArgs, types.WithUserAssignedIdentity, Pick<devices.IotHubResourceArgs, 'properties' | 'sku'> {
|
|
6
|
+
}
|
|
7
|
+
export declare class IoTHub extends BaseResourceComponent<IoTHubArgs> {
|
|
8
|
+
readonly id: pulumi.Output<string>;
|
|
9
|
+
readonly resourceName: pulumi.Output<string>;
|
|
10
|
+
constructor(name: string, args: IoTHubArgs, opts?: pulumi.ComponentResourceOptions);
|
|
11
|
+
getOutputs(): {
|
|
12
|
+
id: pulumi.Output<string>;
|
|
13
|
+
resourceName: pulumi.Output<string>;
|
|
14
|
+
};
|
|
15
|
+
}
|
package/app/IoTHub.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
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.IoTHub = void 0;
|
|
37
|
+
const devices = __importStar(require("@pulumi/azure-native/iothub"));
|
|
38
|
+
const base_1 = require("../base");
|
|
39
|
+
class IoTHub extends base_1.BaseResourceComponent {
|
|
40
|
+
id;
|
|
41
|
+
resourceName;
|
|
42
|
+
constructor(name, args, opts) {
|
|
43
|
+
super('IoTHub', name, args, opts);
|
|
44
|
+
const { rsGroup, defaultUAssignedId, ...props } = args;
|
|
45
|
+
const iot = new devices.IotHubResource(name, {
|
|
46
|
+
...props,
|
|
47
|
+
...rsGroup,
|
|
48
|
+
identity: {
|
|
49
|
+
type: defaultUAssignedId
|
|
50
|
+
? devices.ResourceIdentityType.SystemAssigned_UserAssigned
|
|
51
|
+
: devices.ResourceIdentityType.SystemAssigned,
|
|
52
|
+
userAssignedIdentities: defaultUAssignedId ? [defaultUAssignedId.id] : undefined,
|
|
53
|
+
},
|
|
54
|
+
properties: {
|
|
55
|
+
enableFileUploadNotifications: false,
|
|
56
|
+
features: devices.Capabilities.None,
|
|
57
|
+
messagingEndpoints: {
|
|
58
|
+
fileNotifications: {
|
|
59
|
+
lockDurationAsIso8601: 'PT1M',
|
|
60
|
+
maxDeliveryCount: 10,
|
|
61
|
+
ttlAsIso8601: 'PT1H',
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
minTlsVersion: '1.2',
|
|
65
|
+
...props?.properties,
|
|
66
|
+
},
|
|
67
|
+
}, { ...opts, parent: this });
|
|
68
|
+
this.id = iot.id;
|
|
69
|
+
this.resourceName = iot.name;
|
|
70
|
+
this.registerOutputs();
|
|
71
|
+
}
|
|
72
|
+
getOutputs() {
|
|
73
|
+
return {
|
|
74
|
+
id: this.id,
|
|
75
|
+
resourceName: this.resourceName,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.IoTHub = IoTHub;
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW9USHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9Jb1RIdWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUVBQXVEO0FBRXZELGtDQUFnRTtBQVFoRSxNQUFhLE1BQU8sU0FBUSw0QkFBaUM7SUFDM0MsRUFBRSxDQUF3QjtJQUMxQixZQUFZLENBQXdCO0lBRXBELFlBQVksSUFBWSxFQUFFLElBQWdCLEVBQUUsSUFBc0M7UUFDaEYsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWxDLE1BQU0sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUNwQyxJQUFJLEVBQ0o7WUFDRSxHQUFHLEtBQUs7WUFDUixHQUFHLE9BQU87WUFFVixRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLGtCQUFrQjtvQkFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkI7b0JBQzFELENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsY0FBYztnQkFDL0Msc0JBQXNCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDakY7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsNkJBQTZCLEVBQUUsS0FBSztnQkFDcEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSTtnQkFDbkMsa0JBQWtCLEVBQUU7b0JBQ2xCLGlCQUFpQixFQUFFO3dCQUNqQixxQkFBcUIsRUFBRSxNQUFNO3dCQUM3QixnQkFBZ0IsRUFBRSxFQUFFO3dCQUNwQixZQUFZLEVBQUUsTUFBTTtxQkFDckI7aUJBQ0Y7Z0JBQ0QsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLEdBQUcsS0FBSyxFQUFFLFVBQVU7YUFDckI7U0FDRixFQUNELEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsREQsd0JBa0RDIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as logic from '@pulumi/azure-native/logic';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
4
|
+
import * as types from '../types';
|
|
5
|
+
export interface LogicAppArgs extends CommonBaseArgs, types.WithUserAssignedIdentity {
|
|
6
|
+
integrationAccount: Pick<logic.IntegrationAccountArgs, 'integrationServiceEnvironment'> & {
|
|
7
|
+
sku: logic.IntegrationAccountSkuName;
|
|
8
|
+
};
|
|
9
|
+
workflow: Pick<logic.WorkflowArgs, 'accessControl' | 'definition' | 'endpointsConfiguration' | 'integrationServiceEnvironment' | 'parameters'>;
|
|
10
|
+
}
|
|
11
|
+
export declare class LogicApp extends BaseResourceComponent<LogicAppArgs> {
|
|
12
|
+
readonly id: pulumi.Output<string>;
|
|
13
|
+
readonly resourceName: pulumi.Output<string>;
|
|
14
|
+
constructor(name: string, args: LogicAppArgs, opts?: pulumi.ComponentResourceOptions);
|
|
15
|
+
getOutputs(): {
|
|
16
|
+
id: pulumi.Output<string>;
|
|
17
|
+
resourceName: pulumi.Output<string>;
|
|
18
|
+
};
|
|
19
|
+
}
|