@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,311 @@
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.HubVnet = void 0;
37
+ const network = __importStar(require("@pulumi/azure-native/network"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const base_1 = require("../base");
40
+ const Basion_1 = require("./Basion");
41
+ const Firewall_1 = require("./Firewall");
42
+ const helpers = __importStar(require("./helpers"));
43
+ const NetworkPeering_1 = require("./NetworkPeering");
44
+ const RouteTable_1 = require("./RouteTable");
45
+ const securityRules_1 = require("./securityRules");
46
+ const VpnGateway_1 = require("./VpnGateway");
47
+ class HubVnet extends base_1.BaseResourceComponent {
48
+ basion;
49
+ securityGroup;
50
+ routeTable;
51
+ natGateway;
52
+ vpnGateway;
53
+ firewall;
54
+ vnet;
55
+ subnets;
56
+ constructor(name, args, opts) {
57
+ super('HubVnet', name, args, opts);
58
+ const securityGroup = this.createSecurityGroup();
59
+ const routeTable = this.createRouteTable();
60
+ const natGateway = this.createNatGateway();
61
+ const { vnet, subnets } = this.createVnet({ natGateway, routeTable, securityGroup });
62
+ const firewall = this.createFirewall(subnets);
63
+ const basion = this.createBasion(subnets);
64
+ const vpnGateway = this.createVpnGateway(subnets);
65
+ //this.createOutboundRoute({ router: routeTable!, natGateway, firewall });
66
+ this.createPeering(vnet);
67
+ if (basion)
68
+ this.basion = { id: basion.id, resourceName: basion.resourceName };
69
+ if (securityGroup)
70
+ this.securityGroup = { id: securityGroup.id, resourceName: securityGroup.name };
71
+ this.routeTable = { id: routeTable.id, resourceName: routeTable.resourceName };
72
+ if (natGateway)
73
+ this.natGateway = { id: natGateway.id, resourceName: natGateway.name };
74
+ if (vpnGateway)
75
+ this.vpnGateway = { id: vpnGateway.id, resourceName: vpnGateway.resourceName };
76
+ if (firewall)
77
+ this.firewall = firewall.firewall;
78
+ this.vnet = { id: vnet.id, resourceName: vnet.name };
79
+ this.subnets = base_1.baseHelpers.recordMap(subnets, (s) => ({ id: s.id, resourceName: s.name.apply((n) => n) }));
80
+ this.registerOutputs();
81
+ }
82
+ getOutputs() {
83
+ return {
84
+ securityGroup: this.securityGroup,
85
+ routeTable: this.routeTable,
86
+ natGateway: this.natGateway,
87
+ vpnGateway: this.vpnGateway,
88
+ firewall: this.firewall,
89
+ vnet: this.vnet,
90
+ subnets: this.subnets,
91
+ };
92
+ }
93
+ createSecurityGroup() {
94
+ const { rsGroup, securityGroup, basion } = this.args;
95
+ if (!securityGroup)
96
+ return undefined;
97
+ const { securityRules = [], ...props } = securityGroup;
98
+ if (basion) {
99
+ securityRules.push(...(0, securityRules_1.getBasionSecurityRules)({ bastionAddressPrefix: basion.subnetPrefix }));
100
+ }
101
+ return new network.NetworkSecurityGroup(`${this.name}-nsg`, {
102
+ ...rsGroup,
103
+ ...props,
104
+ securityRules,
105
+ }, { dependsOn: this.opts?.dependsOn, parent: this });
106
+ }
107
+ createRouteTable() {
108
+ const { rsGroup, firewall, routeTable = {} } = this.args;
109
+ const { routes = [], ...routeProps } = routeTable;
110
+ if (firewall) {
111
+ routes.push({
112
+ name: 'Internet',
113
+ ...helpers.defaultRouteRules.defaultInternetRoute,
114
+ });
115
+ }
116
+ return new RouteTable_1.RouteTable(`${this.name}-tb`, {
117
+ rsGroup,
118
+ ...routeProps,
119
+ routes,
120
+ }, { dependsOn: this.opts?.dependsOn, parent: this });
121
+ }
122
+ createNatGateway() {
123
+ const { rsGroup, natGateway, publicIpAddresses } = this.args;
124
+ if (!natGateway)
125
+ return undefined;
126
+ if (!publicIpAddresses)
127
+ throw new Error('PublicIpAddresses is required when NatGateway is created');
128
+ return new network.NatGateway(`${this.name}-ngw`, {
129
+ ...rsGroup,
130
+ ...natGateway,
131
+ sku: { name: natGateway.sku },
132
+ publicIpAddresses,
133
+ }, { dependsOn: this.opts?.dependsOn, parent: this });
134
+ }
135
+ createVpnGateway(subnets) {
136
+ const { rsGroup, vpnGateway } = this.args;
137
+ if (!vpnGateway)
138
+ return undefined;
139
+ const vpnSubnet = subnets[helpers.AzureSubnetNames.GatewaySubnetName];
140
+ return new VpnGateway_1.VpnGateway(`${this.name}-vpn`, {
141
+ ...vpnGateway,
142
+ rsGroup,
143
+ subnetId: vpnSubnet.id,
144
+ }, { dependsOn: vpnSubnet, parent: this });
145
+ }
146
+ createFirewall(subnets) {
147
+ const { rsGroup, natGateway, publicIpAddresses, firewall } = this.args;
148
+ if (!firewall)
149
+ return undefined;
150
+ const firewallSubnet = subnets[helpers.AzureSubnetNames.AzFirewallSubnet];
151
+ const firewallManageSubnet = subnets[helpers.AzureSubnetNames.AzFirewallManagementSubnet];
152
+ return new Firewall_1.Firewall(`${this.name}-fw`, {
153
+ ...firewall,
154
+ rsGroup,
155
+ managementIpConfiguration: firewallManageSubnet && firewall.managementPublicIpAddress
156
+ ? {
157
+ name: `${this.name}-fw-management`,
158
+ publicIPAddress: firewall.managementPublicIpAddress,
159
+ subnet: { id: firewallManageSubnet.id },
160
+ }
161
+ : undefined,
162
+ ipConfigurations: publicIpAddresses
163
+ ? pulumi.output(publicIpAddresses).apply((ips) => ips.map((i, index) => ({
164
+ name: `${this.name}-${i.resourceName}-ip-config`,
165
+ //Only link the public Ip Address when nateGateway not created.
166
+ publicIPAddress: natGateway ? undefined : i,
167
+ //Only link the subnet to the first ipConfigurations
168
+ subnet: index === 0 ? { id: firewallSubnet.id } : undefined,
169
+ })))
170
+ : [
171
+ {
172
+ name: `${this.name}-ip-config`,
173
+ subnet: { id: firewallSubnet.id },
174
+ },
175
+ ],
176
+ }, { dependsOn: firewallManageSubnet ? [firewallManageSubnet, firewallSubnet] : firewallSubnet, parent: this });
177
+ }
178
+ createBasion(subnets) {
179
+ const { rsGroup, basion } = this.args;
180
+ if (!basion)
181
+ return undefined;
182
+ const basionSubnet = subnets[helpers.AzureSubnetNames.AzBastionSubnetName];
183
+ return new Basion_1.Basion(`${this.name}-bastion`, {
184
+ ...basion,
185
+ rsGroup,
186
+ subnetId: basionSubnet.id,
187
+ network: { ...basion.network },
188
+ }, { dependsOn: basionSubnet, parent: this });
189
+ }
190
+ createVnet({ natGateway, routeTable, securityGroup, }) {
191
+ const { rsGroup, firewall, basion, vpnGateway, vnet } = this.args;
192
+ const subnets = vnet.subnets ?? [];
193
+ const dependsOn = [];
194
+ if (firewall) {
195
+ //If NateGateway is together with Firewall, then NatGateway must be link to the Firewall Subnet only.
196
+ if (natGateway) {
197
+ subnets.forEach((s) => {
198
+ s.disableNatGateway = true;
199
+ });
200
+ }
201
+ subnets.push({
202
+ subnetName: helpers.AzureSubnetNames.AzFirewallSubnet,
203
+ addressPrefix: firewall.subnetPrefix,
204
+ disableSecurityGroup: true,
205
+ disableRouteTable: false,
206
+ disableNatGateway: false,
207
+ });
208
+ if (firewall.managementSubnetPrefix) {
209
+ subnets.push({
210
+ subnetName: helpers.AzureSubnetNames.AzFirewallManagementSubnet,
211
+ addressPrefix: firewall.managementSubnetPrefix,
212
+ disableSecurityGroup: true,
213
+ disableRouteTable: true,
214
+ disableNatGateway: true,
215
+ });
216
+ }
217
+ }
218
+ if (basion) {
219
+ subnets.push({
220
+ subnetName: helpers.AzureSubnetNames.AzBastionSubnetName,
221
+ addressPrefix: basion.subnetPrefix,
222
+ disableSecurityGroup: false,
223
+ disableRouteTable: true,
224
+ disableNatGateway: true,
225
+ });
226
+ }
227
+ if (vpnGateway) {
228
+ subnets.push({
229
+ subnetName: helpers.AzureSubnetNames.GatewaySubnetName,
230
+ addressPrefix: vpnGateway.subnetPrefix,
231
+ disableSecurityGroup: true,
232
+ disableRouteTable: true,
233
+ disableNatGateway: true,
234
+ });
235
+ }
236
+ if (natGateway)
237
+ dependsOn.push(natGateway);
238
+ if (routeTable)
239
+ dependsOn.push(routeTable);
240
+ if (securityGroup)
241
+ dependsOn.push(securityGroup);
242
+ const vn = new network.VirtualNetwork(`${this.name}-vnet`, {
243
+ ...rsGroup,
244
+ ...vnet,
245
+ addressSpace: {
246
+ addressPrefixes: vnet.addressPrefixes ?? subnets.map((s) => s.addressPrefix),
247
+ },
248
+ subnets: [],
249
+ virtualNetworkPeerings: [],
250
+ enableVmProtection: true,
251
+ encryption: {
252
+ enabled: true,
253
+ enforcement: network.VirtualNetworkEncryptionEnforcement.AllowUnencrypted,
254
+ },
255
+ }, { dependsOn, ignoreChanges: ['virtualNetworkPeerings', 'subnets'], parent: this });
256
+ const subs = this.createSubnets({
257
+ subnets,
258
+ vnet: vn,
259
+ natGateway,
260
+ routeTable,
261
+ securityGroup,
262
+ });
263
+ return { vnet: vn, subnets: subs };
264
+ }
265
+ createSubnets({ subnets, vnet, natGateway, routeTable, securityGroup, }) {
266
+ const { rsGroup, vnet: { defaultOutboundAccess }, } = this.args;
267
+ const rs = {};
268
+ subnets
269
+ .sort((a, b) => a.subnetName.localeCompare(b.subnetName))
270
+ .map((s) => (rs[s.subnetName] = new network.Subnet(`${this.name}-${s.subnetName}`, {
271
+ ...s,
272
+ ...rsGroup,
273
+ virtualNetworkName: vnet.name,
274
+ //Not allows outbound by default and it will be controlling by NatGateway or Firewall
275
+ defaultOutboundAccess: defaultOutboundAccess ?? false,
276
+ routeTable: s.disableRouteTable ? undefined : routeTable ? { id: routeTable.id } : undefined,
277
+ networkSecurityGroup: s.disableSecurityGroup
278
+ ? undefined
279
+ : securityGroup
280
+ ? { id: securityGroup.id }
281
+ : undefined,
282
+ natGateway: s.disableNatGateway ? undefined : natGateway ? { id: natGateway.id } : undefined,
283
+ }, { dependsOn: vnet, deleteBeforeReplace: true, parent: this })));
284
+ return rs;
285
+ }
286
+ // private createOutboundRoute({
287
+ // router,
288
+ // firewall,
289
+ // natGateway,
290
+ // }: {
291
+ // router: RouteTable;
292
+ // natGateway?: network.NatGateway;
293
+ // firewall?: Firewall;
294
+ // }) {
295
+ // if (natGateway && !firewall) {
296
+ // return router.addRoute('Internet-via-Gateway', helpers.defaultRouteRules.defaultGatewayRoute);
297
+ // }
298
+ // }
299
+ createPeering(vnet) {
300
+ const { vnetPeering } = this.args;
301
+ if (!vnetPeering)
302
+ return undefined;
303
+ return new NetworkPeering_1.NetworkPeering(`${this.name}-peering`, {
304
+ ...vnetPeering,
305
+ firstVnet: { id: vnet.id, resourceName: vnet.name },
306
+ secondVnet: vnetPeering.vnet,
307
+ }, { dependsOn: vnet, parent: this });
308
+ }
309
+ }
310
+ exports.HubVnet = HubVnet;
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbE5ldHdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm5ldC9WaXJ0dWFsTmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzRUFBd0Q7QUFFeEQsdURBQXlDO0FBQ3pDLGtDQUE2RTtBQUU3RSxxQ0FBOEM7QUFDOUMseUNBQW9EO0FBQ3BELG1EQUFxQztBQUNyQyxxREFBc0U7QUFDdEUsNkNBQTBEO0FBQzFELG1EQUF5RDtBQUN6RCw2Q0FBMEQ7QUE2RDFELE1BQWEsT0FBUSxTQUFRLDRCQUFrQztJQUM3QyxNQUFNLENBQXlCO0lBQy9CLGFBQWEsQ0FBeUI7SUFDdEMsVUFBVSxDQUF3QjtJQUNsQyxVQUFVLENBQXlCO0lBQ25DLFVBQVUsQ0FBeUI7SUFDbkMsUUFBUSxDQUF5QjtJQUNqQyxJQUFJLENBQXdCO0lBQzVCLE9BQU8sQ0FBd0M7SUFFL0QsWUFBWSxJQUFZLEVBQUUsSUFBaUIsRUFBRSxJQUFzQztRQUNqRixLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0MsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FB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
@@ -0,0 +1,18 @@
1
+ import * as nw 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 interface VpnGatewayArgs extends types.WithResourceGroupInputs, Omit<nw.VirtualNetworkGatewayArgs, 'id' | 'location' | 'ipConfigurations' | 'resourceGroupName' | 'sku' | 'virtualNetworkGatewayName'> {
6
+ sku: nw.VirtualNetworkGatewaySkuName;
7
+ publicIPAddress: types.SubResourceInputs;
8
+ subnetId: pulumi.Input<string>;
9
+ }
10
+ export declare class VpnGateway extends BaseComponent<VpnGatewayArgs> {
11
+ readonly id: pulumi.Output<string>;
12
+ readonly resourceName: pulumi.Output<string>;
13
+ constructor(name: string, args: VpnGatewayArgs, opts?: pulumi.ComponentResourceOptions);
14
+ getOutputs(): {
15
+ id: pulumi.Output<string>;
16
+ resourceName: pulumi.Output<string>;
17
+ };
18
+ }
@@ -0,0 +1,90 @@
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.VpnGateway = void 0;
37
+ const nw = __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
+ class VpnGateway extends BaseComponent_1.BaseComponent {
43
+ id;
44
+ resourceName;
45
+ constructor(name, args, opts) {
46
+ super((0, helpers_1.getComponentResourceType)('VpnGateway'), name, args, opts);
47
+ const { rsGroup, sku, publicIPAddress, subnetId, ...props } = args;
48
+ const vpn = new nw.VirtualNetworkGateway(name, {
49
+ ...rsGroup,
50
+ ...props,
51
+ sku: { name: sku, tier: sku },
52
+ gatewayType: props.gatewayType ?? 'Vpn',
53
+ vpnType: props.vpnType ?? 'RouteBased',
54
+ ipConfigurations: [
55
+ {
56
+ name: 'vnetGatewayConfig',
57
+ publicIPAddress: sku !== 'Basic'
58
+ ? {
59
+ id: publicIPAddress.id,
60
+ }
61
+ : undefined,
62
+ subnet: {
63
+ id: subnetId,
64
+ },
65
+ },
66
+ ],
67
+ vpnClientConfiguration: props.vpnClientConfiguration ?? {
68
+ vpnClientProtocols: ['OpenVPN'],
69
+ vpnClientAddressPool: {
70
+ addressPrefixes: ['172.16.100.0/24'],
71
+ },
72
+ vpnAuthenticationTypes: [nw.VpnAuthenticationType.AAD],
73
+ aadTenant: pulumi.interpolate `https://login.microsoftonline.com/${helpers_2.azureEnv.tenantId}`,
74
+ aadAudience: '41b23e61-6c1e-4545-b367-cd054e0ed4b4',
75
+ aadIssuer: pulumi.interpolate `https://sts.windows.net/${helpers_2.azureEnv.tenantId}/`,
76
+ },
77
+ }, { ...opts, parent: this });
78
+ this.id = vpn.id;
79
+ this.resourceName = vpn.name;
80
+ this.registerOutputs(this.getOutputs());
81
+ }
82
+ getOutputs() {
83
+ return {
84
+ id: this.id,
85
+ resourceName: this.resourceName,
86
+ };
87
+ }
88
+ }
89
+ exports.VpnGateway = VpnGateway;
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVnBuR2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92bmV0L1ZwbkdhdGV3YXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQW1EO0FBQ25ELHVEQUF5QztBQUN6Qyx5REFBc0Q7QUFDdEQsNkNBQTJEO0FBQzNELHdDQUFzQztBQWN0QyxNQUFhLFVBQVcsU0FBUSw2QkFBNkI7SUFDM0MsRUFBRSxDQUF3QjtJQUMxQixZQUFZLENBQXdCO0lBRXBELFlBQVksSUFBWSxFQUFFLElBQW9CLEVBQUUsSUFBc0M7UUFDcEYsS0FBSyxDQUFDLElBQUEsa0NBQXdCLEVBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVoRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRW5FLE1BQU0sR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLHFCQUFxQixDQUN0QyxJQUFJLEVBQ0o7WUFDRSxHQUFHLE9BQU87WUFDVixHQUFHLEtBQUs7WUFDUixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7WUFFN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSztZQUN2QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxZQUFZO1lBRXRDLGdCQUFnQixFQUFFO2dCQUNoQjtvQkFDRSxJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixlQUFlLEVBQ2IsR0FBRyxLQUFLLE9BQU87d0JBQ2IsQ0FBQyxDQUFDOzRCQUNFLEVBQUUsRUFBRSxlQUFlLENBQUMsRUFBRTt5QkFDdkI7d0JBQ0gsQ0FBQyxDQUFDLFNBQVM7b0JBQ2YsTUFBTSxFQUFFO3dCQUNOLEVBQUUsRUFBRSxRQUFRO3FCQUNiO2lCQUNGO2FBQ0Y7WUFFRCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsc0JBQXNCLElBQUk7Z0JBQ3RELGtCQUFrQixFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUMvQixvQkFBb0IsRUFBRTtvQkFDcEIsZUFBZSxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQ3JDO2dCQUVELHNCQUFzQixFQUFFLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztnQkFDdEQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUEscUNBQXFDLGtCQUFRLENBQUMsUUFBUSxFQUFFO2dCQUNyRixXQUFXLEVBQUUsc0NBQXNDO2dCQUNuRCxTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQSwyQkFBMkIsa0JBQVEsQ0FBQyxRQUFRLEdBQUc7YUFDN0U7U0FDRixFQUNELEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBN0RELGdDQTZEQyJ9
@@ -0,0 +1,16 @@
1
+ import { RouteArgs } from './RouteTable';
2
+ export declare function getVnetIdFromSubnetId(subnetId: string): string;
3
+ export declare function getSubnetNameFromId(subnetId: string): string;
4
+ export declare function getDnsRecordName(recordName: string): string;
5
+ export declare enum AzureSubnetNames {
6
+ AppGatewaySubnetName = "app-gateway",
7
+ GatewaySubnetName = "GatewaySubnet",
8
+ AzFirewallSubnet = "AzureFirewallSubnet",
9
+ AzFirewallManagementSubnet = "AzureFirewallManagementSubnet",
10
+ AzBastionSubnetName = "AzureBastionSubnet"
11
+ }
12
+ export declare const defaultServicesEndpoints: string[];
13
+ export declare const defaultRouteRules: {
14
+ defaultInternetRoute: RouteArgs;
15
+ defaultGatewayRoute: RouteArgs;
16
+ };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultRouteRules = exports.defaultServicesEndpoints = exports.AzureSubnetNames = void 0;
4
+ exports.getVnetIdFromSubnetId = getVnetIdFromSubnetId;
5
+ exports.getSubnetNameFromId = getSubnetNameFromId;
6
+ exports.getDnsRecordName = getDnsRecordName;
7
+ function getVnetIdFromSubnetId(subnetId) {
8
+ //The sample SubnetId is /subscriptions/63a31b41-eb5d-4160-9fc9-d30fc00286c9/resourceGroups/sg-dev-aks-vnet/providers/Microsoft.Network/virtualNetworks/sg-vnet-trans/subnets/aks-main-nodes
9
+ return subnetId.split('/subnets')[0];
10
+ }
11
+ function getSubnetNameFromId(subnetId) {
12
+ //The sample SubnetId is /subscriptions/63a31b41-eb5d-4160-9fc9-d30fc00286c9/resourceGroups/sg-dev-aks-vnet/providers/Microsoft.Network/virtualNetworks/sg-vnet-trans/subnets/aks-main-nodes
13
+ return subnetId.split('/subnets')[1];
14
+ }
15
+ function getDnsRecordName(recordName) {
16
+ return recordName === '*' ? `all-aRecord` : recordName === '@' ? `root-aRecord` : `${recordName}-aRecord`;
17
+ }
18
+ var AzureSubnetNames;
19
+ (function (AzureSubnetNames) {
20
+ AzureSubnetNames["AppGatewaySubnetName"] = "app-gateway";
21
+ AzureSubnetNames["GatewaySubnetName"] = "GatewaySubnet";
22
+ AzureSubnetNames["AzFirewallSubnet"] = "AzureFirewallSubnet";
23
+ AzureSubnetNames["AzFirewallManagementSubnet"] = "AzureFirewallManagementSubnet";
24
+ AzureSubnetNames["AzBastionSubnetName"] = "AzureBastionSubnet";
25
+ })(AzureSubnetNames || (exports.AzureSubnetNames = AzureSubnetNames = {}));
26
+ exports.defaultServicesEndpoints = [
27
+ 'Microsoft.AzureActiveDirectory',
28
+ 'Microsoft.AzureCosmosDB',
29
+ 'Microsoft.ContainerRegistry',
30
+ 'Microsoft.EventHub',
31
+ 'Microsoft.KeyVault',
32
+ 'Microsoft.ServiceBus',
33
+ 'Microsoft.Sql',
34
+ 'Microsoft.Storage',
35
+ 'Microsoft.Web',
36
+ ];
37
+ exports.defaultRouteRules = {
38
+ defaultInternetRoute: {
39
+ addressPrefix: '0.0.0.0/0',
40
+ nextHopType: 'Internet',
41
+ },
42
+ defaultGatewayRoute: {
43
+ addressPrefix: '0.0.0.0/0',
44
+ nextHopType: 'VirtualNetworkGateway',
45
+ },
46
+ };
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92bmV0L2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsc0RBR0M7QUFFRCxrREFHQztBQUVELDRDQUVDO0FBWkQsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0I7SUFDcEQsNExBQTRMO0lBQzVMLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsUUFBZ0I7SUFDbEQsNExBQTRMO0lBQzVMLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsVUFBa0I7SUFDakQsT0FBTyxVQUFVLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLFVBQVUsQ0FBQztBQUM1RyxDQUFDO0FBRUQsSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzFCLHdEQUFvQyxDQUFBO0lBQ3BDLHVEQUFtQyxDQUFBO0lBQ25DLDREQUF3QyxDQUFBO0lBQ3hDLGdGQUE0RCxDQUFBO0lBQzVELDhEQUEwQyxDQUFBO0FBQzVDLENBQUMsRUFOVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQU0zQjtBQUVZLFFBQUEsd0JBQXdCLEdBQUc7SUFDdEMsZ0NBQWdDO0lBQ2hDLHlCQUF5QjtJQUN6Qiw2QkFBNkI7SUFDN0Isb0JBQW9CO0lBQ3BCLG9CQUFvQjtJQUNwQixzQkFBc0I7SUFDdEIsZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixlQUFlO0NBQ2hCLENBQUM7QUFFVyxRQUFBLGlCQUFpQixHQUFHO0lBQy9CLG9CQUFvQixFQUFFO1FBQ3BCLGFBQWEsRUFBRSxXQUFXO1FBQzFCLFdBQVcsRUFBRSxVQUFVO0tBQ1g7SUFDZCxtQkFBbUIsRUFBRTtRQUNuQixhQUFhLEVBQUUsV0FBVztRQUMxQixXQUFXLEVBQUUsdUJBQXVCO0tBQ3hCO0NBQ2YsQ0FBQyJ9
@@ -0,0 +1,13 @@
1
+ export * from './AzCdn';
2
+ export * from './Basion';
3
+ export * from './DnsZone';
4
+ export * from './Firewall';
5
+ export * as vnetHelpers from './helpers';
6
+ export * from './IpAddresses';
7
+ export * from './NetworkPeering';
8
+ export * from './PrivateDnsZone';
9
+ export * from './PrivateEndpoint';
10
+ export * from './RouteTable';
11
+ export * from './VirtualNetwork';
12
+ export * from './VpnGateway';
13
+ export * from './securityRules';
package/vnet/index.js ADDED
@@ -0,0 +1,53 @@
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.vnetHelpers = void 0;
40
+ __exportStar(require("./AzCdn"), exports);
41
+ __exportStar(require("./Basion"), exports);
42
+ __exportStar(require("./DnsZone"), exports);
43
+ __exportStar(require("./Firewall"), exports);
44
+ exports.vnetHelpers = __importStar(require("./helpers"));
45
+ __exportStar(require("./IpAddresses"), exports);
46
+ __exportStar(require("./NetworkPeering"), exports);
47
+ __exportStar(require("./PrivateDnsZone"), exports);
48
+ __exportStar(require("./PrivateEndpoint"), exports);
49
+ __exportStar(require("./RouteTable"), exports);
50
+ __exportStar(require("./VirtualNetwork"), exports);
51
+ __exportStar(require("./VpnGateway"), exports);
52
+ __exportStar(require("./securityRules"), exports);
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm5ldC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsMkNBQXlCO0FBQ3pCLDRDQUEwQjtBQUMxQiw2Q0FBMkI7QUFDM0IseURBQXlDO0FBQ3pDLGdEQUE4QjtBQUM5QixtREFBaUM7QUFDakMsbURBQWlDO0FBQ2pDLG9EQUFrQztBQUNsQywrQ0FBNkI7QUFDN0IsbURBQWlDO0FBQ2pDLCtDQUE2QjtBQUM3QixrREFBZ0MifQ==
@@ -0,0 +1,12 @@
1
+ import * as inputs from '@pulumi/azure-native/types/input';
2
+ type RuleItemArgs = Partial<Pick<inputs.network.SecurityRuleArgs, 'description' | 'protocol' | 'sourceAddressPrefix' | 'destinationAddressPrefix' | 'destinationAddressPrefixes' | 'destinationPortRange' | 'destinationPortRanges' | 'sourceAddressPrefixes' | 'sourcePortRange' | 'sourcePortRanges'>>;
3
+ export declare class SecurityRuleBuilder {
4
+ private _rules;
5
+ private addRule;
6
+ allowInbound(name: string, props: RuleItemArgs): SecurityRuleBuilder;
7
+ denyInbound(name: string, props: RuleItemArgs): SecurityRuleBuilder;
8
+ allowOutbound(name: string, props: RuleItemArgs): SecurityRuleBuilder;
9
+ denyOutbound(name: string, props: RuleItemArgs): SecurityRuleBuilder;
10
+ build(startPriority?: number): inputs.network.SecurityRuleArgs[];
11
+ }
12
+ export {};
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecurityRuleBuilder = void 0;
4
+ class SecurityRuleBuilder {
5
+ _rules = [];
6
+ addRule(name, props) {
7
+ this._rules.push({
8
+ name,
9
+ protocol: '*',
10
+ sourceAddressPrefix: '*',
11
+ sourcePortRange: '*',
12
+ destinationAddressPrefix: '*',
13
+ destinationPortRange: '*',
14
+ ...props,
15
+ });
16
+ return this;
17
+ }
18
+ allowInbound(name, props) {
19
+ return this.addRule(name, {
20
+ access: 'Allow',
21
+ direction: 'Inbound',
22
+ ...props,
23
+ });
24
+ }
25
+ denyInbound(name, props) {
26
+ return this.addRule(name, {
27
+ access: 'Deny',
28
+ direction: 'Inbound',
29
+ ...props,
30
+ });
31
+ }
32
+ allowOutbound(name, props) {
33
+ return this.addRule(name, {
34
+ access: 'Allow',
35
+ direction: 'Outbound',
36
+ ...props,
37
+ });
38
+ }
39
+ denyOutbound(name, props) {
40
+ return this.addRule(name, {
41
+ access: 'Deny',
42
+ direction: 'Outbound',
43
+ ...props,
44
+ });
45
+ }
46
+ build(startPriority = 300) {
47
+ const rules = this._rules.map((rule, index) => {
48
+ rule.priority = startPriority + index;
49
+ return rule;
50
+ });
51
+ return rules;
52
+ }
53
+ }
54
+ exports.SecurityRuleBuilder = SecurityRuleBuilder;
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlSdWxlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92bmV0L3NlY3VyaXR5UnVsZXMvU2VjdXJpdHlSdWxlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtQkEsTUFBYSxtQkFBbUI7SUFDdEIsTUFBTSxHQUFzQyxFQUFFLENBQUM7SUFFL0MsT0FBTyxDQUNiLElBQVksRUFDWixLQUFzRztRQUV0RyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNmLElBQUk7WUFDSixRQUFRLEVBQUUsR0FBRztZQUNiLG1CQUFtQixFQUFFLEdBQUc7WUFDeEIsZUFBZSxFQUFFLEdBQUc7WUFDcEIsd0JBQXdCLEVBQUUsR0FBRztZQUM3QixvQkFBb0IsRUFBRSxHQUFHO1lBQ3pCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFZLEVBQUUsS0FBbUI7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN4QixNQUFNLEVBQUUsT0FBTztZQUNmLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBWSxFQUFFLEtBQW1CO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDeEIsTUFBTSxFQUFFLE1BQU07WUFDZCxTQUFTLEVBQUUsU0FBUztZQUNwQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVksRUFBRSxLQUFtQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsU0FBUyxFQUFFLFVBQVU7WUFDckIsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFZLEVBQUUsS0FBbUI7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN4QixNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQXdCLEdBQUc7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQTVERCxrREE0REMifQ==
@@ -0,0 +1,9 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ export declare function getBasionSecurityRules({ bastionAddressPrefix, startPriority, }: {
3
+ bastionAddressPrefix: pulumi.Input<string>;
4
+ startPriority?: number;
5
+ }): import("@pulumi/azure-native/types/input").network.SecurityRuleArgs[];
6
+ export declare function getAppGatewaySecurityRules({ apiGatewayAddressPrefix, startPriority, }: {
7
+ apiGatewayAddressPrefix: pulumi.Input<string>;
8
+ startPriority?: number;
9
+ }): import("@pulumi/azure-native/types/input").network.SecurityRuleArgs[];