@drunk-pulumi/azure 0.0.37 → 0.0.38

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 (176) hide show
  1. package/Aks/Helper.d.ts +6 -11
  2. package/Aks/Helper.js +40 -65
  3. package/Aks/Identity.d.ts +3 -10
  4. package/Aks/Identity.js +9 -8
  5. package/Aks/index.d.ts +67 -71
  6. package/Aks/index.js +198 -314
  7. package/Apim/ApiProduct/PolicyBuilder.js +25 -27
  8. package/Apim/ApiProduct/SwaggerHelper.js +1 -3
  9. package/Apim/ApiProduct/index.d.ts +3 -3
  10. package/Apim/ApiProduct/index.js +1 -2
  11. package/Automation/index.d.ts +7 -0
  12. package/Automation/index.js +55 -0
  13. package/AzAd/EnvRoles.Consts.d.ts +12 -0
  14. package/AzAd/EnvRoles.Consts.js +125 -0
  15. package/AzAd/EnvRoles.d.ts +16 -15
  16. package/AzAd/EnvRoles.js +69 -47
  17. package/AzAd/GraphDefinition.d.ts +2 -2
  18. package/AzAd/GraphDefinition.js +3055 -3056
  19. package/AzAd/Helper.d.ts +24 -13
  20. package/AzAd/Helper.js +98 -25
  21. package/AzAd/Identities/AzDevOpsIdentity.d.ts +12 -0
  22. package/AzAd/Identities/AzDevOpsIdentity.js +32 -0
  23. package/AzAd/Identities/AzDevOpsManagedIdentity.d.ts +7 -0
  24. package/AzAd/Identities/AzDevOpsManagedIdentity.js +15 -0
  25. package/AzAd/Identities/AzUserAdRevertSync.d.ts +2 -9
  26. package/AzAd/Identities/AzUserAdRevertSync.js +4 -5
  27. package/AzAd/Identities/index.d.ts +3 -0
  28. package/AzAd/Identities/index.js +10 -0
  29. package/AzAd/Identity.d.ts +10 -22
  30. package/AzAd/Identity.js +50 -61
  31. package/AzAd/Role.d.ts +2 -3
  32. package/AzAd/Role.js +4 -5
  33. package/AzAd/RoleAssignment.d.ts +34 -5
  34. package/AzAd/RoleAssignment.js +2 -2
  35. package/AzAd/RoleDefinitions/JustInTimeRequestRole.d.ts +2 -0
  36. package/AzAd/RoleDefinitions/JustInTimeRequestRole.js +25 -0
  37. package/AzAd/RolesBuiltIn.d.ts +29 -0
  38. package/AzAd/RolesBuiltIn.js +13034 -8058
  39. package/AzAd/UserAssignedIdentity.d.ts +6 -0
  40. package/AzAd/UserAssignedIdentity.js +27 -0
  41. package/Builder/AksBuilder.d.ts +3 -0
  42. package/Builder/AksBuilder.js +95 -0
  43. package/Builder/VnetBuilder.d.ts +3 -0
  44. package/Builder/VnetBuilder.js +279 -0
  45. package/Builder/index.d.ts +2 -0
  46. package/Builder/index.js +8 -0
  47. package/Builder/types.d.ts +120 -0
  48. package/Builder/types.js +18 -0
  49. package/Certificate/index.d.ts +1 -1
  50. package/Certificate/index.js +26 -28
  51. package/Common/AutoTags.js +2 -2
  52. package/Common/AzureEnv.d.ts +4 -3
  53. package/Common/AzureEnv.js +31 -24
  54. package/Common/GlobalEnv.d.ts +1 -2
  55. package/Common/GlobalEnv.js +7 -7
  56. package/Common/Location.d.ts +3 -3
  57. package/Common/Location.js +22 -9
  58. package/Common/LocationBuiltIn.d.ts +6 -81
  59. package/Common/LocationBuiltIn.js +491 -1923
  60. package/Common/Naming/index.d.ts +6 -4
  61. package/Common/Naming/index.js +64 -60
  62. package/Common/ResourceEnv.d.ts +2 -2
  63. package/Common/ResourceEnv.js +11 -10
  64. package/Common/StackEnv.js +2 -9
  65. package/Core/KeyGenetators.d.ts +16 -20
  66. package/Core/KeyGenetators.js +17 -16
  67. package/Core/Random.d.ts +4 -4
  68. package/Core/Random.js +10 -10
  69. package/Core/ResourceGroup.d.ts +12 -6
  70. package/Core/ResourceGroup.js +12 -24
  71. package/IOT/Hub/index.d.ts +4 -8
  72. package/IOT/Hub/index.js +19 -54
  73. package/KeyVault/Helper.d.ts +8 -6
  74. package/KeyVault/Helper.js +13 -19
  75. package/KeyVault/index.d.ts +1 -3
  76. package/KeyVault/index.js +2 -26
  77. package/Logs/Helpers.d.ts +35 -25
  78. package/Logs/Helpers.js +33 -20
  79. package/Logs/LogAnalytics.d.ts +2 -2
  80. package/Logs/LogAnalytics.js +15 -6
  81. package/Logs/index.d.ts +3 -3
  82. package/Logs/index.js +4 -4
  83. package/MySql/index.d.ts +2 -3
  84. package/MySql/index.js +16 -19
  85. package/{ReadMe.md → README.md} +6 -1
  86. package/Sql/index.d.ts +15 -9
  87. package/Sql/index.js +39 -41
  88. package/Storage/CdnEndpoint.d.ts +2 -2
  89. package/Storage/CdnEndpoint.js +14 -15
  90. package/Storage/Helper.d.ts +2 -2
  91. package/Storage/Helper.js +6 -6
  92. package/Storage/ManagementRules.d.ts +5 -23
  93. package/Storage/ManagementRules.js +3 -3
  94. package/Storage/index.d.ts +3 -3
  95. package/Storage/index.js +28 -28
  96. package/VM/AzureDevOpsExtension.d.ts +16 -0
  97. package/VM/AzureDevOpsExtension.js +14 -0
  98. package/VM/Extension.d.ts +15 -0
  99. package/VM/Extension.js +13 -0
  100. package/VM/GlobalSchedule.d.ts +10 -0
  101. package/VM/GlobalSchedule.js +20 -0
  102. package/VM/index.d.ts +18 -18
  103. package/VM/index.js +94 -57
  104. package/VNet/Bastion.d.ts +4 -4
  105. package/VNet/Bastion.js +12 -8
  106. package/VNet/Firewall.d.ts +19 -12
  107. package/VNet/Firewall.js +59 -40
  108. package/VNet/FirewallPolicies/AksFirewallPolicy.d.ts +16 -16
  109. package/VNet/FirewallPolicies/AksFirewallPolicy.js +193 -220
  110. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.d.ts +12 -10
  111. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.js +170 -282
  112. package/VNet/FirewallPolicies/DefaultFirewallPolicy.d.ts +3 -0
  113. package/VNet/FirewallPolicies/DefaultFirewallPolicy.js +25 -0
  114. package/VNet/FirewallPolicies/index.d.ts +4 -0
  115. package/VNet/FirewallPolicies/index.js +10 -0
  116. package/VNet/FirewallPolicy.d.ts +14 -11
  117. package/VNet/FirewallPolicy.js +67 -74
  118. package/VNet/FirewallRules/AksFirewallRules.d.ts +4 -3
  119. package/VNet/FirewallRules/AksFirewallRules.js +101 -100
  120. package/VNet/Helper.d.ts +8 -4
  121. package/VNet/Helper.js +42 -35
  122. package/VNet/IpAddress.d.ts +6 -8
  123. package/VNet/IpAddress.js +6 -11
  124. package/VNet/IpAddressPrefix.d.ts +12 -9
  125. package/VNet/IpAddressPrefix.js +14 -13
  126. package/VNet/NSGRules/AppGatewaySecurityRule.d.ts +9 -0
  127. package/VNet/NSGRules/AppGatewaySecurityRule.js +46 -0
  128. package/VNet/NSGRules/AzADSecurityRule.d.ts +6 -0
  129. package/VNet/NSGRules/AzADSecurityRule.js +39 -0
  130. package/VNet/NSGRules/BastionSecurityRule.d.ts +9 -0
  131. package/VNet/NSGRules/BastionSecurityRule.js +93 -0
  132. package/VNet/NatGateway.d.ts +10 -0
  133. package/VNet/NatGateway.js +21 -0
  134. package/VNet/NetworkPeering.d.ts +7 -7
  135. package/VNet/NetworkPeering.js +29 -20
  136. package/VNet/PrivateDns.d.ts +8 -10
  137. package/VNet/PrivateDns.js +12 -14
  138. package/VNet/PrivateEndpoint.js +5 -2
  139. package/VNet/RouteTable.d.ts +7 -8
  140. package/VNet/RouteTable.js +6 -6
  141. package/VNet/SecurityGroup.d.ts +4 -4
  142. package/VNet/SecurityGroup.js +7 -3
  143. package/VNet/Subnet.d.ts +10 -7
  144. package/VNet/Subnet.js +4 -3
  145. package/VNet/VPNGateway.d.ts +13 -0
  146. package/VNet/VPNGateway.js +73 -0
  147. package/VNet/VirtualWAN.d.ts +7 -10
  148. package/VNet/VirtualWAN.js +1 -1
  149. package/VNet/Vnet.d.ts +29 -23
  150. package/VNet/Vnet.js +58 -121
  151. package/VNet/index.d.ts +17 -18
  152. package/VNet/index.js +41 -54
  153. package/VNet/types.d.ts +94 -0
  154. package/VNet/types.js +3 -0
  155. package/Web/types.d.ts +2 -134
  156. package/package.json +8 -8
  157. package/types.d.ts +22 -8
  158. package/z_tests/_tools/Mocks.js +12 -13
  159. package/Automation/AutoAccount.d.ts +0 -5
  160. package/Automation/AutoAccount.js +0 -18
  161. package/AzAd/Identities/AzDevOps.d.ts +0 -23
  162. package/AzAd/Identities/AzDevOps.js +0 -61
  163. package/AzAd/KeyVaultRoles.d.ts +0 -8
  164. package/AzAd/KeyVaultRoles.js +0 -53
  165. package/AzAd/ManagedIdentity.d.ts +0 -6
  166. package/AzAd/ManagedIdentity.js +0 -20
  167. package/AzAd/UserIdentity.d.ts +0 -5
  168. package/AzAd/UserIdentity.js +0 -12
  169. package/Common/Naming/AzureRegions.d.ts +0 -4
  170. package/Common/Naming/AzureRegions.js +0 -49
  171. package/KeyVault/VaultPermissions.d.ts +0 -27
  172. package/KeyVault/VaultPermissions.js +0 -226
  173. package/VNet/FirewallRules/types.d.ts +0 -20
  174. package/VNet/FirewallRules/types.js +0 -5
  175. package/VNet/NSGRules/AzADService.d.ts +0 -10
  176. package/VNet/NSGRules/AzADService.js +0 -45
