@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.
Files changed (181) hide show
  1. package/PulumiPlugin.yaml +1 -0
  2. package/README.md +1 -0
  3. package/ResourceBuilder.d.ts +54 -0
  4. package/ResourceBuilder.js +71 -0
  5. package/aks/AzKubernetes.d.ts +55 -0
  6. package/aks/AzKubernetes.js +288 -0
  7. package/aks/ContainerRegistry.d.ts +19 -0
  8. package/aks/ContainerRegistry.js +119 -0
  9. package/aks/helpers.d.ts +6 -0
  10. package/aks/helpers.js +52 -0
  11. package/aks/index.d.ts +3 -0
  12. package/aks/index.js +43 -0
  13. package/app/AppCert.d.ts +15 -0
  14. package/app/AppCert.js +74 -0
  15. package/app/AppConfig.d.ts +18 -0
  16. package/app/AppConfig.js +124 -0
  17. package/app/AppService.d.ts +69 -0
  18. package/app/AppService.js +122 -0
  19. package/app/IoTHub.d.ts +15 -0
  20. package/app/IoTHub.js +80 -0
  21. package/app/LogicApp.d.ts +19 -0
  22. package/app/LogicApp.js +77 -0
  23. package/app/SignalR.d.ts +45 -0
  24. package/app/SignalR.js +125 -0
  25. package/app/index.d.ts +6 -0
  26. package/app/index.js +23 -0
  27. package/azAd/AppRegistration.d.ts +52 -0
  28. package/azAd/AppRegistration.js +165 -0
  29. package/azAd/AzRole.d.ts +14 -0
  30. package/azAd/AzRole.js +72 -0
  31. package/azAd/CustomRoles.d.ts +10 -0
  32. package/azAd/CustomRoles.js +73 -0
  33. package/azAd/GroupRole.d.ts +29 -0
  34. package/azAd/GroupRole.js +107 -0
  35. package/azAd/RoleAssignment.d.ts +15 -0
  36. package/azAd/RoleAssignment.js +63 -0
  37. package/azAd/UserAssignedIdentity.d.ts +17 -0
  38. package/azAd/UserAssignedIdentity.js +76 -0
  39. package/azAd/helpers/graphBuiltIn.d.ts +14 -0
  40. package/azAd/helpers/graphBuiltIn.js +5134 -0
  41. package/azAd/helpers/index.d.ts +3 -0
  42. package/azAd/helpers/index.js +39 -0
  43. package/azAd/helpers/rolesBuiltIn.d.ts +90 -0
  44. package/azAd/helpers/rolesBuiltIn.js +18601 -0
  45. package/azAd/helpers/rsRoleDefinition.d.ts +62 -0
  46. package/azAd/helpers/rsRoleDefinition.js +120 -0
  47. package/azAd/index.d.ts +7 -0
  48. package/azAd/index.js +24 -0
  49. package/base/BaseComponent.d.ts +53 -0
  50. package/base/BaseComponent.js +98 -0
  51. package/base/BaseResourceComponent.d.ts +108 -0
  52. package/base/BaseResourceComponent.js +180 -0
  53. package/base/helpers.d.ts +12 -0
  54. package/base/helpers.js +29 -0
  55. package/base/index.d.ts +3 -0
  56. package/base/index.js +43 -0
  57. package/common/PGPGenerator.d.ts +26 -0
  58. package/common/PGPGenerator.js +72 -0
  59. package/common/RandomPassword.d.ts +21 -0
  60. package/common/RandomPassword.js +84 -0
  61. package/common/RandomString.d.ts +20 -0
  62. package/common/RandomString.js +74 -0
  63. package/common/ResourceLocker.d.ts +9 -0
  64. package/common/ResourceLocker.js +52 -0
  65. package/common/RsGroup.d.ts +20 -0
  66. package/common/RsGroup.js +85 -0
  67. package/common/SshGenerator.d.ts +17 -0
  68. package/common/SshGenerator.js +66 -0
  69. package/common/index.d.ts +5 -0
  70. package/common/index.js +22 -0
  71. package/database/AzSql.d.ts +71 -0
  72. package/database/AzSql.js +283 -0
  73. package/database/MySql.d.ts +35 -0
  74. package/database/MySql.js +181 -0
  75. package/database/Postgres.d.ts +32 -0
  76. package/database/Postgres.js +171 -0
  77. package/database/Redis.d.ts +26 -0
  78. package/database/Redis.js +125 -0
  79. package/database/helpers.d.ts +7 -0
  80. package/database/helpers.js +52 -0
  81. package/database/index.d.ts +5 -0
  82. package/database/index.js +45 -0
  83. package/helpers/Location/LocationBuiltIn.d.ts +6 -0
  84. package/helpers/Location/LocationBuiltIn.js +493 -0
  85. package/helpers/Location/index.d.ts +3 -0
  86. package/helpers/Location/index.js +25 -0
  87. package/helpers/autoTags.d.ts +1 -0
  88. package/helpers/autoTags.js +27 -0
  89. package/helpers/azureEnv.d.ts +21 -0
  90. package/helpers/azureEnv.js +102 -0
  91. package/helpers/configHelper.d.ts +5 -0
  92. package/helpers/configHelper.js +54 -0
  93. package/helpers/index.d.ts +4 -0
  94. package/helpers/index.js +41 -0
  95. package/helpers/rsHelpers.d.ts +18 -0
  96. package/helpers/rsHelpers.js +92 -0
  97. package/helpers/stackEnv.d.ts +4 -0
  98. package/helpers/stackEnv.js +54 -0
  99. package/index.d.ts +14 -0
  100. package/index.js +53 -0
  101. package/logs/Logs.d.ts +48 -0
  102. package/logs/Logs.js +154 -0
  103. package/logs/helpers.d.ts +1 -0
  104. package/logs/helpers.js +38 -0
  105. package/logs/index.d.ts +1 -0
  106. package/logs/index.js +18 -0
  107. package/package.json +34 -0
  108. package/services/Automation.d.ts +16 -0
  109. package/services/Automation.js +85 -0
  110. package/services/AzSearch.d.ts +20 -0
  111. package/services/AzSearch.js +113 -0
  112. package/services/ServiceBus.d.ts +42 -0
  113. package/services/ServiceBus.js +256 -0
  114. package/services/index.d.ts +3 -0
  115. package/services/index.js +20 -0
  116. package/storage/StorageAccount.d.ts +53 -0
  117. package/storage/StorageAccount.js +261 -0
  118. package/storage/helpers.d.ts +24 -0
  119. package/storage/helpers.js +89 -0
  120. package/storage/index.d.ts +2 -0
  121. package/storage/index.js +42 -0
  122. package/types.d.ts +125 -0
  123. package/types.js +3 -0
  124. package/vault/EncryptionKey.d.ts +21 -0
  125. package/vault/EncryptionKey.js +73 -0
  126. package/vault/KeyVault.d.ts +31 -0
  127. package/vault/KeyVault.js +110 -0
  128. package/vault/VaultSecret.d.ts +23 -0
  129. package/vault/VaultSecret.js +72 -0
  130. package/vault/VaultSecrets.d.ts +25 -0
  131. package/vault/VaultSecrets.js +31 -0
  132. package/vault/helpers.d.ts +1 -0
  133. package/vault/helpers.js +13 -0
  134. package/vault/index.d.ts +5 -0
  135. package/vault/index.js +45 -0
  136. package/vm/DiskEncryptionSet.d.ts +16 -0
  137. package/vm/DiskEncryptionSet.js +74 -0
  138. package/vm/VirtualMachine.d.ts +45 -0
  139. package/vm/VirtualMachine.js +192 -0
  140. package/vm/helpers.d.ts +16 -0
  141. package/vm/helpers.js +15 -0
  142. package/vm/index.d.ts +3 -0
  143. package/vm/index.js +43 -0
  144. package/vnet/AzCdn.d.ts +44 -0
  145. package/vnet/AzCdn.js +276 -0
  146. package/vnet/Basion.d.ts +19 -0
  147. package/vnet/Basion.js +78 -0
  148. package/vnet/DnsZone.d.ts +36 -0
  149. package/vnet/DnsZone.js +113 -0
  150. package/vnet/Firewall.d.ts +53 -0
  151. package/vnet/Firewall.js +136 -0
  152. package/vnet/FirewallPolicies/FirewallPolicyBuilder.d.ts +18 -0
  153. package/vnet/FirewallPolicies/FirewallPolicyBuilder.js +91 -0
  154. package/vnet/FirewallPolicies/commonPolicies.d.ts +10 -0
  155. package/vnet/FirewallPolicies/commonPolicies.js +55 -0
  156. package/vnet/FirewallPolicies/index.d.ts +0 -0
  157. package/vnet/FirewallPolicies/index.js +2 -0
  158. package/vnet/IpAddresses.d.ts +36 -0
  159. package/vnet/IpAddresses.js +74 -0
  160. package/vnet/NetworkPeering.d.ts +21 -0
  161. package/vnet/NetworkPeering.js +85 -0
  162. package/vnet/PrivateDnsZone.d.ts +38 -0
  163. package/vnet/PrivateDnsZone.js +111 -0
  164. package/vnet/PrivateEndpoint.d.ts +43 -0
  165. package/vnet/PrivateEndpoint.js +181 -0
  166. package/vnet/RouteTable.d.ts +22 -0
  167. package/vnet/RouteTable.js +75 -0
  168. package/vnet/VirtualNetwork.d.ts +99 -0
  169. package/vnet/VirtualNetwork.js +311 -0
  170. package/vnet/VpnGateway.d.ts +18 -0
  171. package/vnet/VpnGateway.js +90 -0
  172. package/vnet/helpers.d.ts +16 -0
  173. package/vnet/helpers.js +47 -0
  174. package/vnet/index.d.ts +13 -0
  175. package/vnet/index.js +53 -0
  176. package/vnet/securityRules/SecurityRuleBuilder.d.ts +12 -0
  177. package/vnet/securityRules/SecurityRuleBuilder.js +55 -0
  178. package/vnet/securityRules/commonRules.d.ts +9 -0
  179. package/vnet/securityRules/commonRules.js +94 -0
  180. package/vnet/securityRules/index.d.ts +2 -0
  181. package/vnet/securityRules/index.js +19 -0
