@drunk-pulumi/azure-components 1.0.1 → 1.0.3

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 (104) hide show
  1. package/README.md +127 -1
  2. package/ResourceBuilder.d.ts +85 -46
  3. package/ResourceBuilder.js +147 -46
  4. package/aks/AzKubernetes.d.ts +17 -3
  5. package/aks/AzKubernetes.js +92 -43
  6. package/aks/ContainerRegistry.d.ts +4 -3
  7. package/aks/ContainerRegistry.js +22 -19
  8. package/apim/Apim.d.ts +51 -0
  9. package/apim/Apim.js +248 -0
  10. package/apim/ApimApi.d.ts +34 -0
  11. package/apim/ApimApi.js +193 -0
  12. package/apim/ApimApiSet.d.ts +27 -0
  13. package/apim/ApimApiSet.js +88 -0
  14. package/apim/ApimPolicyBuilder.d.ts +93 -0
  15. package/apim/ApimPolicyBuilder.js +294 -0
  16. package/apim/ApimProduct.d.ts +27 -0
  17. package/apim/ApimProduct.js +118 -0
  18. package/apim/index.d.ts +2 -0
  19. package/apim/index.js +19 -0
  20. package/apim/openAPI3Type.d.ts +85 -0
  21. package/apim/openAPI3Type.js +3 -0
  22. package/apim/openApiHelper.d.ts +1 -0
  23. package/apim/openApiHelper.js +36 -0
  24. package/app/SignalR.d.ts +3 -3
  25. package/app/SignalR.js +35 -20
  26. package/azAd/AppRegistration.d.ts +15 -11
  27. package/azAd/AppRegistration.js +67 -68
  28. package/azAd/AzRole.js +2 -2
  29. package/azAd/GroupRole.d.ts +7 -17
  30. package/azAd/GroupRole.js +7 -17
  31. package/azAd/RoleAssignment.d.ts +1 -1
  32. package/azAd/RoleAssignment.js +5 -5
  33. package/azAd/UserAssignedIdentity.d.ts +3 -0
  34. package/azAd/UserAssignedIdentity.js +23 -7
  35. package/azAd/helpers/index.d.ts +0 -2
  36. package/azAd/helpers/index.js +26 -22
  37. package/azAd/helpers/rolesBuiltIn.d.ts +10 -19
  38. package/azAd/helpers/rolesBuiltIn.js +25868 -18593
  39. package/azAd/helpers/rsRoleDefinition.d.ts +12 -6
  40. package/azAd/helpers/rsRoleDefinition.js +48 -32
  41. package/base/BaseComponent.d.ts +1 -15
  42. package/base/BaseComponent.js +3 -22
  43. package/base/BaseResourceComponent.d.ts +24 -17
  44. package/base/BaseResourceComponent.js +61 -45
  45. package/base/helpers.d.ts +0 -6
  46. package/base/helpers.js +1 -18
  47. package/common/RandomPassword.js +4 -4
  48. package/common/RandomString.d.ts +1 -1
  49. package/common/RandomString.js +3 -3
  50. package/common/ResourceLocker.js +2 -2
  51. package/common/RsGroup.js +2 -2
  52. package/database/AzSql.d.ts +5 -5
  53. package/database/AzSql.js +37 -24
  54. package/database/MySql.d.ts +1 -1
  55. package/database/MySql.js +45 -28
  56. package/database/Postgres.d.ts +2 -1
  57. package/database/Postgres.js +29 -17
  58. package/database/Redis.d.ts +25 -4
  59. package/database/Redis.js +88 -25
  60. package/helpers/autoTags.js +37 -3
  61. package/helpers/certHelpers.d.ts +20 -0
  62. package/helpers/certHelpers.js +85 -0
  63. package/helpers/rsHelpers.d.ts +19 -1
  64. package/helpers/rsHelpers.js +27 -4
  65. package/helpers/stackEnv.d.ts +2 -1
  66. package/helpers/stackEnv.js +10 -7
  67. package/index.d.ts +1 -0
  68. package/index.js +2 -1
  69. package/package.json +11 -7
  70. package/services/Automation.d.ts +3 -1
  71. package/services/Automation.js +8 -8
  72. package/services/ServiceBus.d.ts +3 -2
  73. package/services/ServiceBus.js +17 -19
  74. package/types.d.ts +44 -15
  75. package/vault/EncryptionKey.d.ts +1 -1
  76. package/vault/EncryptionKey.js +4 -4
  77. package/vault/KeyVault.d.ts +3 -8
  78. package/vault/KeyVault.js +4 -7
  79. package/vault/VaultSecret.d.ts +1 -1
  80. package/vault/VaultSecret.js +9 -9
  81. package/vault/VaultSecrets.d.ts +2 -4
  82. package/vault/VaultSecrets.js +4 -6
  83. package/vault/helpers.d.ts +17 -0
  84. package/vault/helpers.js +56 -3
  85. package/vm/DiskEncryptionSet.js +2 -2
  86. package/vm/VirtualMachine.d.ts +2 -1
  87. package/vm/VirtualMachine.js +37 -25
  88. package/vnet/Basion.d.ts +4 -3
  89. package/vnet/Basion.js +17 -4
  90. package/vnet/DnsZone.d.ts +1 -1
  91. package/vnet/DnsZone.js +2 -2
  92. package/vnet/IpAddresses.d.ts +6 -2
  93. package/vnet/IpAddresses.js +2 -2
  94. package/vnet/NetworkPeering.d.ts +1 -1
  95. package/vnet/NetworkPeering.js +1 -1
  96. package/vnet/PrivateDnsZone.d.ts +1 -1
  97. package/vnet/PrivateDnsZone.js +4 -4
  98. package/vnet/PrivateEndpoint.d.ts +7 -10
  99. package/vnet/PrivateEndpoint.js +11 -10
  100. package/vnet/RouteTable.d.ts +1 -1
  101. package/vnet/RouteTable.js +2 -2
  102. package/vnet/VirtualNetwork.d.ts +30 -43
  103. package/vnet/VirtualNetwork.js +77 -43
  104. package/vnet/VpnGateway.js +2 -2
