@drunk-pulumi/azure-components 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PulumiPlugin.yaml +1 -0
- package/README.md +1 -0
- package/ResourceBuilder.d.ts +54 -0
- package/ResourceBuilder.js +71 -0
- package/aks/AzKubernetes.d.ts +55 -0
- package/aks/AzKubernetes.js +288 -0
- package/aks/ContainerRegistry.d.ts +19 -0
- package/aks/ContainerRegistry.js +119 -0
- package/aks/helpers.d.ts +6 -0
- package/aks/helpers.js +52 -0
- package/aks/index.d.ts +3 -0
- package/aks/index.js +43 -0
- package/app/AppCert.d.ts +15 -0
- package/app/AppCert.js +74 -0
- package/app/AppConfig.d.ts +18 -0
- package/app/AppConfig.js +124 -0
- package/app/AppService.d.ts +69 -0
- package/app/AppService.js +122 -0
- package/app/IoTHub.d.ts +15 -0
- package/app/IoTHub.js +80 -0
- package/app/LogicApp.d.ts +19 -0
- package/app/LogicApp.js +77 -0
- package/app/SignalR.d.ts +45 -0
- package/app/SignalR.js +125 -0
- package/app/index.d.ts +6 -0
- package/app/index.js +23 -0
- package/azAd/AppRegistration.d.ts +52 -0
- package/azAd/AppRegistration.js +165 -0
- package/azAd/AzRole.d.ts +14 -0
- package/azAd/AzRole.js +72 -0
- package/azAd/CustomRoles.d.ts +10 -0
- package/azAd/CustomRoles.js +73 -0
- package/azAd/GroupRole.d.ts +29 -0
- package/azAd/GroupRole.js +107 -0
- package/azAd/RoleAssignment.d.ts +15 -0
- package/azAd/RoleAssignment.js +63 -0
- package/azAd/UserAssignedIdentity.d.ts +17 -0
- package/azAd/UserAssignedIdentity.js +76 -0
- package/azAd/helpers/graphBuiltIn.d.ts +14 -0
- package/azAd/helpers/graphBuiltIn.js +5134 -0
- package/azAd/helpers/index.d.ts +3 -0
- package/azAd/helpers/index.js +39 -0
- package/azAd/helpers/rolesBuiltIn.d.ts +90 -0
- package/azAd/helpers/rolesBuiltIn.js +18601 -0
- package/azAd/helpers/rsRoleDefinition.d.ts +62 -0
- package/azAd/helpers/rsRoleDefinition.js +120 -0
- package/azAd/index.d.ts +7 -0
- package/azAd/index.js +24 -0
- package/base/BaseComponent.d.ts +53 -0
- package/base/BaseComponent.js +98 -0
- package/base/BaseResourceComponent.d.ts +108 -0
- package/base/BaseResourceComponent.js +180 -0
- package/base/helpers.d.ts +12 -0
- package/base/helpers.js +29 -0
- package/base/index.d.ts +3 -0
- package/base/index.js +43 -0
- package/common/PGPGenerator.d.ts +26 -0
- package/common/PGPGenerator.js +72 -0
- package/common/RandomPassword.d.ts +21 -0
- package/common/RandomPassword.js +84 -0
- package/common/RandomString.d.ts +20 -0
- package/common/RandomString.js +74 -0
- package/common/ResourceLocker.d.ts +9 -0
- package/common/ResourceLocker.js +52 -0
- package/common/RsGroup.d.ts +20 -0
- package/common/RsGroup.js +85 -0
- package/common/SshGenerator.d.ts +17 -0
- package/common/SshGenerator.js +66 -0
- package/common/index.d.ts +5 -0
- package/common/index.js +22 -0
- package/database/AzSql.d.ts +71 -0
- package/database/AzSql.js +283 -0
- package/database/MySql.d.ts +35 -0
- package/database/MySql.js +181 -0
- package/database/Postgres.d.ts +32 -0
- package/database/Postgres.js +171 -0
- package/database/Redis.d.ts +26 -0
- package/database/Redis.js +125 -0
- package/database/helpers.d.ts +7 -0
- package/database/helpers.js +52 -0
- package/database/index.d.ts +5 -0
- package/database/index.js +45 -0
- package/helpers/Location/LocationBuiltIn.d.ts +6 -0
- package/helpers/Location/LocationBuiltIn.js +493 -0
- package/helpers/Location/index.d.ts +3 -0
- package/helpers/Location/index.js +25 -0
- package/helpers/autoTags.d.ts +1 -0
- package/helpers/autoTags.js +27 -0
- package/helpers/azureEnv.d.ts +21 -0
- package/helpers/azureEnv.js +102 -0
- package/helpers/configHelper.d.ts +5 -0
- package/helpers/configHelper.js +54 -0
- package/helpers/index.d.ts +4 -0
- package/helpers/index.js +41 -0
- package/helpers/rsHelpers.d.ts +18 -0
- package/helpers/rsHelpers.js +92 -0
- package/helpers/stackEnv.d.ts +4 -0
- package/helpers/stackEnv.js +54 -0
- package/index.d.ts +14 -0
- package/index.js +53 -0
- package/logs/Logs.d.ts +48 -0
- package/logs/Logs.js +154 -0
- package/logs/helpers.d.ts +1 -0
- package/logs/helpers.js +38 -0
- package/logs/index.d.ts +1 -0
- package/logs/index.js +18 -0
- package/package.json +34 -0
- package/services/Automation.d.ts +16 -0
- package/services/Automation.js +85 -0
- package/services/AzSearch.d.ts +20 -0
- package/services/AzSearch.js +113 -0
- package/services/ServiceBus.d.ts +42 -0
- package/services/ServiceBus.js +256 -0
- package/services/index.d.ts +3 -0
- package/services/index.js +20 -0
- package/storage/StorageAccount.d.ts +53 -0
- package/storage/StorageAccount.js +261 -0
- package/storage/helpers.d.ts +24 -0
- package/storage/helpers.js +89 -0
- package/storage/index.d.ts +2 -0
- package/storage/index.js +42 -0
- package/types.d.ts +125 -0
- package/types.js +3 -0
- package/vault/EncryptionKey.d.ts +21 -0
- package/vault/EncryptionKey.js +73 -0
- package/vault/KeyVault.d.ts +31 -0
- package/vault/KeyVault.js +110 -0
- package/vault/VaultSecret.d.ts +23 -0
- package/vault/VaultSecret.js +72 -0
- package/vault/VaultSecrets.d.ts +25 -0
- package/vault/VaultSecrets.js +31 -0
- package/vault/helpers.d.ts +1 -0
- package/vault/helpers.js +13 -0
- package/vault/index.d.ts +5 -0
- package/vault/index.js +45 -0
- package/vm/DiskEncryptionSet.d.ts +16 -0
- package/vm/DiskEncryptionSet.js +74 -0
- package/vm/VirtualMachine.d.ts +45 -0
- package/vm/VirtualMachine.js +192 -0
- package/vm/helpers.d.ts +16 -0
- package/vm/helpers.js +15 -0
- package/vm/index.d.ts +3 -0
- package/vm/index.js +43 -0
- package/vnet/AzCdn.d.ts +44 -0
- package/vnet/AzCdn.js +276 -0
- package/vnet/Basion.d.ts +19 -0
- package/vnet/Basion.js +78 -0
- package/vnet/DnsZone.d.ts +36 -0
- package/vnet/DnsZone.js +113 -0
- package/vnet/Firewall.d.ts +53 -0
- package/vnet/Firewall.js +136 -0
- package/vnet/FirewallPolicies/FirewallPolicyBuilder.d.ts +18 -0
- package/vnet/FirewallPolicies/FirewallPolicyBuilder.js +91 -0
- package/vnet/FirewallPolicies/commonPolicies.d.ts +10 -0
- package/vnet/FirewallPolicies/commonPolicies.js +55 -0
- package/vnet/FirewallPolicies/index.d.ts +0 -0
- package/vnet/FirewallPolicies/index.js +2 -0
- package/vnet/IpAddresses.d.ts +36 -0
- package/vnet/IpAddresses.js +74 -0
- package/vnet/NetworkPeering.d.ts +21 -0
- package/vnet/NetworkPeering.js +85 -0
- package/vnet/PrivateDnsZone.d.ts +38 -0
- package/vnet/PrivateDnsZone.js +111 -0
- package/vnet/PrivateEndpoint.d.ts +43 -0
- package/vnet/PrivateEndpoint.js +181 -0
- package/vnet/RouteTable.d.ts +22 -0
- package/vnet/RouteTable.js +75 -0
- package/vnet/VirtualNetwork.d.ts +99 -0
- package/vnet/VirtualNetwork.js +311 -0
- package/vnet/VpnGateway.d.ts +18 -0
- package/vnet/VpnGateway.js +90 -0
- package/vnet/helpers.d.ts +16 -0
- package/vnet/helpers.js +47 -0
- package/vnet/index.d.ts +13 -0
- package/vnet/index.js +53 -0
- package/vnet/securityRules/SecurityRuleBuilder.d.ts +12 -0
- package/vnet/securityRules/SecurityRuleBuilder.js +55 -0
- package/vnet/securityRules/commonRules.d.ts +9 -0
- package/vnet/securityRules/commonRules.js +94 -0
- package/vnet/securityRules/index.d.ts +2 -0
- package/vnet/securityRules/index.js +19 -0
package/vnet/Firewall.js
ADDED
|
@@ -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,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
|
+
}
|