@@ -0,0 +1,6 @@
1
+ import { BasicResourceArgs, IdentityRoleAssignment } from "../types";
2
+ interface Props extends BasicResourceArgs, IdentityRoleAssignment {
3
+ lock?: boolean;
4
+ }
5
+ declare const _default: ({ name, group, lock, roles, envRole, vaultInfo, dependsOn, importUri, ignoreChanges, }: Props) => import("@pulumi/azure-native/managedidentity/userAssignedIdentity").UserAssignedIdentity;
6
+ export default _default;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const azure = require("@pulumi/azure-native");
4
+ const Naming_1 = require("../Common/Naming");
5
+ const Locker_1 = require("../Core/Locker");
6
+ const Helper_1 = require("./Helper");
7
+ exports.default = ({ name, group, lock, roles, envRole, vaultInfo, dependsOn, importUri, ignoreChanges, }) => {
8
+ name = (0, Naming_1.getManagedIdentityName)(name);
9
+ const managedIdentity = new azure.managedidentity.UserAssignedIdentity(name, {
10
+ resourceName: name,
11
+ ...group,
12
+ }, { dependsOn, import: importUri, ignoreChanges });
13
+ (0, Helper_1.grantIdentityPermissions)({
14
+ name,
15
+ envRole,
16
+ roles,
17
+ vaultInfo,
18
+ principalId: managedIdentity.principalId,
19
+ });
20
+ if (lock)
21
+ (0, Locker_1.default)({
22
+ name,
23
+ resource: managedIdentity,
24
+ });
25
+ return managedIdentity;
26
+ };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckFzc2lnbmVkSWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQXpBZC9Vc2VyQXNzaWduZWRJZGVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhDQUE4QztBQUM5Qyw2Q0FBMEQ7QUFDMUQsMkNBQW9DO0FBQ3BDLHFDQUFvRDtBQU1wRCxrQkFBZSxDQUFDLEVBQ2QsSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEdBQ1AsRUFBRSxFQUFFO0lBQ1YsSUFBSSxHQUFHLElBQUEsK0JBQXNCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUNwRSxJQUFJLEVBQ0o7UUFDRSxZQUFZLEVBQUUsSUFBSTtRQUNsQixHQUFHLEtBQUs7S0FDVCxFQUNELEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQ2hELENBQUM7SUFFRixJQUFBLGlDQUF3QixFQUFDO1FBQ3ZCLElBQUk7UUFDSixPQUFPO1FBQ1AsS0FBSztRQUNMLFNBQVM7UUFDVCxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVc7S0FDekMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxJQUFJO1FBQ04sSUFBQSxnQkFBTSxFQUFDO1lBQ0wsSUFBSTtZQUNKLFFBQVEsRUFBRSxlQUFlO1NBQzFCLENBQUMsQ0FBQztJQUVMLE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ import { AksBuilderProps, ISshBuilder } from "./types";
2
+ declare const _default: (props: AksBuilderProps) => ISshBuilder;
3
+ export default _default;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const types_1 = require("./types");
4
+ const KeyGenetators_1 = require("../Core/KeyGenetators");
5
+ const containerservice_1 = require("@pulumi/azure-native/containerservice");
6
+ const Aks_1 = require("../Aks");
7
+ class AksBuilder extends types_1.ResourcesBuilderAsync {
8
+ //Instances
9
+ _sshInstance = undefined;
10
+ _askInstance = undefined;
11
+ //Props
12
+ _sshProps = undefined;
13
+ _nodePoolsProps = [];
14
+ _addonProps = undefined;
15
+ _featureProps = undefined;
16
+ _authProps = undefined;
17
+ _tier = containerservice_1.ManagedClusterSKUTier.Free;
18
+ _networkProps = undefined;
19
+ _defaultNode = undefined;
20
+ _importProps = undefined;
21
+ constructor({ ...others }) {
22
+ super(others);
23
+ }
24
+ //Info collection methods
25
+ withNewSsh(props) {
26
+ this._sshProps = props;
27
+ return this;
28
+ }
29
+ withNodePool(props) {
30
+ this._nodePoolsProps.push(props);
31
+ return this;
32
+ }
33
+ withAddon(props) {
34
+ this._addonProps = props;
35
+ return this;
36
+ }
37
+ withFeature(props) {
38
+ this._featureProps = props;
39
+ return this;
40
+ }
41
+ withAuth(props) {
42
+ this._authProps = props;
43
+ return this;
44
+ }
45
+ withTier(tier) {
46
+ this._tier = tier;
47
+ return this;
48
+ }
49
+ withNetwork(props) {
50
+ this._networkProps = props;
51
+ return this;
52
+ }
53
+ withDefaultNodePool(props) {
54
+ this._defaultNode = props;
55
+ return this;
56
+ }
57
+ import(props) {
58
+ this._importProps = props;
59
+ return this;
60
+ }
61
+ //Build Methods
62
+ buildSsh() {
63
+ this._sshInstance = (0, KeyGenetators_1.generateSsh)({
64
+ ...this.commonProps,
65
+ ...this._sshProps,
66
+ });
67
+ }
68
+ async buildAsk() {
69
+ const sshKey = this._sshInstance.lists.getPublicKey();
70
+ this._askInstance = await (0, Aks_1.default)({
71
+ ...this.commonProps,
72
+ addon: this._addonProps,
73
+ aksAccess: this._authProps,
74
+ tier: this._tier,
75
+ linux: {
76
+ adminUsername: this._sshInstance.userName,
77
+ sshKeys: [sshKey],
78
+ },
79
+ defaultNodePool: this._defaultNode,
80
+ nodePools: this._nodePoolsProps,
81
+ features: this._featureProps,
82
+ network: this._networkProps,
83
+ importUri: this._importProps?.id,
84
+ ignoreChanges: this._importProps?.ignoreChanges,
85
+ //nodeResourceGroup: getResourceGroupName(""),
86
+ });
87
+ }
88
+ async build() {
89
+ this.buildSsh();
90
+ await this.buildAsk();
91
+ return { ssh: this._sshInstance, aks: this._askInstance };
92
+ }
93
+ }
94
+ exports.default = (props) => new AksBuilder(props);
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWtzQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9CdWlsZGVyL0Frc0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FXaUI7QUFDakIseURBQWdFO0FBQ2hFLDRFQUE4RTtBQUM5RSxnQ0FRZ0I7QUFFaEIsTUFBTSxVQUNKLFNBQVEsNkJBQXdDO0lBUWhELFdBQVc7SUFDSCxZQUFZLEdBQTJCLFNBQVMsQ0FBQztJQUNqRCxZQUFZLEdBQTJCLFNBQVMsQ0FBQztJQUV6RCxPQUFPO0lBQ0MsU0FBUyxHQUFnQyxTQUFTLENBQUM7SUFDbkQsZUFBZSxHQUF1QixFQUFFLENBQUM7SUFDekMsV0FBVyxHQUE4QixTQUFTLENBQUM7SUFDbkQsYUFBYSxHQUFnQyxTQUFTLENBQUM7SUFDdkQsVUFBVSxHQUErQixTQUFTLENBQUM7SUFDbkQsS0FBSyxHQUEwQix3Q0FBcUIsQ0FBQyxJQUFJLENBQUM7SUFDMUQsYUFBYSxHQUFnQyxTQUFTLENBQUM7SUFDdkQsWUFBWSxHQUF3QyxTQUFTLENBQUM7SUFDOUQsWUFBWSxHQUErQixTQUFTLENBQUM7SUFFN0QsWUFBWSxFQUFFLEdBQUcsTUFBTSxFQUFtQjtRQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELHlCQUF5QjtJQUNsQixVQUFVLENBQUMsS0FBc0I7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQXVCO1FBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNNLFNBQVMsQ0FBQyxLQUFvQjtRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFD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
@@ -0,0 +1,3 @@
1
+ import { IVnetBuilderStart, VnetBuilderProps } from "./types";
2
+ declare const _default: (props: VnetBuilderProps) => IVnetBuilderStart;
3
+ export default _default;
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const IpAddressPrefix_1 = require("../VNet/IpAddressPrefix");
4
+ const Firewall_1 = require("../VNet/Firewall");
5
+ const Vnet_1 = require("../VNet/Vnet");
6
+ const NatGateway_1 = require("../VNet/NatGateway");
7
+ const NetworkPeering_1 = require("../VNet/NetworkPeering");
8
+ const VPNGateway_1 = require("../VNet/VPNGateway");
9
+ const types_1 = require("./types");
10
+ const Helper_1 = require("../VNet/Helper");
11
+ const Bastion_1 = require("../VNet/Bastion");
12
+ const outboundIpName = "outbound";
13
+ class VnetBuilder extends types_1.ResourcesBuilder {
14
+ /** The Props */
15
+ _subnetProps = undefined;
16
+ _vnetProps;
17
+ _firewallProps = undefined;
18
+ _bastionProps = undefined;
19
+ _natGatewayEnabled = false;
20
+ _vpnGatewayProps = undefined;
21
+ _securityRules = undefined;
22
+ _routeRules = undefined;
23
+ _peeringProps = [];
24
+ _logInfo = undefined;
25
+ _ipType = "prefix";
26
+ /** The Instances */
27
+ _ipAddressInstance = undefined;
28
+ _firewallInstance = undefined;
29
+ _vnetInstance = undefined;
30
+ _natGatewayInstance = undefined;
31
+ _vnpGatewayInstance = undefined;
32
+ constructor({ subnets, dnsServers, addressSpaces, ...commonProps }) {
33
+ super(commonProps);
34
+ this._subnetProps = subnets;
35
+ this._vnetProps = { dnsServers, addressSpaces };
36
+ }
37
+ asHub() {
38
+ return this;
39
+ }
40
+ asSpoke() {
41
+ return this;
42
+ }
43
+ withPublicIpAddress(type) {
44
+ this._ipType = type;
45
+ return this;
46
+ }
47
+ withNatGateway() {
48
+ this._natGatewayEnabled = true;
49
+ return this;
50
+ }
51
+ withVpnGateway(props) {
52
+ this._vpnGatewayProps = props;
53
+ return this;
54
+ }
55
+ withFirewall(props) {
56
+ this._firewallProps = props;
57
+ return this;
58
+ }
59
+ withBastion(props) {
60
+ this._bastionProps = props;
61
+ return this;
62
+ }
63
+ withSecurityRules(rules) {
64
+ if (!this._securityRules)
65
+ this._securityRules = rules;
66
+ else
67
+ this._securityRules.push(...rules);
68
+ return this;
69
+ }
70
+ withRouteRules(rules) {
71
+ if (!this._routeRules)
72
+ this._routeRules = rules;
73
+ else
74
+ this._routeRules.push(...rules);
75
+ return this;
76
+ }
77
+ peeringTo(props) {
78
+ this._peeringProps.push(props);
79
+ return this;
80
+ }
81
+ withLogInfo(info) {
82
+ this._logInfo = info;
83
+ return this;
84
+ }
85
+ /** Builders methods */
86
+ // private validate() {
87
+ // if (this._firewallProps) {
88
+ // if (!this._firewallProps.sku)
89
+ // this._firewallProps.sku = this._natGatewayEnabled
90
+ // ? { tier: "Basic", name: "AZFW_VNet" }
91
+ // : { tier: "Basic", name: "AZFW_VNet" };
92
+ //
93
+ // // if (this._natGatewayEnabled && this._firewallProps.sku.tier === "Basic")
94
+ // // throw new Error(
95
+ // // 'The Firewall tier "Basic" is not support Nat Gateway.',
96
+ // // );
97
+ // }
98
+ // }
99
+ buildIpAddress() {
100
+ const ipNames = [];
101
+ //No gateway and no firewall then Do nothing
102
+ if (!this._natGatewayEnabled && !this._firewallProps)
103
+ return;
104
+ //Add outbound Ipaddress for Firewall alone
105
+ if (!this._natGatewayEnabled && this._firewallProps) {
106
+ ipNames.push(outboundIpName);
107
+ }
108
+ //Create IpPrefix
109
+ this._ipAddressInstance = (0, IpAddressPrefix_1.default)({
110
+ ...this.commonProps,
111
+ ipAddresses: ipNames.map((n) => ({ name: n })),
112
+ createPrefix: this._ipType === "prefix",
113
+ config: { version: "IPv4", allocationMethod: "Static" },
114
+ });
115
+ }
116
+ buildNatGateway() {
117
+ if (!this._natGatewayEnabled || !this._ipAddressInstance)
118
+ return;
119
+ this._natGatewayInstance = (0, NatGateway_1.default)({
120
+ ...this.commonProps,
121
+ publicIpAddresses: this._ipType === "individual"
122
+ ? Object.keys(this._ipAddressInstance.addresses).map((k) => this._ipAddressInstance.addresses[k].id)
123
+ : undefined,
124
+ publicIpPrefixes: this._ipType === "prefix"
125
+ ? [this._ipAddressInstance.addressPrefix.id]
126
+ : undefined,
127
+ });
128
+ }
129
+ buildVnet() {
130
+ const subnets = this._subnetProps
131
+ ? Object.keys(this._subnetProps).map((k) => ({
132
+ name: k,
133
+ //Link all subnets to nate gateway if available without a firewall.
134
+ enableNatGateway: this._natGatewayEnabled && !Boolean(this._firewallInstance),
135
+ //However, till able to overwrite from outside.
136
+ ...this._subnetProps[k],
137
+ }))
138
+ : [];
139
+ this._vnetInstance = (0, Vnet_1.default)({
140
+ ...this.commonProps,
141
+ ...this._vnetProps,
142
+ subnets,
143
+ natGateway: this._natGatewayInstance,
144
+ features: {
145
+ //Only create Security group when firewall is not there
146
+ securityGroup: {
147
+ enabled: !this._firewallProps,
148
+ allowOutboundInternetAccess: !Boolean(this._ipAddressInstance) && !this._natGatewayEnabled,
149
+ rules: this._securityRules,
150
+ },
151
+ //Route tables
152
+ routeTable: {
153
+ enabled: this._routeRules && this._routeRules.length > 0,
154
+ rules: this._routeRules,
155
+ },
156
+ //Firewall
157
+ firewall: this._firewallProps
158
+ ? {
159
+ ...this._firewallProps.subnet,
160
+ enableNatGateway: this._natGatewayEnabled,
161
+ }
162
+ : undefined,
163
+ //Bastion
164
+ bastion: this._bastionProps
165
+ ? {
166
+ ...this._bastionProps.subnet,
167
+ }
168
+ : undefined,
169
+ //Gateway
170
+ gatewaySubnet: this._vpnGatewayProps
171
+ ? { addressPrefix: this._vpnGatewayProps.subnetSpace }
172
+ : undefined,
173
+ },
174
+ //networkPeerings: peerings,
175
+ dependsOn: this._firewallInstance?.firewall
176
+ ? this._firewallInstance?.firewall
177
+ : this._natGatewayInstance
178
+ ? this._natGatewayInstance
179
+ : undefined,
180
+ });
181
+ }
182
+ buildFirewall() {
183
+ if (!this._firewallProps)
184
+ return;
185
+ const publicIpAddress = this._ipAddressInstance?.addresses[outboundIpName];
186
+ const firewallSubnetId = this._vnetInstance?.firewallSubnet?.apply((s) => s?.id);
187
+ const manageSubnetId = this._vnetInstance?.firewallManageSubnet?.apply((s) => s?.id);
188
+ this._firewallInstance = (0, Firewall_1.default)({
189
+ ...this.commonProps,
190
+ ...this._firewallProps,
191
+ outbound: [
192
+ {
193
+ subnetId: firewallSubnetId,
194
+ //Using Force Tunneling mode if Nat gateway is enabled.
195
+ publicIpAddress: this._natGatewayEnabled
196
+ ? undefined
197
+ : publicIpAddress,
198
+ },
199
+ ],
200
+ //This is required for Force Tunneling mode
201
+ management: manageSubnetId
202
+ ? {
203
+ subnetId: manageSubnetId,
204
+ }
205
+ : undefined,
206
+ monitorConfig: this._logInfo
207
+ ? {
208
+ logWpId: this._logInfo.logWp.id,
209
+ }
210
+ : undefined,
211
+ dependsOn: this._ipAddressInstance?.addressPrefix,
212
+ });
213
+ }
214
+ buildVpnGateway() {
215
+ if (!this._vpnGatewayProps)
216
+ return;
217
+ const subnetId = this._vnetInstance.gatewaySubnet?.apply((s) => s?.id);
218
+ if (!subnetId)
219
+ return;
220
+ this._vnpGatewayInstance = (0, VPNGateway_1.default)({
221
+ ...this.commonProps,
222
+ ...this._vpnGatewayProps,
223
+ subnetId,
224
+ dependsOn: this._vnetInstance.vnet,
225
+ });
226
+ }
227
+ buildBastion() {
228
+ if (!this._bastionProps || !this._vnetInstance?.bastionSubnet)
229
+ return;
230
+ (0, Bastion_1.default)({
231
+ ...this.commonProps,
232
+ ...this._bastionProps,
233
+ subnetId: this._vnetInstance.bastionSubnet.apply((s) => s.id),
234
+ dependsOn: [this._vnetInstance.vnet],
235
+ });
236
+ }
237
+ buildPeering() {
238
+ if (!this._peeringProps || !this._vnetInstance)
239
+ return;
240
+ this._peeringProps.forEach((p) => {
241
+ let info = undefined;
242
+ if ("groupName" in p) {
243
+ info = (0, Helper_1.getVnetInfo)(p.groupName);
244
+ }
245
+ else if ("vnetId" in p) {
246
+ info = (0, Helper_1.parseVnetInfoFromId)(p.vnetId);
247
+ }
248
+ if (info)
249
+ (0, NetworkPeering_1.default)({
250
+ direction: p.direction ?? "Bidirectional",
251
+ firstVnet: {
252
+ vnetName: this._vnetInstance.vnet.name,
253
+ resourceGroupName: this.commonProps.group.resourceGroupName,
254
+ },
255
+ secondVnet: info,
256
+ });
257
+ });
258
+ }
259
+ build() {
260
+ //this.validate();
261
+ this.buildIpAddress();
262
+ this.buildNatGateway();
263
+ this.buildVnet();
264
+ this.buildFirewall();
265
+ this.buildVpnGateway();
266
+ this.buildBastion();
267
+ this.buildPeering();
268
+ return {
269
+ publicIpAddress: this._ipAddressInstance,
270
+ firewall: this._firewallInstance,
271
+ vnet: this._vnetInstance,
272
+ natGateway: this._natGatewayInstance,
273
+ //peerings: this._peeringInstances,
274
+ vnpGateway: this._vnpGatewayInstance,
275
+ };
276
+ }
277
+ }
278
+ exports.default = (props) => new VnetBuilder(props);
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVm5ldEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9WbmV0QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZEQUVpQztBQUdqQywrQ0FBNEQ7QUFDNUQsdUNBQWdEO0FBRWhELG1EQUE0QztBQUc1QywyREFBb0Q7QUFFcEQsbURBQTRDO0FBQzVDLG1DQWNpQjtBQUNqQiwyQ0FJd0I7QUFDeEIsNkNBQXNDO0FBRXRDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUVsQyxNQUFNLFdBQ0osU0FBUSx3QkFBb0M7SUFHNUMsZ0JBQWdCO0lBQ0MsWUFBWSxHQUFvQyxTQUFTLENBQUM7SUFDMUQsVUFBVSxDQUE0QjtJQUMvQyxjQUFjLEdBQXNDLFNBQVMsQ0FBQztJQUM5RCxhQUFhLEdBQXFDLFNBQVMsQ0FBQztJQUM1RCxrQkFBa0IsR0FBYSxLQUFLLENBQUM7SUFDckMsZ0JBQWdCLEdBQXdDLFNBQVMsQ0FBQztJQUNsRSxjQUFjLEdBQXlDLFNBQVMsQ0FBQztJQUNqRSxXQUFXLEdBQ2pCLFNBQVMsQ0FBQztJQUNKLGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLFFBQVEsR0FBK0IsU0FBUyxDQUFDO0lBQ2pELE9BQU8sR0FBNEIsUUFBUSxDQUFDO0lBRXBELG9CQUFvQjtJQUNaLGtCQUFrQixHQUN4QixTQUFTLENBQUM7SUFDSixpQkFBaUIsR0FBK0IsU0FBUyxDQUFDO0lBQzFELGFBQWEsR0FBMkIsU0FBUyxDQUFDO0lBQ2xELG1CQUFtQixHQUFtQyxTQUFTLENBQUM7SUFDaEUsbUJBQW1CLEdBQ3pCLFNBQVMsQ0FBQztJQUVaLFlBQVksRUFDVixPQUFPLEVBQ1AsVUFBVSxFQUNWLGFBQWEsRUFDYixHQUFHLFdBQVcsRUFDRztRQUNqQixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVB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
@@ -0,0 +1,2 @@
1
+ export { default as AksBuilder } from "./AksBuilder";
2
+ export { default as VnetBuilder } from "./VnetBuilder";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VnetBuilder = exports.AksBuilder = void 0;
4
+ var AksBuilder_1 = require("./AksBuilder");
5
+ Object.defineProperty(exports, "AksBuilder", { enumerable: true, get: function () { return AksBuilder_1.default; } });
6
+ var VnetBuilder_1 = require("./VnetBuilder");
7
+ Object.defineProperty(exports, "VnetBuilder", { enumerable: true, get: function () { return VnetBuilder_1.default; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUQ7QUFBNUMsd0dBQUEsT0FBTyxPQUFjO0FBQzlCLDZDQUF1RDtBQUE5QywwR0FBQSxPQUFPLE9BQWUifQ==
@@ -0,0 +1,120 @@
1
+ import { BasicResourceArgs, KeyVaultInfo, ResourceGroupInfo } from "../types";
2
+ import { RouteArgs, CustomSecurityRuleArgs } from "../VNet/types";
3
+ import { VnetProps, VnetResult } from "../VNet/Vnet";
4
+ import { SubnetProps } from "../VNet/Subnet";
5
+ import { Input, Resource } from "@pulumi/pulumi";
6
+ import { FirewallProps, FirewallResult } from "../VNet/Firewall";
7
+ import { VpnGatewayProps } from "../VNet/VPNGateway";
8
+ import { LogInfoResults } from "../Logs/Helpers";
9
+ import { PublicIpAddressPrefixResult } from "../VNet/IpAddressPrefix";
10
+ import * as network from "@pulumi/azure-native/network";
11
+ import { SshGenerationProps, SshResults } from "../Core/KeyGenetators";
12
+ import { AksAccessProps, AksNetworkProps, AksNodePoolProps, AksResults, AskAddonProps, AskFeatureProps, DefaultAksNodePoolProps } from "../Aks";
13
+ import * as native from "@pulumi/azure-native";
14
+ import { PeeringDirectionType } from "../VNet/NetworkPeering";
15
+ export type CommonBuilderProps = {
16
+ name: string;
17
+ group: ResourceGroupInfo;
18
+ vaultInfo: KeyVaultInfo;
19
+ dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
20
+ };
21
+ export type CommonOmit<T> = Omit<T, keyof CommonBuilderProps>;
22
+ export interface IResourcesBuilder<TResults> {
23
+ commonProps: CommonBuilderProps;
24
+ build: () => TResults;
25
+ }
26
+ export declare abstract class ResourcesBuilder<TResults> implements IResourcesBuilder<TResults> {
27
+ commonProps: CommonBuilderProps;
28
+ protected constructor(commonProps: CommonBuilderProps);
29
+ abstract build(): TResults;
30
+ }
31
+ export interface IResourcesBuilderAsync<TResults> extends Omit<IResourcesBuilder<TResults>, "build"> {
32
+ build: () => Promise<TResults>;
33
+ }
34
+ export declare abstract class ResourcesBuilderAsync<TResults> implements IResourcesBuilderAsync<TResults> {
35
+ commonProps: CommonBuilderProps;
36
+ constructor(commonProps: CommonBuilderProps);
37
+ abstract build(): Promise<TResults>;
38
+ }
39
+ export type VnetBuilderProps = CommonBuilderProps & {
40
+ subnets?: SubnetCreationProps;
41
+ } & Pick<VnetProps, "addressSpaces" | "dnsServers">;
42
+ export type SubnetCreationProps = Record<string, Omit<SubnetProps, "name">>;
43
+ export type SubnetPrefixCreationProps = {
44
+ addressPrefix: string;
45
+ };
46
+ export type BastionCreationProps = {
47
+ subnet: SubnetPrefixCreationProps;
48
+ } & Pick<BasicResourceArgs, "importUri" | "ignoreChanges">;
49
+ export type PeeringProps = {
50
+ groupName: string;
51
+ direction?: PeeringDirectionType;
52
+ } | {
53
+ vnetId: Input<string>;
54
+ direction?: PeeringDirectionType;
55
+ };
56
+ export type FirewallCreationProps = {
57
+ subnet: SubnetPrefixCreationProps & {
58
+ managementAddressPrefix: string;
59
+ };
60
+ } & CommonOmit<Omit<FirewallProps, "outbound" | "management">>;
61
+ export type VpnGatewayCreationProps = Pick<VpnGatewayProps, "sku" | "vpnClientAddressPools"> & {
62
+ subnetSpace: string;
63
+ };
64
+ export interface IVnetBuilderStart {
65
+ asHub: () => IPublicIpBuilder;
66
+ asSpoke: () => IVnetBuilder;
67
+ }
68
+ export interface IPublicIpBuilder {
69
+ withPublicIpAddress: (type: "prefix" | "individual") => IGatewayFireWallBuilder;
70
+ }
71
+ export interface IFireWallOrVnetBuilder extends IResourcesBuilder<VnetBuilderResults> {
72
+ withFirewall: (props: FirewallCreationProps) => IVnetBuilder;
73
+ }
74
+ export interface IGatewayFireWallBuilder extends IFireWallOrVnetBuilder {
75
+ withNatGateway: () => IFireWallOrVnetBuilder;
76
+ }
77
+ export interface IVnetBuilder extends IResourcesBuilder<VnetBuilderResults> {
78
+ withBastion: (props: BastionCreationProps) => IVnetBuilder;
79
+ peeringTo: (props: PeeringProps) => IVnetBuilder;
80
+ withSecurityRules: (rules: CustomSecurityRuleArgs[]) => IVnetBuilder;
81
+ withRouteRules: (rules: RouteArgs[]) => IVnetBuilder;
82
+ withLogInfo: (info: LogInfoResults) => IVnetBuilder;
83
+ withVpnGateway: (props: VpnGatewayCreationProps) => IVnetBuilder;
84
+ }
85
+ export type VnetBuilderResults = {
86
+ publicIpAddress: PublicIpAddressPrefixResult | undefined;
87
+ firewall: FirewallResult | undefined;
88
+ vnet: VnetResult;
89
+ natGateway: network.NatGateway | undefined;
90
+ vnpGateway: network.VirtualNetworkGateway | undefined;
91
+ };
92
+ export type AksBuilderProps = CommonBuilderProps & {};
93
+ export type AskBuilderResults = {
94
+ ssh: SshResults;
95
+ aks: AksResults;
96
+ };
97
+ export type SshBuilderProps = Omit<SshGenerationProps, "vaultInfo" | "name">;
98
+ export type AksImportProps = {
99
+ id: string;
100
+ ignoreChanges?: string[];
101
+ };
102
+ export interface ISshBuilder {
103
+ withNewSsh: (props: SshBuilderProps) => IAskAuthBuilder;
104
+ }
105
+ export interface IAskAuthBuilder {
106
+ withAuth: (props: AksAccessProps) => IAksNetworkBuilder;
107
+ }
108
+ export interface IAksNetworkBuilder {
109
+ withNetwork: (props: AksNetworkProps) => IAksDefaultNodePoolBuilder;
110
+ }
111
+ export interface IAksDefaultNodePoolBuilder {
112
+ withDefaultNodePool: (props: DefaultAksNodePoolProps) => IAksBuilder;
113
+ }
114
+ export interface IAksBuilder extends IResourcesBuilderAsync<AskBuilderResults> {
115
+ withNodePool: (props: AksNodePoolProps) => IAksBuilder;
116
+ withAddon: (props: AskAddonProps) => IAksBuilder;
117
+ withFeature: (props: AskFeatureProps) => IAksBuilder;
118
+ withTier: (tier: native.containerservice.ManagedClusterSKUTier) => IAksBuilder;
119
+ import: (props: AksImportProps) => IAksBuilder;
120
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResourcesBuilderAsync = exports.ResourcesBuilder = void 0;
4
+ class ResourcesBuilder {
5
+ commonProps;
6
+ constructor(commonProps) {
7
+ this.commonProps = commonProps;
8
+ }
9
+ }
10
+ exports.ResourcesBuilder = ResourcesBuilder;
11
+ class ResourcesBuilderAsync {
12
+ commonProps;
13
+ constructor(commonProps) {
14
+ this.commonProps = commonProps;
15
+ }
16
+ }
17
+ exports.ResourcesBuilderAsync = ResourcesBuilderAsync;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFzQ0EsTUFBc0IsZ0JBQWdCO0lBR1A7SUFBN0IsWUFBNkIsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0lBQUcsQ0FBQztDQUVqRTtBQUxELDRDQUtDO0FBUUQsTUFBc0IscUJBQXFCO0lBR3RCO0lBQW5CLFlBQW1CLFdBQStCO1FBQS9CLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtJQUFHLENBQUM7Q0FFdkQ7QUFMRCxzREFLQyJ9
@@ -1,4 +1,4 @@
1
- import { KeyVaultInfo } from '../types';
1
+ import { KeyVaultInfo } from "../types";
2
2
  export declare const defaultAllowedUses: string[];
3
3
  export declare const defaultCodeSignUses: string[];
4
4
  export declare const createSelfSignCertV2: ({ dnsName, commonName, organization, allowedUses, validYears, vaultInfo, }: {