@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
package/vnet/AzCdn.js ADDED
@@ -0,0 +1,276 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AzCdn = void 0;
40
+ const CdnHttpsEnable_1 = __importDefault(require("@drunk-pulumi/azure-providers/CdnHttpsEnable"));
41
+ const cdn = __importStar(require("@pulumi/azure-native/cdn"));
42
+ const pulumi = __importStar(require("@pulumi/pulumi"));
43
+ const base_1 = require("../base");
44
+ const helpers_1 = require("../helpers");
45
+ class AzCdn extends base_1.BaseResourceComponent {
46
+ profile;
47
+ endpoint;
48
+ rsGroup;
49
+ constructor(name, args, opts) {
50
+ super('AzCdn', name, args, opts);
51
+ const profile = this.createProfile();
52
+ const rules = this.getEndpointRules();
53
+ const endpoint = new cdn.Endpoint(`${name}-endpoint`, {
54
+ ...args.rsGroup,
55
+ profileName: profile.resourceName,
56
+ origins: [{ name, hostName: args.endpoint.originHost }],
57
+ originHostHeader: args.endpoint.originHost,
58
+ optimizationType: 'GeneralWebDelivery',
59
+ queryStringCachingBehavior: 'IgnoreQueryString',
60
+ deliveryPolicy: {
61
+ rules,
62
+ description: 'Static Website Rules',
63
+ },
64
+ isCompressionEnabled: true,
65
+ contentTypesToCompress: [
66
+ 'text/plain',
67
+ 'text/html',
68
+ 'text/xml',
69
+ 'text/css',
70
+ 'application/xml',
71
+ 'application/xhtml+xml',
72
+ 'application/rss+xml',
73
+ 'application/javascript',
74
+ 'application/x-javascript',
75
+ ],
76
+ isHttpAllowed: true,
77
+ isHttpsAllowed: true,
78
+ }, { ...opts, parent: this });
79
+ this.createCertAndDomains(profile, endpoint);
80
+ this.endpoint = pulumi.output({
81
+ resourceName: endpoint.name,
82
+ id: endpoint.id,
83
+ });
84
+ this.rsGroup = pulumi.output({
85
+ resourceGroupName: args.rsGroup.resourceGroupName,
86
+ location: args.rsGroup.location,
87
+ });
88
+ this.registerOutputs();
89
+ }
90
+ getOutputs() {
91
+ return {
92
+ profile: this.profile,
93
+ endpoint: this.endpoint,
94
+ rsGroup: this.rsGroup,
95
+ };
96
+ }
97
+ createCertAndDomains(profile, endpoint) {
98
+ const { domainNames } = this.args.endpoint;
99
+ if (!domainNames)
100
+ return;
101
+ domainNames.map((d) => {
102
+ const customDomain = new cdn.CustomDomain(`${this.name}-${d}`, {
103
+ ...this.args.rsGroup,
104
+ endpointName: endpoint.name,
105
+ profileName: profile.resourceName,
106
+ customDomainName: d.replace(/\./g, '-'),
107
+ hostName: d,
108
+ }, { dependsOn: endpoint, parent: this });
109
+ return new CdnHttpsEnable_1.default(`${this.name}-${d}`, {
110
+ ...this.args.rsGroup,
111
+ endpointName: endpoint.name,
112
+ profileName: profile.resourceName,
113
+ customDomainName: customDomain.name,
114
+ subscriptionId: helpers_1.azureEnv.subscriptionId,
115
+ }, { dependsOn: customDomain, parent: this });
116
+ });
117
+ }
118
+ createProfile() {
119
+ if (this.args.existingProfile)
120
+ return this.args.existingProfile;
121
+ const profile = new cdn.Profile(`${this.name}-pfl`, {
122
+ resourceGroupName: this.args.rsGroup.resourceGroupName,
123
+ location: 'global',
124
+ identity: { type: cdn.ManagedServiceIdentityType.SystemAssigned },
125
+ sku: { name: this.args.sku ?? cdn.SkuName.Standard_Microsoft },
126
+ }, { parent: this });
127
+ this.addIdentityToRole('readOnly', profile.identity);
128
+ this.profile = pulumi.output({
129
+ resourceName: profile.name,
130
+ id: profile.id,
131
+ });
132
+ return { resourceName: profile.name };
133
+ }
134
+ getEndpointRules() {
135
+ const { endpoint } = this.args;
136
+ const rules = [this.getEnforceHttpsRules(), this.getIndexFileCacheRules()];
137
+ if (endpoint.securityResponseHeaders) {
138
+ rules.push(this.getResponseHeadersRule(endpoint.securityResponseHeaders));
139
+ }
140
+ if (endpoint.cors) {
141
+ rules.push(...this.getCorsRules(endpoint.cors));
142
+ }
143
+ //Update rule order
144
+ rules.forEach((r, i) => (r.order = i + 1));
145
+ return rules;
146
+ }
147
+ getCorsRules(cors) {
148
+ return cors.map((c, i) => ({
149
+ name: `allowsCors${i + 1}`,
150
+ order: 5 + i,
151
+ conditions: [
152
+ {
153
+ name: 'RequestHeader',
154
+ parameters: {
155
+ typeName: 'DeliveryRuleRequestHeaderConditionParameters',
156
+ selector: 'Origin',
157
+ operator: 'Contains',
158
+ transforms: [],
159
+ matchValues: [c],
160
+ negateCondition: false,
161
+ },
162
+ },
163
+ ],
164
+ actions: [
165
+ {
166
+ name: 'ModifyResponseHeader',
167
+ parameters: {
168
+ typeName: 'DeliveryRuleHeaderActionParameters',
169
+ headerAction: 'Overwrite',
170
+ headerName: 'Access-Control-Allow-Origin',
171
+ value: c,
172
+ },
173
+ },
174
+ ],
175
+ }));
176
+ }
177
+ getSecurityResponseHeaders({ allowOrigins, contentSecurityPolicies, }) {
178
+ const rs = {
179
+ 'Strict-Transport-Security': 'max-age=86400; includeSubDomains',
180
+ 'X-XSS-Protection': '1; mode=block',
181
+ 'X-Content-Type-Options': 'nosniff',
182
+ };
183
+ if (contentSecurityPolicies)
184
+ rs['Content-Security-Policy'] = contentSecurityPolicies.join(';');
185
+ if (allowOrigins) {
186
+ rs['Access-Control-Allow-Origin'] = allowOrigins;
187
+ rs['Access-Control-Allow-Credentials'] = 'true';
188
+ }
189
+ return rs;
190
+ }
191
+ getEnforceHttpsRules() {
192
+ return {
193
+ name: 'enforceHttps',
194
+ order: 1,
195
+ conditions: [
196
+ {
197
+ name: 'RequestScheme',
198
+ parameters: {
199
+ matchValues: ['HTTP'],
200
+ operator: 'Equal',
201
+ negateCondition: false,
202
+ typeName: 'DeliveryRuleRequestSchemeConditionParameters',
203
+ },
204
+ },
205
+ ],
206
+ actions: [
207
+ {
208
+ name: 'UrlRedirect',
209
+ parameters: {
210
+ redirectType: 'Found',
211
+ destinationProtocol: 'Https',
212
+ typeName: 'DeliveryRuleUrlRedirectActionParameters',
213
+ },
214
+ },
215
+ ],
216
+ };
217
+ }
218
+ getIndexFileCacheRules() {
219
+ return {
220
+ name: 'indexCache',
221
+ order: 2,
222
+ conditions: [
223
+ {
224
+ name: 'UrlFileName',
225
+ parameters: {
226
+ operator: 'Contains',
227
+ negateCondition: false,
228
+ matchValues: ['index.html'],
229
+ transforms: ['Lowercase'],
230
+ typeName: 'DeliveryRuleUrlFilenameConditionParameters',
231
+ },
232
+ },
233
+ ],
234
+ actions: [
235
+ {
236
+ name: 'CacheExpiration',
237
+ parameters: {
238
+ cacheBehavior: 'Override',
239
+ cacheType: 'All',
240
+ cacheDuration: '08:00:00',
241
+ typeName: 'DeliveryRuleCacheExpirationActionParameters',
242
+ },
243
+ },
244
+ ],
245
+ };
246
+ }
247
+ getResponseHeadersRule = (rules) => {
248
+ return {
249
+ name: 'defaultResponseHeaders',
250
+ order: 3,
251
+ conditions: [
252
+ {
253
+ name: 'UrlPath',
254
+ parameters: {
255
+ operator: 'Any',
256
+ negateCondition: false,
257
+ matchValues: [],
258
+ transforms: [],
259
+ typeName: 'DeliveryRuleUrlPathMatchConditionParameters',
260
+ },
261
+ },
262
+ ],
263
+ actions: Object.keys(rules).map((k) => ({
264
+ name: 'ModifyResponseHeader',
265
+ parameters: {
266
+ headerAction: 'Overwrite',
267
+ headerName: k,
268
+ value: rules[k],
269
+ typeName: 'DeliveryRuleHeaderActionParameters',
270
+ },
271
+ })),
272
+ };
273
+ };
274
+ }
275
+ exports.AzCdn = AzCdn;
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpDZG4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm5ldC9BekNkbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrR0FBMEU7QUFDMUUsOERBQWdEO0FBRWhELHVEQUF5QztBQUN6QyxrQ0FBMEQ7QUFDMUQsd0NBQXNDO0FBb0J0QyxNQUFhLEtBQU0sU0FBUSw0QkFBZ0M7SUFDbEQsT0FBTyxDQUErQjtJQUM3QixRQUFRLENBQThCO0lBQ3RDLE9BQU8sQ0FBeUM7SUFFaEUsWUFBWSxJQUFZLEVBQUUsSUFBZSxFQUFFLElBQXNDO1FBQy9FLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFdEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUMvQixHQUFHLElBQUksV0FBVyxFQUNsQjtZQUNFLEdBQUcsSUFBSSxDQUFDLE9BQU87WUFDZixXQUFXLEVBQUUsT0FBTyxDQUFDLFlBQVk7WUFFakMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVO1lBRTFDLGdCQUFnQixFQUFFLG9CQUFvQjtZQUN0QywwQkFBMEIsRUFBRSxtQkFBbUI7WUFFL0MsY0FBYyxFQUFFO2dCQUNkLEtBQUs7Z0JBQ0wsV0FBVyxFQUFFLHNCQUFzQjthQUNwQztZQUVELG9CQUFvQixFQUFFLElBQUk7WUFDMUIsc0JBQXNCLEVBQUU7Z0JBQ3RCLFlBQVk7Z0JBQ1osV0FBVztnQkFDWCxVQUFVO2dCQUNWLFVBQVU7Z0JBQ1YsaUJBQWlCO2dCQUNqQix1QkFBdUI7Z0JBQ3ZCLHFCQUFxQjtnQkFDckIsd0JBQXdCO2dCQUN4QiwwQkFBMEI7YUFDM0I7WUFFRCxhQUFhLEVBQUUsSUFBSTtZQUNuQixjQUFjLEVBQUUsSUFBSTtTQUNyQixFQUNELEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDNUIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQzNCLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDM0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUI7WUFDakQsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtTQUNoQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxPQUE0QixFQUFFLFFBQXNCO1FBQy9FLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDekIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksQ0FDdkMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUNuQjtnQkFDRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDcEIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUMzQixXQUFXLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2pDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztnQkFDdkMsUUFBUSxFQUFFLENBQUM7YUFDWixFQUNELEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ3RDLENBQUM7WUFFRixPQUFPLElBQUksd0JBQWMsQ0FDdkIsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUNuQjtnQkFDRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDcEIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUMzQixXQUFXLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2pDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUNuQyxjQUFjLEVBQUUsa0JBQVEsQ0FBQyxjQUFjO2FBQ3hDLEVBQ0QsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDMUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRWhFLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FDN0IsR0FBRyxJQUFJLENBQUMsSUFBSSxNQUFNLEVBQ2xCO1lBQ0UsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCO1lBQ3RELFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsMEJBQTBCLENBQUMsY0FBYyxFQUFFO1lBQ2pFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFO1NBQy9ELEVBQ0QsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ2pCLENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDM0IsWUFBWSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQzFCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtTQUNmLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksUUFBUSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDckMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELG1CQUFtQjtRQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFjO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDWixVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLFVBQVUsRUFBRTt3QkFDVixRQUFRLEVBQUUsOENBQThDO3dCQUN4RCxRQUFRLEVBQUUsUUFBUTt3QkFDbEIsUUFBUSxFQUFFLFVBQVU7d0JBQ3BCLFVBQVUsRUFBRSxFQUFFO3dCQUNkLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDaEIsZUFBZSxFQUFFLEtBQUs7cUJBQ3ZCO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLHNCQUFzQjtvQkFDNUIsVUFBVSxFQUFFO3dCQUNWLFFBQVEsRUFBRSxvQ0FBb0M7d0JBQzlDLFlBQVksRUFBRSxXQUFXO3dCQUN6QixVQUFVLEVBQUUsNkJBQTZCO3dCQUN6QyxLQUFLLEVBQUUsQ0FBQztxQkFDVDtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU8sMEJBQTBCLENBQUMsRUFDakMsWUFBWSxFQUNaLHVCQUF1QixHQUl4QjtRQUNDLE1BQU0sRUFBRSxHQUEyQjtZQUNqQywyQkFBMkIsRUFBRSxrQ0FBa0M7WUFDL0Qsa0JBQWtCLEVBQUUsZUFBZTtZQUNuQyx3QkFBd0IsRUFBRSxTQUFTO1NBQ3BDLENBQUM7UUFDRixJQUFJLHVCQUF1QjtZQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUNqRCxFQUFFLENBQUMsa0NBQWtDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSyxFQUFFLENBQUM7WUFDUixVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLFVBQVUsRUFBRTt3QkFDVixXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUM7d0JBQ3JCLFFBQVEsRUFBRSxPQUFPO3dCQUNqQixlQUFlLEVBQUUsS0FBSzt3QkFDdEIsUUFBUSxFQUFFLDhDQUE4QztxQkFDekQ7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsYUFBYTtvQkFDbkIsVUFBVSxFQUFFO3dCQUNWLFlBQVksRUFBRSxPQUFPO3dCQUNyQixtQkFBbUIsRUFBRSxPQUFPO3dCQUM1QixRQUFRLEVBQUUseUNBQXlDO3FCQUNwRDtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTztZQUNMLElBQUksRUFBRSxZQUFZO1lBQ2xCLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxFQUFFO2dCQUNWO29CQUNFLElBQUksRUFBRSxhQUFhO29CQUNuQixVQUFVLEVBQUU7d0JBQ1YsUUFBUSxFQUFFLFVBQVU7d0JBQ3BCLGVBQWUsRUFBRSxLQUFLO3dCQUN0QixXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUM7d0JBQzNCLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQzt3QkFDekIsUUFBUSxFQUFFLDRDQUE0QztxQkFDdkQ7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsaUJBQWlCO29CQUN2QixVQUFVLEVBQUU7d0JBQ1YsYUFBYSxFQUFFLFVBQVU7d0JBQ3pCLFNBQVMsRUFBRSxLQUFLO3dCQUNoQixhQUFhLEVBQUUsVUFBVTt3QkFDekIsUUFBUSxFQUFFLDZDQUE2QztxQkFDeEQ7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sc0JBQXNCLEdBQUcsQ0FBQyxLQUE2QixFQUErQixFQUFFO1FBQzlGLE9BQU87WUFDTCxJQUFJLEVBQUUsd0JBQXdCO1lBQzlCLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxFQUFFO2dCQUNWO29CQUNFLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRTt3QkFDVixRQUFRLEVBQUUsS0FBSzt3QkFDZixlQUFlLEVBQUUsS0FBSzt3QkFDdEIsV0FBVyxFQUFFLEVBQUU7d0JBQ2YsVUFBVSxFQUFFLEVBQUU7d0JBQ2QsUUFBUSxFQUFFLDZDQUE2QztxQkFDeEQ7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsVUFBVSxFQUFFO29CQUNWLFlBQVksRUFBRSxXQUFXO29CQUN6QixVQUFVLEVBQUUsQ0FBQztvQkFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDZixRQUFRLEVBQUUsb0NBQW9DO2lCQUMvQzthQUNGLENBQUMsQ0FBQztTQUNKLENBQUM7SUFDSixDQUFDLENBQUM7Q0FDSDtBQWpSRCxzQkFpUkMifQ==
@@ -0,0 +1,19 @@
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 BasionArgs extends types.WithResourceGroupInputs, Pick<nw.BastionHostArgs, 'disableCopyPaste' | 'dnsName' | 'enableFileCopy' | 'enableIpConnect' | 'enableKerberos' | 'enablePrivateOnlyBastion' | 'enableSessionRecording' | 'enableShareableLink' | 'enableTunneling' | 'scaleUnits' | 'zones' | 'tags'> {
6
+ sku: nw.BastionHostSkuName;
7
+ publicIPAddress: types.SubResourceInputs;
8
+ subnetId: pulumi.Input<string>;
9
+ network?: Pick<types.NetworkArgs, 'ipRules'>;
10
+ }
11
+ export declare class Basion extends BaseComponent<BasionArgs> {
12
+ readonly id: pulumi.Output<string>;
13
+ readonly resourceName: pulumi.Output<string>;
14
+ constructor(name: string, args: BasionArgs, opts?: pulumi.ComponentResourceOptions);
15
+ getOutputs(): {
16
+ id: pulumi.Output<string>;
17
+ resourceName: pulumi.Output<string>;
18
+ };
19
+ }
package/vnet/Basion.js ADDED
@@ -0,0 +1,78 @@
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.Basion = 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
+ class Basion extends BaseComponent_1.BaseComponent {
42
+ id;
43
+ resourceName;
44
+ constructor(name, args, opts) {
45
+ super((0, helpers_1.getComponentResourceType)('Basion'), name, args, opts);
46
+ const { rsGroup, sku, network, publicIPAddress, subnetId, ...props } = args;
47
+ const bs = new nw.BastionHost(name, {
48
+ ...props,
49
+ ...rsGroup,
50
+ sku: { name: sku },
51
+ ipConfigurations: [
52
+ {
53
+ name: 'IpConfig',
54
+ publicIPAddress: sku !== 'Developer' ? publicIPAddress : undefined,
55
+ subnet: { id: subnetId },
56
+ privateIPAllocationMethod: nw.IPAllocationMethod.Dynamic,
57
+ },
58
+ ],
59
+ networkAcls: network?.ipRules
60
+ ? { ipRules: pulumi.output(network.ipRules).apply((ips) => ips.map((ip) => ({ addressPrefix: ip }))) }
61
+ : undefined,
62
+ }, {
63
+ ...opts,
64
+ parent: this,
65
+ });
66
+ this.id = bs.id;
67
+ this.resourceName = bs.name;
68
+ this.registerOutputs(this.getOutputs());
69
+ }
70
+ getOutputs() {
71
+ return {
72
+ id: this.id,
73
+ resourceName: this.resourceName,
74
+ };
75
+ }
76
+ }
77
+ exports.Basion = Basion;
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZuZXQvQmFzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQUFtRDtBQUNuRCx1REFBeUM7QUFDekMseURBQXNEO0FBQ3RELDZDQUEyRDtBQTBCM0QsTUFBYSxNQUFPLFNBQVEsNkJBQXlCO0lBQ25DLEVBQUUsQ0FBd0I7SUFDMUIsWUFBWSxDQUF3QjtJQUVwRCxZQUFZLElBQVksRUFBRSxJQUFnQixFQUFFLElBQXNDO1FBQ2hGLEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFNUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFNUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUMzQixJQUFJLEVBQ0o7WUFDRSxHQUFHLEtBQUs7WUFDUixHQUFHLE9BQU87WUFDVixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO1lBQ2xCLGdCQUFnQixFQUFFO2dCQUNoQjtvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsZUFBZSxFQUFFLEdBQUcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUztvQkFDbEUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRTtvQkFDeEIseUJBQXlCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU87aUJBQ3pEO2FBQ0Y7WUFFRCxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU87Z0JBQzNCLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RHLENBQUMsQ0FBQyxTQUFTO1NBQ2QsRUFDRDtZQUNFLEdBQUcsSUFBSTtZQUNQLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBOUNELHdCQThDQyJ9
@@ -0,0 +1,36 @@
1
+ import * as dns from '@pulumi/azure-native/dns';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseComponent } from '../base/BaseComponent';
4
+ import { DnsRecordTypes, WithResourceGroupInputs } from '../types';
5
+ type DnsZoneRecordArgs = Omit<dns.RecordSetArgs, 'zoneName' | 'relativeRecordSetName' | 'resourceGroupName' | 'ttl' | 'recordType'> & {
6
+ name: string;
7
+ recordType: DnsRecordTypes;
8
+ };
9
+ type DnsZoneProps = {
10
+ name: string;
11
+ records?: DnsZoneRecordArgs[];
12
+ };
13
+ export interface DnsZoneArgs extends WithResourceGroupInputs, DnsZoneProps {
14
+ children?: DnsZoneProps[];
15
+ }
16
+ export declare class DnsZone extends BaseComponent<DnsZoneArgs> {
17
+ private _rsName;
18
+ readonly id: pulumi.Output<string>;
19
+ readonly resourceName: pulumi.Output<string>;
20
+ constructor(name: string, args: DnsZoneArgs, opts?: pulumi.ComponentResourceOptions);
21
+ getOutputs(): {
22
+ id: pulumi.Output<string>;
23
+ resourceName: pulumi.Output<string>;
24
+ };
25
+ private createZone;
26
+ addARecords(zone: dns.Zone, aRecords: Array<{
27
+ name: string;
28
+ ipv4Address: pulumi.Input<pulumi.Input<string>[]>;
29
+ }>): import("@pulumi/azure-native/dns/recordSet").RecordSet[];
30
+ addRecordSet(zone: dns.Zone, name: string, props: Omit<dns.RecordSetArgs, 'zoneName' | 'relativeRecordSetName' | 'resourceGroupName' | 'ttl'>): import("@pulumi/azure-native/dns/recordSet").RecordSet;
31
+ protected getRsGroupInfo(): {
32
+ resourceGroupName: pulumi.Input<string>;
33
+ location: string;
34
+ };
35
+ }
36
+ export {};
@@ -0,0 +1,113 @@
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.DnsZone = void 0;
37
+ const dns = __importStar(require("@pulumi/azure-native/dns"));
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 DnsZone extends BaseComponent_1.BaseComponent {
43
+ _rsName;
44
+ id;
45
+ resourceName;
46
+ constructor(name, args, opts) {
47
+ super((0, helpers_1.getComponentResourceType)('DnsZone'), name, args, opts);
48
+ this._rsName = name.replace(/\./g, '-');
49
+ const { rsGroup, children, ...props } = args;
50
+ const zone = this.createZone(props);
51
+ if (children) {
52
+ children.map((child) => {
53
+ this.createZone(child, zone);
54
+ });
55
+ }
56
+ this.id = zone.id;
57
+ this.resourceName = zone.name;
58
+ this.registerOutputs(this.getOutputs());
59
+ }
60
+ getOutputs() {
61
+ return {
62
+ id: this.id,
63
+ resourceName: this.resourceName,
64
+ };
65
+ }
66
+ createZone({ name, records }, parent) {
67
+ const group = this.getRsGroupInfo();
68
+ const zone = new dns.Zone(name, {
69
+ resourceGroupName: group.resourceGroupName,
70
+ location: group.location,
71
+ zoneName: this.name,
72
+ }, { ...this.opts, dependsOn: parent ? parent : this.opts?.dependsOn, parent: this });
73
+ if (records) {
74
+ records.map((record) => {
75
+ this.addRecordSet(zone, `${name}-${record.name}`, record);
76
+ });
77
+ }
78
+ if (parent) {
79
+ zone.nameServers.apply((ns) => {
80
+ this.addRecordSet(parent, `${this.name}-${name}-ns`, {
81
+ recordType: 'NS',
82
+ nsRecords: ns.map((s) => ({ nsdname: s })),
83
+ });
84
+ });
85
+ }
86
+ return zone;
87
+ }
88
+ addARecords(zone, aRecords) {
89
+ return aRecords.map((aRecord) => this.addRecordSet(zone, aRecord.name, {
90
+ recordType: 'A',
91
+ aRecords: pulumi.output(aRecord.ipv4Address).apply((ips) => ips.map((i) => ({ ipv4Address: i }))),
92
+ }));
93
+ }
94
+ addRecordSet(zone, name, props) {
95
+ const group = this.getRsGroupInfo();
96
+ return new dns.RecordSet(`${this._rsName}-${(0, helpers_2.getDnsRecordName)(name)}-${props.recordType}`, {
97
+ ...props,
98
+ ...group,
99
+ zoneName: zone.name,
100
+ relativeRecordSetName: name,
101
+ ttl: 3600,
102
+ }, { dependsOn: zone, parent: this });
103
+ }
104
+ getRsGroupInfo() {
105
+ const group = this.args.rsGroup;
106
+ return {
107
+ resourceGroupName: group.resourceGroupName,
108
+ location: 'global',
109
+ };
110
+ }
111
+ }
112
+ exports.DnsZone = DnsZone;
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG5zWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92bmV0L0Ruc1pvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQWdEO0FBQ2hELHVEQUF5QztBQUN6Qyx5REFBc0Q7QUFDdEQsNkNBQTJEO0FBRTNELHVDQUE2QztBQWdCN0MsTUFBYSxPQUFRLFNBQVEsNkJBQTBCO0lBQzdDLE9BQU8sQ0FBUztJQUVSLEVBQUUsQ0FBd0I7SUFDMUIsWUFBWSxDQUF3QjtJQUVwRCxZQUFZLElBQVksRUFBRSxJQUFpQixFQUFFLElBQXNDO1FBQ2pGLEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV4QyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMs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
@@ -0,0 +1,53 @@
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
+ export type RulePolicyArgs = {
7
+ priority: number;
8
+ name: string;
9
+ ruleCollections?: pulumi.Input<pulumi.Input<inputs.network.FirewallPolicyFilterRuleCollectionArgs | inputs.network.FirewallPolicyNatRuleCollectionArgs>[]>;
10
+ };
11
+ export interface FirewallArgs extends CommonBaseArgs, types.WithUserAssignedIdentity, types.WithEncryptionEnabler, Pick<network.AzureFirewallArgs, 'autoscaleConfiguration' | 'tags' | 'virtualHub' | 'zones' | 'managementIpConfiguration' | 'ipConfigurations' | 'hubIPAddresses' | 'threatIntelMode'> {
12
+ sku: {
13
+ name: network.AzureFirewallSkuName;
14
+ tier: network.AzureFirewallSkuTier;
15
+ };
16
+ additionalProperties?: Record<string, pulumi.Input<string>>;
17
+ snat?: {
18
+ routeServerId?: pulumi.Input<string>;
19
+ };
20
+ policy: Pick<network.FirewallPolicyArgs, 'dnsSettings' | 'explicitProxy' | 'insights' | 'intrusionDetection' | 'sql' | 'threatIntelMode' | 'threatIntelWhitelist'> & {
21
+ basePolicy?: types.ResourceInputs;
22
+ transportSecurityCA?: pulumi.Input<inputs.network.FirewallPolicyCertificateAuthorityArgs>;
23
+ /** The rule collections for this Firewall. Recommend to use "FirewallPolicyBuilder" to build this rules */
24
+ rules?: Array<RulePolicyArgs>;
25
+ };
26
+ logs?: {
27
+ defaultWorkspace: types.ResourceInputs;
28
+ regionalWorkspaces?: Array<{
29
+ id: pulumi.Input<string>;
30
+ region: pulumi.Input<string>;
31
+ }>;
32
+ };
33
+ }
34
+ export declare class Firewall extends BaseResourceComponent<FirewallArgs> {
35
+ readonly firewall: types.ResourceOutputs;
36
+ readonly policy: types.ResourceOutputs;
37
+ readonly privateIpAddress: pulumi.Output<string>;
38
+ constructor(name: string, args: FirewallArgs, opts?: pulumi.ComponentResourceOptions);
39
+ getOutputs(): {
40
+ firewall: {
41
+ resourceName: pulumi.Output<string>;
42
+ id: pulumi.Output<string>;
43
+ };
44
+ policy: {
45
+ resourceName: pulumi.Output<string>;
46
+ id: pulumi.Output<string>;
47
+ };
48
+ privateIpAddress: pulumi.Output<string>;
49
+ };
50
+ private createPolicy;
51
+ private createFirewall;
52
+ private createPolicyRuleGroup;
53
+ }