@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,136 @@
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.Firewall = void 0;
37
+ const network = __importStar(require("@pulumi/azure-native/network"));
38
+ const base_1 = require("../base");
39
+ class Firewall extends base_1.BaseResourceComponent {
40
+ firewall;
41
+ policy;
42
+ privateIpAddress;
43
+ constructor(name, args, opts) {
44
+ super('Firewall', name, args, opts);
45
+ const policy = this.createPolicy();
46
+ const firewall = this.createFirewall(policy);
47
+ this.createPolicyRuleGroup(policy);
48
+ this.firewall = { id: firewall.id, resourceName: firewall.name };
49
+ this.policy = { id: policy.id, resourceName: policy.name };
50
+ this.privateIpAddress = firewall.ipConfigurations.apply((config) => config[0].privateIPAddress);
51
+ // Export the resource ID
52
+ this.registerOutputs();
53
+ }
54
+ getOutputs() {
55
+ return { firewall: this.firewall, policy: this.policy, privateIpAddress: this.privateIpAddress };
56
+ }
57
+ createPolicy(basePolicy) {
58
+ const { rsGroup, sku, policy: { rules, ...policy }, logs, } = this.args;
59
+ return new network.FirewallPolicy(this.name, {
60
+ ...policy,
61
+ ...rsGroup,
62
+ sku,
63
+ basePolicy: basePolicy ? { id: basePolicy.id } : undefined,
64
+ dnsSettings: policy.dnsSettings ?? sku.tier !== network.FirewallPolicySkuTier.Basic
65
+ ? {
66
+ enableProxy: true,
67
+ }
68
+ : undefined,
69
+ snat: {
70
+ //Auto learn need a Route Server
71
+ autoLearnPrivateRanges: 'Enabled',
72
+ privateRanges: ['IANAPrivateRanges'],
73
+ },
74
+ threatIntelMode: policy.threatIntelMode ?? sku.tier !== network.FirewallPolicySkuTier.Basic
75
+ ? network.AzureFirewallThreatIntelMode.Deny
76
+ : undefined,
77
+ threatIntelWhitelist: policy.threatIntelWhitelist ?? {
78
+ fqdns: ['*.microsoft.com'],
79
+ ipAddresses: ['20.3.4.5'],
80
+ },
81
+ transportSecurity: sku.tier !== network.FirewallPolicySkuTier.Basic && policy.transportSecurityCA
82
+ ? { certificateAuthority: policy.transportSecurityCA }
83
+ : undefined,
84
+ insights: logs
85
+ ? {
86
+ isEnabled: true,
87
+ logAnalyticsResources: {
88
+ defaultWorkspaceId: { id: logs.defaultWorkspace.id },
89
+ workspaces: logs.regionalWorkspaces
90
+ ? logs.regionalWorkspaces.map((wp) => ({
91
+ region: wp.region,
92
+ workspaceId: { id: wp.id },
93
+ }))
94
+ : undefined,
95
+ },
96
+ }
97
+ : undefined,
98
+ }, { dependsOn: this.opts?.dependsOn, parent: this });
99
+ }
100
+ createFirewall(firewallPolicy) {
101
+ const { rsGroup, sku, logs, policy, snat, additionalProperties, ...props } = this.args;
102
+ const properties = {
103
+ ...additionalProperties,
104
+ //autoLearnPrivateRanges: 'Enabled',
105
+ //privateRanges: 'IANAPrivateRanges',
106
+ };
107
+ if (snat) {
108
+ if (snat.routeServerId)
109
+ properties['Network.RouteServerInfo.RouteServerID'] = snat.routeServerId;
110
+ }
111
+ return new network.AzureFirewall(this.name, {
112
+ ...props,
113
+ ...rsGroup,
114
+ sku,
115
+ additionalProperties: properties,
116
+ firewallPolicy: firewallPolicy ? { id: firewallPolicy.id } : undefined,
117
+ threatIntelMode: props.threatIntelMode ?? (sku.tier !== network.AzureFirewallSkuTier.Basic && sku.name !== 'AZFW_Hub')
118
+ ? network.AzureFirewallThreatIntelMode.Deny
119
+ : undefined,
120
+ }, { ...this.opts, dependsOn: firewallPolicy ? firewallPolicy : this.opts?.dependsOn, parent: this });
121
+ }
122
+ createPolicyRuleGroup(firewallPolicy) {
123
+ const { policy, rsGroup } = this.args;
124
+ if (!policy.rules)
125
+ return;
126
+ policy.rules
127
+ .sort((a, b) => a.priority - b.priority)
128
+ .map((p) => new network.FirewallPolicyRuleCollectionGroup(`${this.name}-${p.name}`, {
129
+ ...rsGroup,
130
+ ...p,
131
+ firewallPolicyName: firewallPolicy.name,
132
+ }, { dependsOn: [firewallPolicy], parent: this }));
133
+ }
134
+ }
135
+ exports.Firewall = Firewall;
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlyZXdhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm5ldC9GaXJld2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzRUFBd0Q7QUFHeEQsa0NBQWdFO0FBNERoRSxNQUFhLFFBQVMsU0FBUSw0QkFBbUM7SUFDL0MsUUFBUSxDQUF3QjtJQUNoQyxNQUFNLENBQXdCO0lBQzlCLGdCQUFnQixDQUF3QjtJQUV4RCxZQUFZLElBQVksRUFBRSxJQUFrQixFQUFFLElBQXNDO1FBQ2xGLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWpHLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLEVBQUUs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
@@ -0,0 +1,18 @@
1
+ import * as inputs from '@pulumi/azure-native/types/input';
2
+ import * as network from '@pulumi/azure-native/network';
3
+ import { RulePolicyArgs } from '../Firewall';
4
+ export declare class FirewallPolicyBuilder {
5
+ readonly name: string;
6
+ private readonly props;
7
+ private _natRules;
8
+ private _netRules;
9
+ private _appRules;
10
+ constructor(name: string, props: {
11
+ priority: number;
12
+ action: network.FirewallPolicyFilterRuleCollectionActionType;
13
+ });
14
+ addNatRule(name: string, props: Omit<inputs.network.NatRuleArgs, 'name' | 'ruleType'>): FirewallPolicyBuilder;
15
+ addNetRule(name: string, props: Omit<inputs.network.NetworkRuleArgs, 'name' | 'ruleType'>): FirewallPolicyBuilder;
16
+ addAppRule(name: string, props: Omit<inputs.network.ApplicationRuleArgs, 'name' | 'ruleType'>): FirewallPolicyBuilder;
17
+ build(): RulePolicyArgs;
18
+ }
@@ -0,0 +1,91 @@
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.FirewallPolicyBuilder = void 0;
37
+ const network = __importStar(require("@pulumi/azure-native/network"));
38
+ class FirewallPolicyBuilder {
39
+ name;
40
+ props;
41
+ _natRules = [];
42
+ _netRules = [];
43
+ _appRules = [];
44
+ constructor(name, props) {
45
+ this.name = name;
46
+ this.props = props;
47
+ }
48
+ addNatRule(name, props) {
49
+ this._natRules.push({
50
+ ...props,
51
+ name: `${this.name}-${name}-nat`,
52
+ ruleType: 'NatRule',
53
+ });
54
+ return this;
55
+ }
56
+ addNetRule(name, props) {
57
+ this._netRules.push({
58
+ ...props,
59
+ name: `${this.name}-${name}-net`,
60
+ ruleType: 'NetworkRule',
61
+ });
62
+ return this;
63
+ }
64
+ addAppRule(name, props) {
65
+ this._appRules.push({
66
+ ...props,
67
+ name: `${this.name}-${name}-app`,
68
+ ruleType: 'ApplicationRule',
69
+ });
70
+ return this;
71
+ }
72
+ build() {
73
+ const natRules = {
74
+ name: `${this.name}-nat-rules`,
75
+ action: { type: network.FirewallPolicyNatRuleCollectionActionType.DNAT },
76
+ ruleCollectionType: 'FirewallPolicyNatRuleCollection',
77
+ priority: 300,
78
+ rules: this._natRules,
79
+ };
80
+ const rules = {
81
+ name: `${this.name}-${this.props.action}-rules`,
82
+ action: { type: this.props.action },
83
+ ruleCollectionType: `FirewallPolicyFilterRuleCollection`,
84
+ priority: 400,
85
+ rules: [...this._netRules, ...this._appRules],
86
+ };
87
+ return { name: this.name, priority: this.props.priority, ruleCollections: [natRules, rules] };
88
+ }
89
+ }
90
+ exports.FirewallPolicyBuilder = FirewallPolicyBuilder;
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlyZXdhbGxQb2xpY3lCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZuZXQvRmlyZXdhbGxQb2xpY2llcy9GaXJld2FsbFBvbGljeUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsc0VBQXdEO0FBR3hELE1BQWEscUJBQXFCO0lBTWQ7SUFDQztJQU5YLFNBQVMsR0FBc0MsRUFBRSxDQUFDO0lBQ2xELFNBQVMsR0FBMEMsRUFBRSxDQUFDO0lBQ3RELFNBQVMsR0FBOEMsRUFBRSxDQUFDO0lBRWxFLFlBQ2tCLElBQVksRUFDWCxLQUF5RjtRQUQxRixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1gsVUFBSyxHQUFMLEtBQUssQ0FBb0Y7SUFDekcsQ0FBQztJQUVHLFVBQVUsQ0FBQyxJQUFZLEVBQUUsS0FBNEQ7UUFDMUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDbEIsR0FBRyxLQUFLO1lBQ1IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU07WUFDaEMsUUFBUSxFQUFFLFNBQVM7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sVUFBVSxDQUNmLElBQVksRUFDWixLQUFnRTtRQUVoRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNsQixHQUFHLEtBQUs7WUFDUixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksTUFBTTtZQUNoQyxRQUFRLEVBQUUsYUFBYTtTQUN4QixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxVQUFVLENBQ2YsSUFBWSxFQUNaLEtBQW9FO1FBRXBFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsS0FBSztZQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxNQUFNO1lBQ2hDLFFBQVEsRUFBRSxpQkFBaUI7U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sS0FBSztRQUNWLE1BQU0sUUFBUSxHQUF1RDtZQUNuRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxZQUFZO1lBQzlCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMseUNBQXlDLENBQUMsSUFBSSxFQUFFO1lBQ3hFLGtCQUFrQixFQUFFLGlDQUFpQztZQUNyRCxRQUFRLEVBQUUsR0FBRztZQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUztTQUN0QixDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQTBEO1lBQ25FLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLFFBQVE7WUFDL0MsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25DLGtCQUFrQixFQUFFLG9DQUFvQztZQUN4RCxRQUFRLEVBQUUsR0FBRztZQUNiLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDOUMsQ0FBQztRQUVGLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDaEcsQ0FBQztDQUNGO0FBL0RELHNEQStEQyJ9
@@ -0,0 +1,10 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import { FirewallPolicyBuilder } from './FirewallPolicyBuilder';
3
+ export declare function getDefaultPolicies(priority?: number): FirewallPolicyBuilder;
4
+ /** These rules are not required for Private AKS */
5
+ export declare function getAksPolicies(name: string, { priority, subnetAddressSpaces, }: {
6
+ priority: number;
7
+ subnetAddressSpaces: Array<pulumi.Input<string>>;
8
+ /** the name of Azure Container registry allows access from Azure AKS */
9
+ allowsAcrs?: pulumi.Input<string>[];
10
+ }): FirewallPolicyBuilder;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultPolicies = getDefaultPolicies;
4
+ exports.getAksPolicies = getAksPolicies;
5
+ const helpers_1 = require("../../helpers");
6
+ const FirewallPolicyBuilder_1 = require("./FirewallPolicyBuilder");
7
+ function getDefaultPolicies(priority = 6001) {
8
+ return new FirewallPolicyBuilder_1.FirewallPolicyBuilder('default', { priority, action: 'Deny' }).addAppRule('deny-everything-else', {
9
+ description: 'Default Deny Everything Else',
10
+ protocols: [
11
+ { protocolType: 'Http', port: 80 },
12
+ { protocolType: 'Https', port: 443 },
13
+ { protocolType: 'Mssql', port: 1433 },
14
+ ],
15
+ sourceAddresses: ['*'],
16
+ targetFqdns: ['*'],
17
+ });
18
+ }
19
+ /** These rules are not required for Private AKS */
20
+ function getAksPolicies(name, { priority, subnetAddressSpaces, }) {
21
+ return (new FirewallPolicyBuilder_1.FirewallPolicyBuilder(name, { priority, action: 'Allow' })
22
+ //Net
23
+ .addNetRule('aks-udp', {
24
+ description: 'For tunneled secure communication between the nodes and the control plane.',
25
+ ipProtocols: ['UDP'],
26
+ sourceAddresses: subnetAddressSpaces,
27
+ destinationAddresses: [`AzureCloud.${helpers_1.azureEnv.currentRegionCode}`],
28
+ destinationPorts: ['1194'],
29
+ })
30
+ .addNetRule('aks-tcp', {
31
+ description: 'For tunneled secure communication between the nodes and the control plane.',
32
+ ipProtocols: ['TCP'],
33
+ sourceAddresses: subnetAddressSpaces,
34
+ destinationAddresses: [`AzureCloud.${helpers_1.azureEnv.currentRegionCode}`],
35
+ destinationPorts: ['9000'],
36
+ })
37
+ //App
38
+ .addAppRule('aks-allow-acrs', {
39
+ description: 'Allows pods to access AzureKubernetesService',
40
+ sourceAddresses: subnetAddressSpaces,
41
+ fqdnTags: [
42
+ `*.hcp.${helpers_1.azureEnv.currentRegionCode}.azmk8s.io`,
43
+ 'mcr.microsoft.com',
44
+ '*.data.mcr.microsoft.com',
45
+ 'mcr-0001.mcr-msedge.net',
46
+ 'management.azure.com',
47
+ 'login.microsoftonline.com',
48
+ 'packages.microsoft.com',
49
+ 'acs-mirror.azureedge.net',
50
+ 'packages.aks.azure.com',
51
+ ],
52
+ protocols: [{ protocolType: 'Https', port: 443 }],
53
+ }));
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uUG9saWNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdm5ldC9GaXJld2FsbFBvbGljaWVzL2NvbW1vblBvbGljaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsZ0RBV0M7QUFHRCx3Q0ErQ0M7QUFoRUQsMkNBQXlDO0FBQ3pDLG1FQUFnRTtBQUVoRSxTQUFnQixrQkFBa0IsQ0FBQyxXQUFtQixJQUFJO0lBQ3hELE9BQU8sSUFBSSw2Q0FBcUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFO1FBQzNHLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFO1lBQ1QsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDbEMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDcEMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7U0FDdEM7UUFDRCxlQUFlLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDdEIsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDO0tBQ25CLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxtREFBbUQ7QUFDbkQsU0FBZ0IsY0FBYyxDQUM1QixJQUFZLEVBQ1osRUFDRSxRQUFRLEVBQ1IsbUJBQW1CLEdBTXBCO0lBRUQsT0FBTyxDQUNMLElBQUksNkNBQXFCLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1RCxLQUFLO1NBQ0osVUFBVSxDQUFDLFNBQVMsRUFBRTtRQUNyQixXQUFXLEVBQUUsNEVBQTRFO1FBQ3pGLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNwQixlQUFlLEVBQUUsbUJBQW1CO1FBQ3BDLG9CQUFvQixFQUFFLENBQUMsY0FBYyxrQkFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbEUsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7S0FDM0IsQ0FBQztTQUNELFVBQVUsQ0FBQyxTQUFTLEVBQUU7UUFDckIsV0FBVyxFQUFFLDRFQUE0RTtRQUN6RixXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDcEIsZUFBZSxFQUFFLG1CQUFtQjtRQUNwQyxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsa0JBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xFLGdCQUFnQixFQUFFLENBQUMsTUFBTSxDQUFDO0tBQzNCLENBQUM7UUFDRixLQUFLO1NBQ0osVUFBVSxDQUFDLGdCQUFnQixFQUFFO1FBQzVCLFdBQVcsRUFBRSw4Q0FBOEM7UUFDM0QsZUFBZSxFQUFFLG1CQUFtQjtRQUNwQyxRQUFRLEVBQUU7WUFDUixTQUFTLGtCQUFRLENBQUMsaUJBQWlCLFlBQVk7WUFDL0MsbUJBQW1CO1lBQ25CLDBCQUEwQjtZQUMxQix5QkFBeUI7WUFDekIsc0JBQXNCO1lBQ3RCLDJCQUEyQjtZQUMzQix3QkFBd0I7WUFDeEIsMEJBQTBCO1lBQzFCLHdCQUF3QjtTQUN6QjtRQUNELFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDbEQsQ0FBQyxDQUNMLENBQUM7QUFDSixDQUFDIn0=
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdm5ldC9GaXJld2FsbFBvbGljaWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,36 @@
1
+ import * as network from '@pulumi/azure-native/network';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseResourceComponent, CommonBaseArgs } from '../base';
4
+ type IpSku = {
5
+ /**
6
+ * Name of a public IP address SKU.
7
+ */
8
+ name: network.PublicIPAddressSkuName;
9
+ /**
10
+ * Tier of a public IP address SKU.
11
+ */
12
+ tier?: network.PublicIPAddressSkuTier;
13
+ };
14
+ export interface IpAddressesArgs extends CommonBaseArgs {
15
+ sku: IpSku;
16
+ prefix?: {
17
+ length: 28 | 29 | 30 | 31 | number;
18
+ };
19
+ /** The default config for all Ip address. */
20
+ defaultConfig?: Omit<network.PublicIPAddressArgs, 'id' | 'ipAddress' | 'publicIPPrefix' | 'resourceGroupName' | 'location' | 'sku' | 'publicIPAllocationMethod' | 'natGateway'>;
21
+ ipAddresses: Array<Pick<network.PublicIPAddressArgs, 'zones'> & {
22
+ name: string;
23
+ sku?: IpSku;
24
+ }>;
25
+ }
26
+ export declare class IpAddresses extends BaseResourceComponent<IpAddressesArgs> {
27
+ readonly ipAddresses: Record<string, {
28
+ id: pulumi.Output<string>;
29
+ resourceName: pulumi.Output<string>;
30
+ ipAddress: pulumi.Output<string | undefined>;
31
+ }>;
32
+ constructor(name: string, args: IpAddressesArgs, opts?: pulumi.ComponentResourceOptions);
33
+ getOutputs(): {};
34
+ private createIpPrefix;
35
+ }
36
+ export {};
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.IpAddresses = void 0;
37
+ const network = __importStar(require("@pulumi/azure-native/network"));
38
+ const base_1 = require("../base");
39
+ class IpAddresses extends base_1.BaseResourceComponent {
40
+ ipAddresses = {};
41
+ constructor(name, args, opts) {
42
+ super('IpAddresses', name, args, opts);
43
+ const { rsGroup, sku, defaultConfig, ipAddresses } = this.args;
44
+ const prefix = this.createIpPrefix();
45
+ ipAddresses.map((ip) => {
46
+ const ipAddress = new network.PublicIPAddress(`${name}-${ip.name}`, {
47
+ ...defaultConfig,
48
+ ...rsGroup,
49
+ sku: ip.sku ?? sku,
50
+ publicIPPrefix: prefix ? { id: prefix.id } : undefined,
51
+ publicIPAllocationMethod: network.IPAllocationMethod.Static,
52
+ zones: ip.zones ?? defaultConfig?.zones,
53
+ }, { ...opts, dependsOn: prefix ? prefix : opts?.dependsOn, parent: this, ignoreChanges: ['natGateway'] });
54
+ this.ipAddresses[ip.name] = { id: ipAddress.id, resourceName: ipAddress.name, ipAddress: ipAddress.ipAddress };
55
+ return ipAddress;
56
+ });
57
+ this.registerOutputs();
58
+ }
59
+ getOutputs() {
60
+ return {};
61
+ }
62
+ createIpPrefix() {
63
+ const { prefix, rsGroup, sku } = this.args;
64
+ if (!prefix)
65
+ return undefined;
66
+ return new network.PublicIPPrefix(this.name, {
67
+ ...rsGroup,
68
+ prefixLength: prefix.length,
69
+ sku,
70
+ }, { ...this.opts, parent: this });
71
+ }
72
+ }
73
+ exports.IpAddresses = IpAddresses;
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXBBZGRyZXNzZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm5ldC9JcEFkZHJlc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzRUFBd0Q7QUFFeEQsa0NBQWdFO0FBK0JoRSxNQUFhLFdBQVksU0FBUSw0QkFBc0M7SUFDckQsV0FBVyxHQU92QixFQUFFLENBQUM7SUFFUCxZQUFZLElBQVksRUFBRSxJQUFxQixFQUFFLElBQXNDO1FBQ3JGLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV2QyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMvRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFckMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FDM0MsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUNwQjtnQkFDRSxHQUFHLGFBQWE7Z0JBQ2hCLEdBQUcsT0FBTztnQkFDVixHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHO2dCQUNsQixjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3RELHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO2dCQUMzRCxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxhQUFhLEVBQUUsS0FBSzthQUN4QyxFQUNELEVBQUUsR0FBRyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDdkcsQ0FBQztZQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvRyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVPLGNBQWM7UUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRTlCLE9BQU8sSUFBSSxPQUFPLENBQUMsY0FBYyxDQUMvQixJQUFJLENBQUMsSUFBSSxFQUNUO1lBQ0UsR0FBRyxPQUFPO1lBQ1YsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQzNCLEdBQUc7U0FDSixFQUNELEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDL0IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXZERCxrQ0F1REMifQ==
@@ -0,0 +1,21 @@
1
+ import * as network from '@pulumi/azure-native/network';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import * as types from '../types';
4
+ export type PeeringDirectionType = 'Unidirectional' | 'Bidirectional';
5
+ type NetworkPeeringProps = Omit<network.VirtualNetworkPeeringArgs, 'id' | 'name' | 'peeringState' | 'resourceGroupName' | 'virtualNetworkName' | 'virtualNetworkPeeringName' | 'syncRemoteAddressSpace'> & {
6
+ syncRemoteAddressSpace: 'true' | 'false';
7
+ };
8
+ export interface NetworkPeeringArgs {
9
+ options?: NetworkPeeringProps;
10
+ firstVnet: types.ResourceInputs;
11
+ secondVnet: types.ResourceInputs;
12
+ direction: PeeringDirectionType;
13
+ }
14
+ export declare class NetworkPeering extends pulumi.ComponentResource<NetworkPeeringArgs> {
15
+ private name;
16
+ private args;
17
+ private opts?;
18
+ constructor(name: string, args: NetworkPeeringArgs, opts?: pulumi.ComponentResourceOptions | undefined);
19
+ private createPeering;
20
+ }
21
+ export {};
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.NetworkPeering = void 0;
37
+ const network = __importStar(require("@pulumi/azure-native/network"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const helpers_1 = require("../base/helpers");
40
+ const helpers_2 = require("../helpers");
41
+ const defaultProps = {
42
+ allowForwardedTraffic: true,
43
+ allowVirtualNetworkAccess: true,
44
+ allowGatewayTransit: true,
45
+ syncRemoteAddressSpace: 'true',
46
+ doNotVerifyRemoteGateways: true,
47
+ };
48
+ class NetworkPeering extends pulumi.ComponentResource {
49
+ name;
50
+ args;
51
+ opts;
52
+ constructor(name, args, opts) {
53
+ super((0, helpers_1.getComponentResourceType)('NetworkPeering'), name, args, opts);
54
+ this.name = name;
55
+ this.args = args;
56
+ this.opts = opts;
57
+ const { firstVnet, secondVnet, direction } = args;
58
+ pulumi.all([firstVnet, secondVnet]).apply(([first, second]) => {
59
+ this.createPeering(first, second);
60
+ if (direction === 'Bidirectional')
61
+ this.createPeering(second, first);
62
+ });
63
+ }
64
+ createPeering(from, to) {
65
+ const { options } = this.args;
66
+ const vnetInfo = helpers_2.rsHelpers.getRsInfoFromId(from.id);
67
+ const n = `${this.name}-${helpers_2.rsHelpers.getShortName(from.resourceName)}-to-${helpers_2.rsHelpers.getShortName(to.resourceName)}`;
68
+ return new network.VirtualNetworkPeering(n, {
69
+ ...defaultProps,
70
+ ...options,
71
+ virtualNetworkPeeringName: n,
72
+ virtualNetworkName: vnetInfo.resourceName,
73
+ resourceGroupName: vnetInfo.rsGroup.resourceGroupName,
74
+ peeringSyncLevel: 'FullyInSync',
75
+ remoteVirtualNetwork: {
76
+ id: to.id,
77
+ },
78
+ }, {
79
+ dependsOn: this.opts?.dependsOn,
80
+ parent: this,
81
+ });
82
+ }
83
+ }
84
+ exports.NetworkPeering = NetworkPeering;
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya1BlZXJpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm5ldC9OZXR3b3JrUGVlcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzRUFBd0Q7QUFDeEQsdURBQXlDO0FBQ3pDLDZDQUEyRDtBQUUzRCx3Q0FBdUM7QUFldkMsTUFBTSxZQUFZLEdBQXdCO0lBQ3hDLHFCQUFxQixFQUFFLElBQUk7SUFDM0IseUJBQXlCLEVBQUUsSUFBSTtJQUMvQixtQkFBbUIsRUFBRSxJQUFJO0lBQ3pCLHNCQUFzQixFQUFFLE1BQU07SUFDOUIseUJBQXlCLEVBQUUsSUFBSTtDQUNoQyxDQUFDO0FBU0YsTUFBYSxjQUFlLFNBQVEsTUFBTSxDQUFDLGlCQUFxQztJQUMxRDtJQUFzQjtJQUFrQztJQUE1RSxZQUFvQixJQUFZLEVBQVUsSUFBd0IsRUFBVSxJQUFzQztRQUNoSCxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFEbEQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLFNBQUksR0FBSixJQUFJLENBQW9CO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBa0M7UUFHaEgsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksU0FBUyxLQUFLLGVBQWU7Z0JBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQXdCLEVBQUUsRUFBc0I7UUFDcEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDOUIsTUFBTSxRQUFRLEdBQUcsbUJBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxtQkFBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sbUJBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDcEgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxxQkFBcUIsQ0FDdEMsQ0FBQyxFQUNEO1lBQ0UsR0FBRyxZQUFZO1lBQ2YsR0FBRyxPQUFPO1lBQ1YseUJBQXlCLEVBQUUsQ0FBQztZQUM1QixrQkFBa0IsRUFBRSxRQUFRLENBQUMsWUFBWTtZQUN6QyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQjtZQUNyRCxnQkFBZ0IsRUFBRSxhQUFhO1lBQy9CLG9CQUFvQixFQUFFO2dCQUNwQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7YUFDVjtTQUNGLEVBQ0Q7WUFDRSxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTO1lBQy9CLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbkNELHdDQW1DQyJ9
@@ -0,0 +1,38 @@
1
+ import * as privateDns from '@pulumi/azure-native/privatedns';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseComponent } from '../base/BaseComponent';
4
+ import { DnsRecordTypes, WithResourceGroupInputs } from '../types';
5
+ export type DnsRecordArgs = Omit<privateDns.PrivateRecordSetArgs, 'privateZoneName' | 'relativeRecordSetName' | 'resourceGroupName' | 'ttl' | 'recordType'> & {
6
+ recordType: DnsRecordTypes;
7
+ };
8
+ export interface PrivateDnsZoneArgs extends WithResourceGroupInputs {
9
+ aRecords?: Array<{
10
+ name: string;
11
+ ipv4Address: pulumi.Input<pulumi.Input<string>[]>;
12
+ }>;
13
+ /** Link the private DNS zone to these Vnet also */
14
+ vnetLinks: Array<pulumi.Input<{
15
+ vnetId: string;
16
+ }>>;
17
+ }
18
+ export declare class PrivateDnsZone extends BaseComponent<PrivateDnsZoneArgs> {
19
+ private _rsName;
20
+ readonly id: pulumi.Output<string>;
21
+ readonly resourceName: pulumi.Output<string>;
22
+ constructor(name: string, args: PrivateDnsZoneArgs, opts?: pulumi.ComponentResourceOptions);
23
+ getOutputs(): {
24
+ id: pulumi.Output<string>;
25
+ resourceName: pulumi.Output<string>;
26
+ };
27
+ private createARecord;
28
+ addARecords(aRecords: Array<{
29
+ name: string;
30
+ ipv4Address: pulumi.Input<pulumi.Input<string>[]>;
31
+ }>): import("@pulumi/azure-native/privatedns/privateRecordSet").PrivateRecordSet[];
32
+ addRecordSet(name: string, props: DnsRecordArgs): import("@pulumi/azure-native/privatedns/privateRecordSet").PrivateRecordSet;
33
+ private createVnetLinks;
34
+ protected getRsGroupInfo(): {
35
+ resourceGroupName: pulumi.Input<string>;
36
+ location: string;
37
+ };
38
+ }