@@ -0,0 +1,111 @@
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.PrivateDnsZone = void 0;
37
+ const privateDns = __importStar(require("@pulumi/azure-native/privatedns"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const BaseComponent_1 = require("../base/BaseComponent");
40
+ const helpers_1 = require("../base/helpers");
41
+ const helpers_2 = require("../helpers");
42
+ const helpers = __importStar(require("./helpers"));
43
+ class PrivateDnsZone extends BaseComponent_1.BaseComponent {
44
+ _rsName;
45
+ id;
46
+ resourceName;
47
+ constructor(name, args, opts) {
48
+ super((0, helpers_1.getComponentResourceType)('PrivateDnsZone'), name, args, opts);
49
+ this._rsName = name.replace(/\./g, '-');
50
+ const group = this.getRsGroupInfo();
51
+ const zone = new privateDns.PrivateZone(this._rsName, {
52
+ resourceGroupName: group.resourceGroupName,
53
+ location: group.location,
54
+ privateZoneName: name,
55
+ }, { ...opts, parent: this });
56
+ this.createVnetLinks(zone);
57
+ this.id = zone.id;
58
+ this.resourceName = zone.name;
59
+ this.createARecord();
60
+ this.registerOutputs(this.getOutputs());
61
+ }
62
+ getOutputs() {
63
+ return {
64
+ id: this.id,
65
+ resourceName: this.resourceName,
66
+ };
67
+ }
68
+ createARecord() {
69
+ const { aRecords } = this.args;
70
+ if (!aRecords)
71
+ return;
72
+ this.addARecords(aRecords);
73
+ }
74
+ addARecords(aRecords) {
75
+ return aRecords.map((aRecord) => this.addRecordSet(aRecord.name, {
76
+ recordType: 'A',
77
+ aRecords: pulumi.output(aRecord.ipv4Address).apply((ips) => ips.map((i) => ({ ipv4Address: i }))),
78
+ }));
79
+ }
80
+ addRecordSet(name, props) {
81
+ const group = this.getRsGroupInfo();
82
+ return new privateDns.PrivateRecordSet(`${this._rsName}-${helpers.getDnsRecordName(name)}-${props.recordType}`, {
83
+ ...props,
84
+ ...group,
85
+ privateZoneName: this.resourceName,
86
+ relativeRecordSetName: name,
87
+ ttl: 3600,
88
+ }, { parent: this });
89
+ }
90
+ createVnetLinks(zone) {
91
+ const group = this.getRsGroupInfo();
92
+ pulumi.output(this.args.vnetLinks).apply((vids) => vids.map((v) => {
93
+ const vnetName = helpers_2.rsHelpers.getRsNameFromId(v.vnetId);
94
+ return new privateDns.VirtualNetworkLink(`${this._rsName}-${vnetName}`, {
95
+ ...group,
96
+ privateZoneName: zone.name,
97
+ registrationEnabled: false,
98
+ virtualNetwork: { id: v.vnetId },
99
+ }, { dependsOn: zone, parent: this });
100
+ }));
101
+ }
102
+ getRsGroupInfo() {
103
+ const group = this.args.rsGroup;
104
+ return {
105
+ resourceGroupName: group.resourceGroupName,
106
+ location: 'global',
107
+ };
108
+ }
109
+ }
110
+ exports.PrivateDnsZone = PrivateDnsZone;
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpdmF0ZURuc1pvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm5ldC9Qcml2YXRlRG5zWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0RUFBOEQ7QUFDOUQsdURBQXlDO0FBQ3pDLHlEQUFzRDtBQUN0RCw2Q0FBMkQ7QUFDM0Qsd0NBQXVDO0FBRXZDLG1EQUFxQztBQWdCckMsTUFBYSxjQUFlLFNBQVEsNkJBQWlDO0lBQzNELE9BQU8sQ0FBUztJQUVSLEVBQUUsQ0FBd0I7SUFDMUIsWUFBWSxDQUF3QjtJQUVwRCxZQUFZLElBQVksRUFBRSxJQUF3QixFQUFFLElBQXNDO1FBQ3hGLEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVwQyxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQ3JDLElBQUksQ0FBQyxPQUFPLEVBQ1o7WUFDRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixlQUFlLEVBQUUsSUFBSTtTQUN0QixFQUNELEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxD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
@@ -0,0 +1,43 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import { BaseComponent } from '../base/BaseComponent';
3
+ import * as types from '../types';
4
+ export type PrivateEndpointServices = 'azApi' | 'azSearch' | 'azConfig' | 'azurecr' | 'keyVault' | 'mysql' | 'postgres' | 'redis' | 'serviceBus' | 'signalR' | 'sqlServer' | 'storage';
5
+ export type StorageEndpointTypes = 'blob' | 'dfs' | 'file' | 'queue' | 'table' | 'web';
6
+ export type PrivateEndpointType = {
7
+ subnetInfo: {
8
+ /** Specify the IP address of the subnet as a static IP instead of using DHCP */
9
+ staticPrivateIp?: pulumi.Input<string>;
10
+ subnetId: pulumi.Input<string>;
11
+ };
12
+ /** Link the private DNS zone to these Vnet also */
13
+ vnetLinks: Array<pulumi.Input<{
14
+ vnetId: string;
15
+ }>>;
16
+ };
17
+ export interface PrivateEndpointArgs extends types.WithResourceGroupInputs, PrivateEndpointType {
18
+ type: PrivateEndpointServices;
19
+ storageType?: StorageEndpointTypes;
20
+ resourceInfo: pulumi.CustomResource;
21
+ }
22
+ export declare class PrivateEndpoint extends BaseComponent<PrivateEndpointArgs> {
23
+ readonly privateEndpoint: pulumi.Output<{
24
+ privateIpAddresses: string[];
25
+ id: string;
26
+ }>;
27
+ readonly privateDnsZone: pulumi.Output<{
28
+ name: string;
29
+ id: string;
30
+ }>;
31
+ constructor(name: string, args: PrivateEndpointArgs, opts?: pulumi.ComponentResourceOptions);
32
+ getOutputs(): {
33
+ privateEndpoint: pulumi.Output<{
34
+ privateIpAddresses: string[];
35
+ id: string;
36
+ }>;
37
+ privateDnsZone: pulumi.Output<{
38
+ name: string;
39
+ id: string;
40
+ }>;
41
+ };
42
+ private getPrivateEndpointProps;
43
+ }
@@ -0,0 +1,181 @@
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.PrivateEndpoint = void 0;
37
+ const network = __importStar(require("@pulumi/azure-native/network"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const BaseComponent_1 = require("../base/BaseComponent");
40
+ const helpers_1 = require("../base/helpers");
41
+ const helpers_2 = require("../helpers");
42
+ const helpers = __importStar(require("./helpers"));
43
+ const PrivateDnsZone_1 = require("./PrivateDnsZone");
44
+ class PrivateEndpoint extends BaseComponent_1.BaseComponent {
45
+ privateEndpoint;
46
+ privateDnsZone;
47
+ constructor(name, args, opts) {
48
+ super((0, helpers_1.getComponentResourceType)('PrivateEndpoint'), name, args, opts);
49
+ const linkInfo = this.getPrivateEndpointProps();
50
+ const privateEndpoint = new network.PrivateEndpoint(name, {
51
+ ...args.rsGroup,
52
+ subnet: { id: args.subnetInfo.subnetId },
53
+ customDnsConfigs: args.subnetInfo.staticPrivateIp
54
+ ? [
55
+ {
56
+ ipAddresses: [args.subnetInfo.staticPrivateIp],
57
+ },
58
+ ]
59
+ : undefined,
60
+ ipConfigurations: args.subnetInfo.staticPrivateIp
61
+ ? [
62
+ {
63
+ name: `${name}-ipconfig`,
64
+ groupId: linkInfo.linkServiceGroupIds[0],
65
+ memberName: linkInfo.linkServiceGroupIds[0],
66
+ privateIPAddress: args.subnetInfo.staticPrivateIp,
67
+ },
68
+ ]
69
+ : undefined,
70
+ privateLinkServiceConnections: [
71
+ {
72
+ name: `${name}-conn`,
73
+ groupIds: linkInfo.linkServiceGroupIds,
74
+ privateLinkServiceId: args.resourceInfo.id,
75
+ },
76
+ ],
77
+ }, {
78
+ ...opts,
79
+ parent: this,
80
+ });
81
+ const privateIpAddresses = privateEndpoint.customDnsConfigs.apply((c) => c.flatMap((i) => i.ipAddresses));
82
+ const zone = pulumi.output(args.resourceInfo.id).apply((rsId) => {
83
+ const vnetLinks = [
84
+ ...args.vnetLinks,
85
+ pulumi.output(args.subnetInfo.subnetId).apply((id) => ({ vnetId: helpers.getVnetIdFromSubnetId(id) })),
86
+ ];
87
+ return new PrivateDnsZone_1.PrivateDnsZone(`${helpers_2.rsHelpers.getRsNameFromId(rsId)}.${linkInfo.privateDnsZoneName}`, {
88
+ rsGroup: args.rsGroup,
89
+ vnetLinks,
90
+ aRecords: [{ name: '*', ipv4Address: privateIpAddresses }],
91
+ }, {
92
+ dependsOn: privateEndpoint,
93
+ parent: this,
94
+ });
95
+ });
96
+ this.privateEndpoint = pulumi.output({
97
+ id: privateEndpoint.id,
98
+ privateIpAddresses,
99
+ });
100
+ this.privateDnsZone = zone.id.apply((id) => ({ id, name }));
101
+ this.registerOutputs(this.getOutputs());
102
+ }
103
+ getOutputs() {
104
+ return {
105
+ privateEndpoint: this.privateEndpoint,
106
+ privateDnsZone: this.privateDnsZone,
107
+ };
108
+ }
109
+ getPrivateEndpointProps() {
110
+ const { type, storageType } = this.args;
111
+ switch (type) {
112
+ case 'azApi':
113
+ return {
114
+ privateDnsZoneName: 'privatelink.azure-api.net',
115
+ linkServiceGroupIds: ['Gateway'],
116
+ };
117
+ case 'azSearch':
118
+ return {
119
+ privateDnsZoneName: 'privatelink.search.windows.net',
120
+ linkServiceGroupIds: ['searchService'],
121
+ };
122
+ case 'azConfig':
123
+ return {
124
+ privateDnsZoneName: 'privatelink.azconfig.io',
125
+ linkServiceGroupIds: ['configurationStores'],
126
+ };
127
+ case 'azurecr':
128
+ return {
129
+ privateDnsZoneName: 'privatelink.azurecr.io',
130
+ linkServiceGroupIds: ['azurecr'],
131
+ };
132
+ case 'keyVault':
133
+ return {
134
+ privateDnsZoneName: 'privatelink.vaultcore.azure.net',
135
+ linkServiceGroupIds: ['keyVault'],
136
+ };
137
+ case 'mysql':
138
+ return {
139
+ privateDnsZoneName: 'mysql.database.azure.com',
140
+ linkServiceGroupIds: ['mysql'],
141
+ };
142
+ case 'postgres':
143
+ return {
144
+ privateDnsZoneName: 'privatelink.postgres.database.azure.com',
145
+ linkServiceGroupIds: ['postgresqlServer'],
146
+ };
147
+ case 'redis':
148
+ return {
149
+ privateDnsZoneName: 'privatelink.redis.cache.windows.net',
150
+ linkServiceGroupIds: ['redisCache'],
151
+ };
152
+ case 'serviceBus':
153
+ return {
154
+ privateDnsZoneName: 'privatelink.servicebus.windows.net',
155
+ linkServiceGroupIds: ['namespace'],
156
+ };
157
+ case 'signalR':
158
+ return {
159
+ privateDnsZoneName: 'privatelink.service.signalr.net',
160
+ linkServiceGroupIds: ['signalr'],
161
+ };
162
+ case 'sqlServer':
163
+ return {
164
+ privateDnsZoneName: 'privatelink.database.windows.net',
165
+ linkServiceGroupIds: ['sqlServer'],
166
+ };
167
+ case 'storage':
168
+ if (!storageType) {
169
+ throw new Error('Storage type must be specified for storage private endpoints');
170
+ }
171
+ return {
172
+ privateDnsZoneName: `privatelink.${storageType}.core.windows.net`,
173
+ linkServiceGroupIds: [storageType],
174
+ };
175
+ default:
176
+ throw new Error(`Unsupported private endpoint type: ${this.args.type}`);
177
+ }
178
+ }
179
+ }
180
+ exports.PrivateEndpoint = PrivateEndpoint;
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpdmF0ZUVuZHBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZuZXQvUHJpdmF0ZUVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNFQUF3RDtBQUN4RCx1REFBeUM7QUFDekMseURBQXNEO0FBQ3RELDZDQUEyRDtBQUMzRCx3Q0FBdUM7QUFFdkMsbURBQXFDO0FBQ3JDLHFEQUFrRDtBQWtDbEQsTUFBYSxlQUFnQixTQUFRLDZCQUFrQztJQUNyRCxlQUFlLENBRzVCO0lBQ2EsY0FBYyxDQUczQjtJQUVILFlBQVksSUFBWSxFQUFFLElBQXlCLEVBQUUsSUFBc0M7UUFDekYsS0FBSyxDQUFDLElBQUEsa0NBQXdCLEVBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXJFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBRWhELE1BQU0sZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FDakQsSUFBSSxFQUNKO1lBQ0UsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWU7Z0JBQy9DLENBQUMsQ0FBQztvQkFDRTt3QkFDRSxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztxQkFDL0M7aUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7WUFDYixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWU7Z0JBQy9DLENBQUMsQ0FBQztvQkFDRTt3QkFDRSxJQUFJLEVBQUUsR0FBRyxJQUFJLFdBQVc7d0JBQ3hCLE9BQU8sRUFBRSxRQUFRLENB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
@@ -0,0 +1,22 @@
1
+ import * as network from '@pulumi/azure-native/network';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseComponent } from '../base/BaseComponent';
4
+ import * as types from '../types';
5
+ export type RouteArgs = Omit<network.RouteArgs, 'id' | 'resourceGroupName' | 'routeTableName' | 'name' | 'nextHopType' | 'routeTableName' | 'routeName' | 'type'> & {
6
+ nextHopType: network.RouteNextHopType;
7
+ };
8
+ export interface RouteTableArgs extends types.WithResourceGroupInputs, Pick<network.RouteTableArgs, 'disableBgpRoutePropagation'> {
9
+ routes?: Array<RouteArgs & {
10
+ name: string;
11
+ }>;
12
+ }
13
+ export declare class RouteTable extends BaseComponent<RouteTableArgs> {
14
+ readonly id: pulumi.Output<string>;
15
+ readonly resourceName: pulumi.Output<string>;
16
+ constructor(name: string, args: RouteTableArgs, opts?: pulumi.ComponentResourceOptions);
17
+ getOutputs(): {
18
+ id: pulumi.Output<string>;
19
+ resourceName: pulumi.Output<string>;
20
+ };
21
+ addRoute(name: string, props: RouteArgs): import("@pulumi/azure-native/network/route").Route;
22
+ }
@@ -0,0 +1,75 @@
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.RouteTable = void 0;
37
+ const network = __importStar(require("@pulumi/azure-native/network"));
38
+ const BaseComponent_1 = require("../base/BaseComponent");
39
+ const helpers_1 = require("../base/helpers");
40
+ class RouteTable extends BaseComponent_1.BaseComponent {
41
+ id;
42
+ resourceName;
43
+ constructor(name, args, opts) {
44
+ super((0, helpers_1.getComponentResourceType)('RouteTable'), name, args, opts);
45
+ const { rsGroup, routes = [], ...props } = args;
46
+ const tb = new network.RouteTable(name, {
47
+ ...props,
48
+ ...rsGroup,
49
+ routes: undefined,
50
+ }, { ...opts, ignoreChanges: ['routes'], parent: this });
51
+ this.id = tb.id;
52
+ this.resourceName = tb.name;
53
+ routes.map((r) => {
54
+ this.addRoute(r.name, { ...r, ...rsGroup });
55
+ });
56
+ this.registerOutputs(this.getOutputs());
57
+ }
58
+ getOutputs() {
59
+ return {
60
+ id: this.id,
61
+ resourceName: this.resourceName,
62
+ };
63
+ }
64
+ addRoute(name, props) {
65
+ const { rsGroup } = this.args;
66
+ return new network.Route(`${this.name}-${name}`, {
67
+ ...rsGroup,
68
+ ...props,
69
+ routeTableName: this.resourceName,
70
+ routeName: name,
71
+ });
72
+ }
73
+ }
74
+ exports.RouteTable = RouteTable;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92bmV0L1JvdXRlVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0VBQXdEO0FBRXhELHlEQUFzRDtBQUN0RCw2Q0FBMkQ7QUFvQjNELE1BQWEsVUFBVyxTQUFRLDZCQUE2QjtJQUMzQyxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBb0IsRUFBRSxJQUFzQztRQUNwRixLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUNoRCxNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQy9CLElBQUksRUFDSjtZQUNFLEdBQUcsS0FBSztZQUNSLEdBQUcsT0FBTztZQUNWLE1BQU0sRUFBRSxTQUFTO1NBQ2xCLEVBQ0QsRUFBRSxHQUFHLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ3JELENBQUM7UUFFRixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBRTVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVksRUFBRSxLQUFnQjtRQUM1QyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUU7WUFDL0MsR0FBRyxPQUFPO1lBQ1YsR0FBRyxLQUFLO1lBQ1IsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ2pDLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVDRCxnQ0E0Q0MifQ==
@@ -0,0 +1,99 @@
1
+ import * as network from '@pulumi/azure-native/network';
2
+ import * as inputs from '@pulumi/azure-native/types/input';
3
+ import * as pulumi from '@pulumi/pulumi';
4
+ import { BaseResourceComponent, CommonBaseArgs } from '../base';
5
+ import * as types from '../types';
6
+ import { BasionArgs } from './Basion';
7
+ import { FirewallArgs } from './Firewall';
8
+ import { NetworkPeeringArgs } from './NetworkPeering';
9
+ import { RouteTableArgs } from './RouteTable';
10
+ import { VpnGatewayArgs } from './VpnGateway';
11
+ export type SubnetArgs = Pick<network.SubnetArgs, 'applicationGatewayIPConfigurations' | 'delegations' | 'ipamPoolPrefixAllocations' | 'privateEndpointNetworkPolicies' | 'privateLinkServiceNetworkPolicies' | 'serviceEndpointPolicies' | 'serviceEndpoints' | 'sharingScope'> & {
12
+ subnetName: string;
13
+ addressPrefix: pulumi.Input<string>;
14
+ disableSecurityGroup?: boolean;
15
+ disableRouteTable?: boolean;
16
+ disableNatGateway?: boolean;
17
+ };
18
+ export interface HubVnetArgs extends CommonBaseArgs {
19
+ /**
20
+ * An array of public ip addresses associated with the nat gateway resource.
21
+ */
22
+ publicIpAddresses?: types.ResourceInputs[];
23
+ securityGroup?: Pick<network.NetworkSecurityGroupArgs, 'flushConnection'> & {
24
+ securityRules?: pulumi.Input<inputs.network.SecurityRuleArgs>[];
25
+ };
26
+ routeTable?: Omit<RouteTableArgs, 'rsGroup'>;
27
+ natGateway?: Pick<network.NatGatewayArgs, 'idleTimeoutInMinutes' | 'zones'> & {
28
+ sku: network.NatGatewaySkuName;
29
+ };
30
+ vpnGateway?: Omit<VpnGatewayArgs, 'rsGroup' | 'subnetId'> & {
31
+ subnetPrefix: pulumi.Input<string>;
32
+ };
33
+ basion?: Omit<BasionArgs, 'rsGroup' | 'subnetId'> & {
34
+ subnetPrefix: pulumi.Input<string>;
35
+ };
36
+ firewall?: Omit<FirewallArgs, 'managementIpConfiguration' | 'ipConfigurations' | 'hubIPAddresses' | 'rsGroup'> & {
37
+ subnetPrefix: pulumi.Input<string>;
38
+ managementSubnetPrefix?: pulumi.Input<string>;
39
+ managementPublicIpAddress?: types.SubResourceInputs;
40
+ };
41
+ vnetPeering?: Omit<NetworkPeeringArgs, 'firstVnet' | 'secondVnet'> & {
42
+ vnet: types.ResourceInputs;
43
+ };
44
+ vnet: Omit<network.VirtualNetworkArgs, 'addressSpace' | 'enableVmProtection' | 'encryption' | 'subnets' | 'id' | 'location' | 'resourceGroupName' | 'virtualNetworkName' | 'virtualNetworkPeerings'> & {
45
+ defaultOutboundAccess?: pulumi.Input<boolean>;
46
+ addressPrefixes?: pulumi.Input<string>[];
47
+ subnets: Array<SubnetArgs>;
48
+ };
49
+ }
50
+ export declare class HubVnet extends BaseResourceComponent<HubVnetArgs> {
51
+ readonly basion?: types.ResourceOutputs;
52
+ readonly securityGroup?: types.ResourceOutputs;
53
+ readonly routeTable: types.ResourceOutputs;
54
+ readonly natGateway?: types.ResourceOutputs;
55
+ readonly vpnGateway?: types.ResourceOutputs;
56
+ readonly firewall?: types.ResourceOutputs;
57
+ readonly vnet: types.ResourceOutputs;
58
+ readonly subnets: Record<string, types.ResourceOutputs>;
59
+ constructor(name: string, args: HubVnetArgs, opts?: pulumi.ComponentResourceOptions);
60
+ getOutputs(): {
61
+ securityGroup: {
62
+ resourceName: pulumi.Output<string>;
63
+ id: pulumi.Output<string>;
64
+ } | undefined;
65
+ routeTable: {
66
+ resourceName: pulumi.Output<string>;
67
+ id: pulumi.Output<string>;
68
+ };
69
+ natGateway: {
70
+ resourceName: pulumi.Output<string>;
71
+ id: pulumi.Output<string>;
72
+ } | undefined;
73
+ vpnGateway: {
74
+ resourceName: pulumi.Output<string>;
75
+ id: pulumi.Output<string>;
76
+ } | undefined;
77
+ firewall: {
78
+ resourceName: pulumi.Output<string>;
79
+ id: pulumi.Output<string>;
80
+ } | undefined;
81
+ vnet: {
82
+ resourceName: pulumi.Output<string>;
83
+ id: pulumi.Output<string>;
84
+ };
85
+ subnets: Record<string, {
86
+ resourceName: pulumi.Output<string>;
87
+ id: pulumi.Output<string>;
88
+ }>;
89
+ };
90
+ private createSecurityGroup;
91
+ private createRouteTable;
92
+ private createNatGateway;
93
+ private createVpnGateway;
94
+ private createFirewall;
95
+ private createBasion;
96
+ private createVnet;
97
+ private createSubnets;
98
+ private createPeering;
99
+ }