package/README.md CHANGED
@@ -1 +1,127 @@
1
- # drunk-pulumi-azure-components
1
+ # Drunk Pulumi Azure Components
2
+
3
+ A modular, reusable TypeScript library of Pulumi components for rapidly building and managing Azure infrastructure. This project provides high-level abstractions for common Azure resources, enabling you to compose complex cloud environments with minimal boilerplate.
4
+
5
+ ## Features
6
+
7
+ - **Composable Components:** Build infrastructure using reusable building blocks (e.g., Resource Groups, Key Vaults, VMs, Networking, Storage, Databases, etc.).
8
+ - **Opinionated Defaults:** Sensible defaults for security, tagging, and resource configuration.
9
+ - **Extensible:** Easily extend or customize components for your organization's needs.
10
+ - **Pulumi Native:** Leverages Pulumi's TypeScript SDK for full infrastructure-as-code power.
11
+ - **Azure Best Practices:** Implements patterns for identity, encryption, logging, and networking.
12
+
13
+ ## Project Structure
14
+
15
+ ```
16
+ src/
17
+ aks/ # Azure Kubernetes Service components
18
+ app/ # App-related Azure resources (App Service, IoT Hub, etc.)
19
+ azAd/ # Azure Active Directory (roles, identities, etc.)
20
+ base/ # Base classes and helpers for components
21
+ common/ # Common utilities and resource helpers
22
+ database/ # Database resources (SQL, MySQL, Postgres, Redis)
23
+ helpers/ # Utility functions and configuration helpers
24
+ logs/ # Logging and monitoring components
25
+ services/ # Azure services (Automation, Search, Service Bus)
26
+ storage/ # Storage account components
27
+ vault/ # Key Vault and encryption helpers
28
+ vm/ # Virtual machine and disk encryption components
29
+ vnet/ # Networking (VNet, Firewall, CDN, etc.)
30
+ types.ts # Shared TypeScript types
31
+ ResourceBuilder.ts # Main builder for composing resources
32
+ ```
33
+
34
+ ## Getting Started
35
+
36
+ ### Prerequisites
37
+
38
+ - [Node.js](https://nodejs.org/) (v16+ recommended)
39
+ - [Pulumi CLI](https://www.pulumi.com/docs/get-started/install/)
40
+ - Azure account with sufficient permissions
41
+ - [pnpm](https://pnpm.io/) (or npm/yarn)
42
+
43
+ ### Installation
44
+
45
+ Clone the repository and install dependencies:
46
+
47
+ ```bash
48
+ git clone <repo-url>
49
+ cd drunk-pulumi-azure-components
50
+ pnpm install
51
+ ```
52
+
53
+ ### Set Default Config
54
+
55
+ ```
56
+ pulumi org set-default YOUR_ORG_NAME
57
+
58
+ pulumi config set azure-native:tenantId YOUR_AZ_TENANT_ID
59
+ pulumi config set azure-native:subscriptionId YOUR_AZ_SUBSCRIPTION_ID
60
+ pulumi config set azure-native:location YOUR_AZ_LOCATION
61
+ ```
62
+
63
+ ### Usage
64
+
65
+ You can use the components in your own Pulumi project or in the provided `pulumi-test/` directory for examples.
66
+
67
+ #### Example: Creating a Resource Group with Key Vault and Logging
68
+
69
+ ```typescript
70
+ import { ResourceBuilder } from '../src/ResourceBuilder';
71
+
72
+ const builder = new ResourceBuilder('my-stack', {
73
+ groupRoles: { createWithName: 'my-rg-roles' },
74
+ vault: {
75
+ /* vault config */
76
+ },
77
+ logs: {
78
+ /* logs config */
79
+ },
80
+ enableDefaultUAssignId: true,
81
+ });
82
+
83
+ export const outputs = builder.getOutputs();
84
+ ```
85
+
86
+ See `pulumi-test/samples/` for more usage examples.
87
+
88
+ ### Project Scripts
89
+
90
+ - `pnpm build` – Compile TypeScript sources
91
+ - `pnpm lint` – Run ESLint
92
+ - `pnpm test` – Run tests (if available)
93
+
94
+ ### Directory Reference
95
+
96
+ - **src/**: All core component code
97
+ - **pulumi-test/**: Example Pulumi stacks and sample usage
98
+ - **.devcontainer/**: Development container setup for VS Code
99
+
100
+ ## Component Overview
101
+
102
+ - **ResourceBuilder**: Main entry point for composing resources (resource group, roles, vault, logs, disk encryption, etc.)
103
+ - **azAd/**: Azure AD roles, group roles, user-assigned identities
104
+ - **vault/**: Key Vaults, encryption keys, secrets
105
+ - **vm/**: Virtual machines, disk encryption sets
106
+ - **vnet/**: Virtual networks, firewalls, peering, endpoints
107
+ - **logs/**: Log analytics and monitoring
108
+ - **database/**: SQL, MySQL, Postgres, Redis
109
+ - **storage/**: Storage accounts
110
+ - **app/**: App Service, IoT Hub, Logic Apps, SignalR
111
+ - **services/**: Automation, Search, Service Bus
112
+
113
+ ## Contributing
114
+
115
+ 1. Fork the repository
116
+ 2. Create a new branch (`git checkout -b feature/my-feature`)
117
+ 3. Make your changes
118
+ 4. Run tests and linting
119
+ 5. Submit a pull request
120
+
121
+ ## License
122
+
123
+ MIT License
124
+
125
+ ## Support & Contact
126
+
127
+ For questions, issues, or feature requests, please open an issue on GitHub or contact the maintainer.
@@ -1,54 +1,93 @@
1
1
  import * as pulumi from '@pulumi/pulumi';
2
- import { GroupRoleOutput } from './azAd';
3
- import { BaseComponent } from './base/BaseComponent';
4
- import { RsGroupArgs } from './common';
5
- import { LogsArgs } from './logs';
6
2
  import * as types from './types';
7
- import { KeyVaultArgs } from './vault';
8
- import { DiskEncryptionSetArgs } from './vm';
9
- type GroupRoleOutputTypes = {
10
- admin: pulumi.Output<GroupRoleOutput>;
11
- contributor: pulumi.Output<GroupRoleOutput>;
12
- readOnly: pulumi.Output<GroupRoleOutput>;
3
+ import { AppRegistration, AppRegistrationArgs, GroupRole, GroupRoleArgs, RoleAssignmentArgs, UserAssignedIdentity, UserAssignedIdentityArgs } from './azAd';
4
+ import { DiskEncryptionSet, DiskEncryptionSetArgs } from './vm';
5
+ import { KeyVault, KeyVaultArgs } from './vault';
6
+ import { Logs, LogsArgs } from './logs';
7
+ import { RsGroup, RsGroupArgs } from './common';
8
+ import { Vnet, VnetArgs } from './vnet';
9
+ import { BaseComponent } from './base/BaseComponent';
10
+ export type ResourceBuilderOutputs = {
11
+ groupRoles?: types.GroupRoleOutputTypes;
12
+ rsGroup: ReturnType<RsGroup['getOutputs']>;
13
+ vaultInfo?: ReturnType<KeyVault['getOutputs']>;
14
+ defaultUAssignedId?: ReturnType<UserAssignedIdentity['getOutputs']>;
15
+ defaultAppIdentity?: ReturnType<AppRegistration['getOutputs']>;
16
+ logs?: ReturnType<Logs['getOutputs']>;
17
+ diskEncryptionSet?: ReturnType<DiskEncryptionSet['getOutputs']>;
18
+ vnet?: ReturnType<Vnet['getOutputs']>;
13
19
  };
14
- type CommonProps = 'rsGroup' | 'groupRoles' | 'vaultInfo' | 'resourceGroupName';
15
- export interface ResourceBuilderArgs extends Omit<RsGroupArgs, CommonProps> {
16
- groupRoles?: {
17
- createWithName?: string;
18
- } | GroupRoleOutputTypes;
19
- vault?: Omit<KeyVaultArgs, CommonProps>;
20
- logs?: Omit<LogsArgs, CommonProps>;
21
- diskEncryption?: Omit<DiskEncryptionSetArgs, CommonProps>;
22
- enableDefaultUAssignId?: boolean;
20
+ /**
21
+ * Arguments for composing a standard Azure resource group environment with optional common foundation resources.
22
+ *
23
+ * You always pass the base `RsGroupArgs` (minus common meta props removed via `Omit`).
24
+ * Each optional `*Create` property triggers creation of that resource. If both an existing instance reference
25
+ * (e.g. `groupRoles`) and a corresponding `*Create` block are provided, the existing instance takes precedence
26
+ * and the `*Create` block is ignored.
27
+ */
28
+ export interface ResourceBuilderArgs extends Omit<RsGroupArgs, types.CommonProps> {
29
+ /**
30
+ * Pre-created group role outputs or the `GroupRole` component itself to reuse instead of creating new ones.
31
+ * When supplied, `groupRolesCreate` is ignored.
32
+ */
33
+ groupRoles?: types.GroupRoleOutputTypes | GroupRole;
34
+ /**
35
+ * Definition to create a new set of Azure AD groups / roles (reader, contributor, etc.).
36
+ * Provide when you want the builder to provision standard role groups automatically.
37
+ */
38
+ groupRolesCreate?: types.WithName & GroupRoleArgs;
39
+ vaultInfo?: types.ResourceInputs;
40
+ /**
41
+ * Configuration to create a Key Vault in the resource group. Adds linkage with created identities and group roles.
42
+ */
43
+ vaultCreate?: types.WithName & Omit<KeyVaultArgs, types.CommonProps>;
44
+ /**
45
+ * Configuration to create a Log Analytics workspace (and related diagnostics) bound to the resource group.
46
+ */
47
+ logsCreate?: types.WithName & Omit<LogsArgs, types.CommonProps>;
48
+ /**
49
+ * Configuration for provisioning a Disk Encryption Set (defaults encryptionType if omitted).
50
+ * Depends on Key Vault (if also created) and optionally the default user-assigned identity.
51
+ */
52
+ diskEncryptionCreate?: types.WithName & Omit<DiskEncryptionSetArgs, types.CommonProps>;
53
+ /**
54
+ * Create a default User Assigned Managed Identity. `memberof` selects which generated group role (defaults to 'readOnly').
55
+ * If `groupRoles` / `groupRolesCreate` not provided, the identity will not have group memberships applied.
56
+ */
57
+ defaultUAssignedIdCreate?: types.WithName & Omit<UserAssignedIdentityArgs, types.CommonProps | 'memberof'> & {
58
+ /** Which group role key to map the identity into (e.g. 'readOnly', 'contributor'). */
59
+ memberof?: types.GroupRoleTypes;
60
+ };
61
+ /**
62
+ * Create a default App Registration + Service Principal. `memberof` optionally assigns it a role group (defaults 'readOnly').
63
+ * Vault info (if created) is passed for secret references.
64
+ */
65
+ defaultAppIdentityCreate?: types.WithName & Omit<AppRegistrationArgs, types.CommonProps | 'memberof'> & {
66
+ /** Which group role key to map the app into. */
67
+ memberof?: types.GroupRoleTypes;
68
+ };
69
+ /**
70
+ * Configuration to create a Virtual Network with sub-resources (subnets, NSGs, etc. per `VnetArgs`).
71
+ */
72
+ vnetCreate?: types.WithName & Omit<VnetArgs, types.CommonProps>;
23
73
  }
24
74
  export declare class ResourceBuilder extends BaseComponent<ResourceBuilderArgs> {
25
- readonly rsGroup: types.ResourceGroupOutputs;
75
+ readonly rsGroup: RsGroup;
26
76
  readonly vaultInfo?: types.ResourceOutputs;
27
- readonly groupRoles?: GroupRoleOutputTypes;
28
- readonly defaultUAssignedId?: types.UserAssignedIdentityOutputs;
29
- readonly logs?: types.LogsOutputs;
30
- readonly diskEncryptionSet?: types.ResourceOutputs;
77
+ readonly groupRoles?: types.GroupRoleOutputTypes;
78
+ readonly defaultUAssignedId?: UserAssignedIdentity;
79
+ readonly defaultAppIdentity?: AppRegistration;
80
+ readonly logs?: Logs;
81
+ private readonly diskEncryptionSet?;
82
+ private readonly vnet;
31
83
  constructor(name: string, args: ResourceBuilderArgs, opts?: pulumi.ComponentResourceOptions);
32
- getOutputs(): {
33
- groupRoles: GroupRoleOutputTypes | undefined;
34
- rsGroup: {
35
- resourceGroupName: pulumi.Output<string>;
36
- location?: pulumi.Output<string> | undefined;
37
- };
38
- vaultInfo: {
39
- resourceName: pulumi.Output<string>;
40
- id: pulumi.Output<string>;
41
- } | undefined;
42
- defaultUAssignedId: {
43
- id: pulumi.Output<string>;
44
- clientId: pulumi.Output<string>;
45
- principalId: pulumi.Output<string>;
46
- } | undefined;
47
- logs: types.LogsOutputs | undefined;
48
- diskEncryptionSet: {
49
- resourceName: pulumi.Output<string>;
50
- id: pulumi.Output<string>;
51
- } | undefined;
52
- };
84
+ getOutputs(): ResourceBuilderOutputs;
85
+ private createGroupRoles;
86
+ private createVault;
87
+ private createUserIdentity;
88
+ private createAppIdentity;
89
+ private createLogs;
90
+ private createDiskEncryptionSet;
91
+ private createVnet;
92
+ grant(props: Omit<RoleAssignmentArgs, 'scope'>): this;
53
93
  }
54
- export {};
@@ -1,71 +1,172 @@
1
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
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.ResourceBuilder = void 0;
37
+ const pulumi = __importStar(require("@pulumi/pulumi"));
4
38
  const azAd_1 = require("./azAd");
39
+ const vm_1 = require("./vm");
40
+ const vault_1 = require("./vault");
41
+ const logs_1 = require("./logs");
42
+ const common_1 = require("./common");
43
+ const vnet_1 = require("./vnet");
5
44
  const BaseComponent_1 = require("./base/BaseComponent");
6
45
  const helpers_1 = require("./base/helpers");
7
- const common_1 = require("./common");
8
- const logs_1 = require("./logs");
9
- const vault_1 = require("./vault");
10
- const vm_1 = require("./vm");
46
+ const helpers_2 = require("./helpers");
11
47
  class ResourceBuilder extends BaseComponent_1.BaseComponent {
12
48
  rsGroup;
13
49
  vaultInfo;
14
50
  groupRoles;
15
51
  defaultUAssignedId;
52
+ defaultAppIdentity;
16
53
  logs;
17
54
  diskEncryptionSet;
55
+ vnet;
18
56
  constructor(name, args, opts) {
19
57
  super((0, helpers_1.getComponentResourceType)('ResourceBuilder'), name, args, opts);
20
- const { groupRoles, vault, enableDefaultUAssignId, logs, diskEncryption, ...props } = args;
21
- if (groupRoles) {
22
- if ('createWithName' in groupRoles) {
23
- this.groupRoles = new azAd_1.GroupRole(groupRoles.createWithName, {}, { dependsOn: opts?.dependsOn, parent: this }).getOutputs();
24
- }
25
- else
26
- this.groupRoles = groupRoles;
27
- }
28
- const group = new common_1.RsGroup(name, { ...props, groupRoles: this.groupRoles }, { dependsOn: opts?.dependsOn, parent: this });
29
- this.rsGroup = group.getOutputs();
30
- if (vault) {
31
- this.vaultInfo = new vault_1.KeyVault(name, { ...vault, rsGroup: this.rsGroup, groupRoles: this.groupRoles }, { dependsOn: group, parent: this }).getOutputs();
32
- }
33
- if (enableDefaultUAssignId) {
34
- this.defaultUAssignedId = new azAd_1.UserAssignedIdentity(name, {
35
- rsGroup: this.rsGroup,
36
- vaultInfo: this.vaultInfo,
37
- memberof: this.groupRoles ? [this.groupRoles.readOnly] : undefined,
38
- }, { dependsOn: group, parent: this }).getOutputs();
39
- }
40
- if (logs) {
41
- this.logs = new logs_1.Logs(name, {
42
- ...logs,
43
- rsGroup: this.rsGroup,
44
- vaultInfo: this.vaultInfo,
45
- groupRoles: this.groupRoles,
46
- }, { dependsOn: group, parent: this }).getOutputs();
47
- }
48
- if (diskEncryption) {
49
- this.diskEncryptionSet = new vm_1.DiskEncryptionSet(name, {
50
- ...diskEncryption,
51
- rsGroup: this.rsGroup,
52
- encryptionType: 'EncryptionAtRestWithPlatformAndCustomerKeys',
53
- defaultUAssignedId: this.defaultUAssignedId,
54
- vaultInfo: this.vaultInfo,
55
- groupRoles: this.groupRoles,
56
- }, { dependsOn: group, parent: this }).getOutputs();
57
- }
58
+ const { groupRolesCreate, groupRoles, vaultCreate, defaultUAssignedIdCreate, logsCreate, diskEncryptionCreate, ...props } = args;
59
+ this.groupRoles = this.createGroupRoles();
60
+ this.rsGroup = new common_1.RsGroup(name, { ...props, groupRoles: this.groupRoles }, { dependsOn: opts?.dependsOn, parent: this });
61
+ this.vaultInfo = this.createVault();
62
+ this.defaultUAssignedId = this.createUserIdentity();
63
+ this.defaultAppIdentity = this.createAppIdentity();
64
+ this.logs = this.createLogs();
65
+ this.diskEncryptionSet = this.createDiskEncryptionSet();
66
+ this.vnet = this.createVnet();
67
+ this.registerOutputs();
58
68
  }
59
69
  getOutputs() {
60
70
  return {
61
71
  groupRoles: this.groupRoles,
72
+ rsGroup: this.rsGroup.getOutputs(),
73
+ vaultInfo: this.vaultInfo,
74
+ defaultUAssignedId: this.defaultUAssignedId?.getOutputs(),
75
+ defaultAppIdentity: this.defaultAppIdentity?.getOutputs(),
76
+ logs: this.logs?.getOutputs(),
77
+ diskEncryptionSet: this.diskEncryptionSet?.getOutputs(),
78
+ vnet: this.vnet?.getOutputs(),
79
+ };
80
+ }
81
+ createGroupRoles() {
82
+ const { groupRoles, groupRolesCreate } = this.args;
83
+ if (groupRoles) {
84
+ return groupRoles instanceof azAd_1.GroupRole ? groupRoles.getOutputs() : groupRoles;
85
+ }
86
+ if (groupRolesCreate) {
87
+ return new azAd_1.GroupRole(groupRolesCreate.name ?? this.name, groupRolesCreate, {
88
+ dependsOn: this.opts?.dependsOn,
89
+ parent: this,
90
+ }).getOutputs();
91
+ }
92
+ }
93
+ createVault() {
94
+ const { vaultInfo, vaultCreate } = this.args;
95
+ if (vaultInfo)
96
+ return { resourceName: pulumi.output(vaultInfo.resourceName), id: pulumi.output(vaultInfo.id) };
97
+ if (!vaultCreate)
98
+ return undefined;
99
+ return new vault_1.KeyVault(vaultCreate.name ?? this.name, { ...vaultCreate, rsGroup: this.rsGroup, groupRoles: this.groupRoles }, {
100
+ dependsOn: this.rsGroup,
101
+ parent: this,
102
+ }).getOutputs();
103
+ }
104
+ createUserIdentity() {
105
+ const { defaultUAssignedIdCreate } = this.args;
106
+ if (!defaultUAssignedIdCreate)
107
+ return undefined;
108
+ return new azAd_1.UserAssignedIdentity(defaultUAssignedIdCreate.name ?? this.name, {
109
+ ...defaultUAssignedIdCreate,
110
+ rsGroup: this.rsGroup,
111
+ vaultInfo: this.vaultInfo,
112
+ memberof: this.groupRoles ? [this.groupRoles[defaultUAssignedIdCreate.memberof ?? 'readOnly']] : undefined,
113
+ }, {
114
+ dependsOn: this.rsGroup,
115
+ parent: this,
116
+ });
117
+ }
118
+ createAppIdentity() {
119
+ const { defaultAppIdentityCreate } = this.args;
120
+ if (!defaultAppIdentityCreate)
121
+ return undefined;
122
+ return new azAd_1.AppRegistration(defaultAppIdentityCreate.name ?? this.name, {
123
+ ...defaultAppIdentityCreate,
124
+ memberof: this.groupRoles ? [this.groupRoles[defaultAppIdentityCreate.memberof ?? 'readOnly']] : undefined,
125
+ vaultInfo: this.vaultInfo,
126
+ }, {
127
+ dependsOn: this.rsGroup,
128
+ parent: this,
129
+ });
130
+ }
131
+ createLogs() {
132
+ const { logsCreate } = this.args;
133
+ if (!logsCreate)
134
+ return undefined;
135
+ return new logs_1.Logs(logsCreate.name ?? this.name, {
136
+ ...logsCreate,
62
137
  rsGroup: this.rsGroup,
63
138
  vaultInfo: this.vaultInfo,
139
+ groupRoles: this.groupRoles,
140
+ }, { dependsOn: this.rsGroup, parent: this });
141
+ }
142
+ createDiskEncryptionSet() {
143
+ const { diskEncryptionCreate } = this.args;
144
+ if (!diskEncryptionCreate)
145
+ return undefined;
146
+ return new vm_1.DiskEncryptionSet(diskEncryptionCreate.name ?? this.name, {
147
+ ...diskEncryptionCreate,
148
+ encryptionType: diskEncryptionCreate.encryptionType ?? 'EncryptionAtRestWithPlatformAndCustomerKeys',
149
+ rsGroup: this.rsGroup,
64
150
  defaultUAssignedId: this.defaultUAssignedId,
65
- logs: this.logs,
66
- diskEncryptionSet: this.diskEncryptionSet,
67
- };
151
+ vaultInfo: this.vaultInfo,
152
+ groupRoles: this.groupRoles,
153
+ }, { dependsOn: this.rsGroup, parent: this });
154
+ }
155
+ createVnet() {
156
+ const { vnetCreate } = this.args;
157
+ if (!vnetCreate)
158
+ return undefined;
159
+ return new vnet_1.Vnet(vnetCreate.name ?? this.name, {
160
+ ...vnetCreate,
161
+ rsGroup: this.rsGroup,
162
+ groupRoles: this.groupRoles,
163
+ vaultInfo: this.vaultInfo,
164
+ }, { dependsOn: this.rsGroup, parent: this });
165
+ }
166
+ grant(props) {
167
+ new azAd_1.RoleAssignment(`${this.name}-${props.roleName}`, { ...props, scope: helpers_2.rsHelpers.getRsGroupIdFrom(this.rsGroup) }, { dependsOn: this, deletedWith: this, parent: this });
168
+ return this;
68
169
  }
69
170
  }
70
171
  exports.ResourceBuilder = ResourceBuilder;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Jlc291cmNlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBMEU7QUFDMUUsd0RBQXFEO0FBQ3JELDRDQUEwRDtBQUMxRCxxQ0FBZ0Q7QUFDaEQsaUNBQXdDO0FBRXhDLG1DQUFpRDtBQUNqRCw2QkFBZ0U7QUFrQmhFLE1BQWEsZUFBZ0IsU0FBUSw2QkFBa0M7SUFDckQsT0FBTyxDQUE2QjtJQUNwQyxTQUFTLENBQXlCO0lBQ2xDLFVBQVUsQ0FBd0I7SUFDbEMsa0JBQWtCLENBQXFDO0lBQ3ZELElBQUksQ0FBcUI7SUFDekIsaUJBQWlCLENBQXlCO0lBRTFELFlBQVksSUFBWSxFQUFFLElBQXlCLEVBQUUsSUFBc0M7UUFDekYsS0FBSyxDQUFDLElBQUEsa0NBQXdCLEVBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFM0YsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksZ0JBQWdCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBUyxDQUM3QixVQUFVLENBQUMsY0FBYyxFQUN6QixFQUFFLEVBQ0YsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzdDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakIsQ0FBQzs7Z0JBQU0sSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFrQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLGdCQUFPLENBQ3ZCLElBQUksRUFDSixFQUFF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
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Jlc291cmNlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBeUM7QUFHekMsaUNBU2dCO0FBQ2hCLDZCQUFnRTtBQUNoRSxtQ0FBaUQ7QUFDakQsaUNBQXdDO0FBQ3hDLHFDQUFnRDtBQUNoRCxpQ0FBd0M7QUFFeEMsd0RBQXFEO0FBQ3JELDRDQUEwRDtBQUMxRCx1Q0FBc0M7QUE2RXRDLE1BQWEsZUFBZ0IsU0FBUSw2QkFBa0M7SUFDckQsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsQ0FBeUI7SUFDbEMsVUFBVSxDQUE4QjtJQUN4QyxrQkFBa0IsQ0FBd0I7SUFDMUMsa0JBQWtCLENBQW1CO0lBQ3JDLElBQUksQ0FBUTtJQUNYLGlCQUFpQixDQUFxQjtJQUN0QyxJQUFJLENBQW1CO0lBRXhDLFlBQVksSUFBWSxFQUFFLElBQXlCLEVBQUUsSUFBc0M7UUFDekYsS0FBSyxDQUFDLElBQUEsa0NBQXdCLEVBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sRUFDSixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixHQUFHLEtBQUssRUFDVCxHQUFHLElBQUksQ0FBQztRQUVULElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGdCQUFPLENBQ3hCLElBQUksRUFDSixFQUFFLEdBQUcsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ3pDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElB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
@@ -3,11 +3,15 @@ import * as inputs from '@pulumi/azure-native/types/input';
3
3
  import * as pulumi from '@pulumi/pulumi';
4
4
  import { BaseResourceComponent, CommonBaseArgs } from '../base';
5
5
  import * as types from '../types';
6
- export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEnabler, types.WithGroupRolesArgs, types.WithUserAssignedIdentity, Pick<ccs.ManagedClusterArgs, 'dnsPrefix' | 'supportPlan' | 'autoScalerProfile' | 'autoUpgradeProfile' | 'disableLocalAccounts' | 'storageProfile'> {
6
+ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEnabler, types.WithGroupRolesArgs, types.WithUserAssignedIdentity, types.WithDiskEncryptSet, Partial<Pick<ccs.ManagedClusterArgs, 'dnsPrefix' | 'supportPlan' | 'autoScalerProfile' | 'autoUpgradeProfile' | 'storageProfile'>> {
7
7
  sku: ccs.ManagedClusterSKUTier;
8
+ nodeResourceGroup?: pulumi.Input<string>;
9
+ namespaces?: Record<string, ccs.NamespaceArgs['properties']>;
8
10
  agentPoolProfiles: pulumi.Input<inputs.containerservice.ManagedClusterAgentPoolProfileArgs & {
9
11
  vmSize: pulumi.Input<string>;
10
12
  vnetSubnetID: pulumi.Input<string>;
13
+ enableEncryptionAtHost: pulumi.Input<boolean>;
14
+ osDiskSizeGB: pulumi.Input<number>;
11
15
  }>[];
12
16
  attachToAcr?: types.ResourceInputs;
13
17
  features: {
@@ -15,7 +19,6 @@ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEn
15
19
  enablePrivateClusterPublicFQDN?: boolean;
16
20
  enableVerticalPodAutoscaler?: boolean;
17
21
  /** KEDA (Kubernetes Event-driven Autoscaling) settings for the workload auto-scaler profile. */
18
- enableKeda?: boolean;
19
22
  enableWorkloadIdentity?: boolean;
20
23
  enablePodIdentity?: boolean;
21
24
  };
@@ -40,16 +43,27 @@ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEn
40
43
  export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs> {
41
44
  readonly id: pulumi.Output<string>;
42
45
  readonly resourceName: pulumi.Output<string>;
46
+ readonly namespaces: Record<string, types.ResourceOutputs>;
47
+ readonly privateDnsZone: types.ResourceOutputs | undefined;
43
48
  constructor(name: string, args: AzKubernetesArgs, opts?: pulumi.ComponentResourceOptions);
44
49
  getOutputs(): {
45
50
  id: pulumi.Output<string>;
46
51
  resourceName: pulumi.Output<string>;
52
+ namespaces: Record<string, {
53
+ resourceName: pulumi.Output<string>;
54
+ id: pulumi.Output<string>;
55
+ }>;
56
+ privateDnsZone: {
57
+ resourceName: pulumi.Output<string>;
58
+ id: pulumi.Output<string>;
59
+ } | undefined;
47
60
  };
48
61
  private createIdentity;
49
62
  private createUserNameAndSshKeys;
50
63
  private createDiskEncryptionSet;
51
64
  private createCluster;
65
+ private createNameSpaces;
52
66
  private createMaintenance;
53
67
  private assignPermission;
54
- private addAksCredentialToVault;
68
+ private getPrivateDNSZone;
55
69
  }